using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;
using System.Web;
using Seven.Front.Business;
using Seven.Front.Globals;
using Seven.Front.Objects;
using Seven.Front.Printing;

namespace Seven.Front
{
    [ServiceContract(Namespace = "SevenIPMWS")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Maestro
    {
        #region Seguridad

        [WebGet]
        [OperationContract]
        public string GetDatosCombo(int IdJuego, string LangCode)
        {
            try
            {
                return HTMLSelects.Datos(IdJuego);
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region EXTERNAL Log Sheet

        [WebGet]
        [OperationContract]
        public string GetLogSheet(string Inicio, string Final, int Pagina, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);
                    DateTime S = DateTime.Today;
                    try
                    {
                        //S = DateParser.GetDate(Inicio);
                        S = DateTime.Parse(Inicio, ciLocal);
                    }
                    catch (Exception) { }
                    DateTime F = DateTime.Today;
                    try
                    {
                        //F = DateParser.GetDate(Final);
                        F = DateTime.Parse(Final, ciLocal);
                    }
                    catch (Exception) { }
                    return Tablas.LogSheet(S, F, Pagina, iden)
                        .Replace("Página", L.LBL("LblGENPage"))
                        .Replace("LblGENDate", L.LBL("LblGENDate"))
                        .Replace("LblGENObservations", L.LBL("LblGENObservations"))
                        .Replace("LblGENPermit", L.LBL("LblGENPermit"));
                }
                else
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);
                    throw new Exception(L.ERR("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\">" + L.LBL("LblGENWrongQuery") + "</br> " + Memoria.Error + "\n" + ex.Message + Inicio + "F" + Final + Pagina + "</p>";
            }
        }

        #endregion

        #region Sistema

        [WebGet]
        [OperationContract]
        public string GetAccordionForm(string U, string N, string D, string I, string LangCode, int SubDir)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);

                    string Dir = "src=\"";

                    if (SubDir == 1)
                    {
                        Dir = "src=\"../";
                    }

                    return ("<div id=\"SevenMenu\">\n" +
                                Logica.GetAccordion(1, iden.U, LangCode, iden).Replace("$HAYOPCIONES$", "") +
                            "</div>\n" +
                            "<table width=\"100%\">\n" +
                                "<tr>\n" +
                                    "<td width=\"50%\">\n" +
                                        "<button type=\"submit\" style=\"width: 100%;\">" +
                                            "<table>" +
                                                "<tr>" +
                                                    "<td><img src=\"img/disk.png\" /></td>" +
                                                    "<td><span style=\"font-size: 8pt;\">LblGENSave</span></td>" +
                                                "</tr>" +
                                            "</table>" +
                                        "</button>" +
                                    "</td>\n" +
                                    "<td width=\"50%\">\n" +
                                        "<button type=\"button\" onclick=\"mostrarAjaxAccordion();\" style=\"width: 100%;\">" +
                                            "<table>" +
                                                "<tr>" +
                                                    "<td><img src=\"img/arrow-return-180-left.png\" /></td>" +
                                                    "<td><span style=\"font-size: 8pt;\">LblGENCancel</span></td>" +
                                                "</tr>" +
                                            "</table>" +
                                        "</button>" +
                                    "</td>\n" +
                                "</tr>\n" +
                            "</table>\n")
                            .Replace("LblGENSave", L.LBL("LblGENSave"))
                            .Replace("LblGENCancel", L.LBL("LblGENCancel"))
                            .Replace("src=\"", Dir);
                }
                else
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);
                    throw new Exception(L.ERR("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetAccordion(string U, string N, string D, string I, string LangCode, int SubDir)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);

                    string Dir = "src=\"";

                    if (SubDir == 1)
                    {
                        Dir = "src=\"../";
                    }

                    return ("<div id=\"SevenMenu\">\n" +
                                Logica.GetAccordion(0, 0, LangCode, iden).Replace("$HAYOPCIONES$", "") +
                            "</div>\n" +
                            "<button type=\"button\" onclick=\"mostrarAjaxAccordionUser();\" style=\"width: 100%;\">" +
                                "<table>" +
                                    "<tr>" +
                                        "<td><img src=\"img/user.png\" /></td>" +
                                        "<td><span style=\"font-size: 8pt;\">LblGENCustomizeMyMenu</span></td>" +
                                    "</tr>" +
                                "</table>" +
                            "</button>")
                            .Replace("LblGENCustomizeMyMenu", L.LBL("LblGENCustomizeMyMenu"))
                            .Replace("src=\"", Dir);
                }
                else
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);
                    throw new Exception(L.ERR("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetMenu(string U, string N, string D, string I, string LangCode, int SubDir)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);

                    //string Dir = "src=\"";

                    //if (SubDir == 1)
                    //{
                    //    Dir = "src=\"../";
                    //}

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetMenu(0, 0, LangCode, iden));
                    //$("#MenuP ul").append('<li><a href="#tabs-' + i + '"><img src="img/' + datos.rows[i].cell[1] + '" />' + datos.rows[i].cell[2] + '</a></li>');

                    //return ("<div id=\"SevenMenu\">\n" +
                    //            Logica.GetAccordion(0, 0, LangCode, iden).Replace("$HAYOPCIONES$", "") +
                    //        "</div>\n" +
                    //        "<button type=\"button\" onclick=\"mostrarAjaxAccordionUser();\" style=\"width: 100%;\">" +
                    //            "<table>" +
                    //                "<tr>" +
                    //                    "<td><img src=\"img/user.png\" /></td>" +
                    //                    "<td><span style=\"font-size: 8pt;\">LblGENCustomizeMyMenu</span></td>" +
                    //                "</tr>" +
                    //            "</table>" +
                    //        "</button>")
                    //        .Replace("LblGENCustomizeMyMenu", L.LBL("LblGENCustomizeMyMenu"))
                    //        .Replace("src=\"", Dir);
                }
                else
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);
                    throw new Exception(L.ERR("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetMenuP(string U, string N, string D, string I, string LangCode, int SubDir)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);

                    //string Dir = "src=\"";

                    //if (SubDir == 1)
                    //{
                    //    Dir = "src=\"../";
                    //}

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetMenu(1, iden.U, LangCode, iden));
                    //$("#MenuP ul").append('<li><a href="#tabs-' + i + '"><img src="img/' + datos.rows[i].cell[1] + '" />' + datos.rows[i].cell[2] + '</a></li>');

                    //return ("<div id=\"SevenMenu\">\n" +
                    //            Logica.GetAccordion(0, 0, LangCode, iden).Replace("$HAYOPCIONES$", "") +
                    //        "</div>\n" +
                    //        "<button type=\"button\" onclick=\"mostrarAjaxAccordionUser();\" style=\"width: 100%;\">" +
                    //            "<table>" +
                    //                "<tr>" +
                    //                    "<td><img src=\"img/user.png\" /></td>" +
                    //                    "<td><span style=\"font-size: 8pt;\">LblGENCustomizeMyMenu</span></td>" +
                    //                "</tr>" +
                    //            "</table>" +
                    //        "</button>")
                    //        .Replace("LblGENCustomizeMyMenu", L.LBL("LblGENCustomizeMyMenu"))
                    //        .Replace("src=\"", Dir);
                }
                else
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);
                    throw new Exception(L.ERR("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Configuración del Usuario

        [WebGet]
        [OperationContract]
        public string PutConfiguracionUsuario(string IdOperador, string factura, string alertar_sobreventa, string calcular_sobreventa_cupos
            , string permitir_sobreventa, string permitir_doblepreasignacion, string impresora, string impresora_cheq, string impresora_fact, string impresora_rec
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    ConfigUsuario elemento = new ConfigUsuario();
                    elemento.IdOperador = iden.U;
                    try
                    {
                        elemento.factura = int.Parse(factura) == 1 ? true : false;
                    }
                    catch
                    {
                        elemento.factura = false;
                    }
                    try
                    {
                        elemento.alertar_sobreventa = int.Parse(alertar_sobreventa) == 1 ? true : false;
                    }
                    catch
                    {
                        elemento.alertar_sobreventa = false;
                    }
                    try
                    {
                        elemento.calcular_sobreventa_cupos = int.Parse(calcular_sobreventa_cupos) == 1 ? true : false;
                    }
                    catch
                    {
                        elemento.calcular_sobreventa_cupos = false;
                    }
                    try
                    {
                        elemento.permitir_sobreventa = int.Parse(permitir_sobreventa) == 1 ? true : false;
                    }
                    catch
                    {
                        elemento.permitir_sobreventa = false;
                    }
                    //try
                    //{
                    //    elemento.permitir_doblepreasignacion = int.Parse(permitir_doblepreasignacion) == 1 ? true : false;
                    //}
                    //catch
                    //{
                    //    elemento.permitir_doblepreasignacion = false;
                    //}
                    elemento.permitir_doblepreasignacion = false;
                    elemento.impresora = impresora;
                    elemento.impresora_cheq = impresora_cheq;
                    elemento.impresora_fact = impresora_fact;
                    elemento.impresora_rec = impresora_rec;

                    int res = -1;

                    res = Logica.PutConfiguracionUsuario(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Tarifas (Contratos)

        [WebGet]
        [OperationContract]
        public string FindTarifas(string contrato, string desc_cont, string rooming, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.FindTarifas(contrato, desc_cont, int.Parse(rooming) == 1 ? true : false, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Vuelos

        [WebGet]
        [OperationContract]
        public string GetVuelos(string Eliminado, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    Vuelo elemento = new Vuelo();
                    elemento.id_vuel = 0;

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetVuelos(elemento, Eliminados, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutVuelos(string id_vuel, string vuelo, string llegada, string lugar, string hora, string dia_sem, string aeropuerto, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    Vuelo elemento = new Vuelo();
                    try
                    {
                        elemento.id_vuel = short.Parse(id_vuel);
                    }
                    catch
                    {
                        elemento.id_vuel = 0;
                    }
                    elemento.vuelo = vuelo;
                    elemento.llegada = bool.Parse(llegada);
                    elemento.lugar = lugar;
                    elemento.hora = hora;
                    elemento.dia_sem = dia_sem;
                    elemento.aeropuerto = aeropuerto;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutVuelos(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Servicios de Facturación

        [WebGet]
        [OperationContract]
        public string GetServFactXMonedaCombo(string id_mone, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridCombo(HTMLSelects.ServFactXMonedaComboJQGrid(int.Parse(id_mone), "", 0, 0, iden)).Replace("value:", "");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetServFactXMonedaComboOptions(string id_mone, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return HTMLSelects.ServFactXMonedaOptions(int.Parse(id_mone), "", 0, 0, iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Tipos de Cobro

        [WebGet]
        [OperationContract]
        public string GetTipoCobrosHidden(string Modo, string id_mone, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Hiddens.TipoCobros(int.Parse(Modo), int.Parse(id_mone), iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetTipoCobrosComboOptions(string Modo, string id_mone, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return HTMLSelects.TipoCobrosComboOptions(int.Parse(Modo), int.Parse(id_mone), "", 0, 0, iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetTipoCobrosComboJQGrid(string Modo, string id_mone, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return jqGridGenie.DataTableToJQGridCombo(HTMLSelects.TipoCobrosComboJQGrid(int.Parse(Modo), int.Parse(id_mone), iden)).Replace("value:", "");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetTipoCobrosCodigoJQGrid(string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DataTable dt = Logica.GetTipoCobrosCombo(0, 0, iden);
                    DataTable dt2 = new DataTable();
                    dt2.Columns.Add(new DataColumn("cod_tcob"));
                    foreach (DataRow dr in dt.Rows)
                    {
                        DataRow dr2 = dt2.NewRow();
                        dr2["cod_tcob"] = dr["cod_tcob"].ToString().Trim();
                        dt2.Rows.Add(dr2);
                    }
                    return jqGridGenie.DataTableToJQGridJSON(dt2);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Operaciones sobre Habitaciones - Consultas Base

        [WebGet]
        [OperationContract]
        public string GetOHPrecioImpuestos(string id_face, string id_cont, string id_uhab, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    try
                    {
                        float PrecioImp = Logica.GetOHPrecioImpuestos(int.Parse(id_face), int.Parse(id_cont), int.Parse(id_uhab), iden);
                        try
                        {
                            return int.Parse(id_face) > 0 ? String.Format("{0:N2}", PrecioImp) : PrecioImp.ToString();
                        }
                        catch
                        {
                            return int.Parse(id_face) > 0 ? String.Format("{0:N2}", 0) : "0";
                        }
                    }
                    catch
                    {
                        return String.Format("{0:N2}", 0);
                    }
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOHUsosHabXHabCombo(string id_habi, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return HTMLSelects.OHUsosHabXHabCombo(int.Parse(id_habi), "", 0, 180, iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOHAdosadaCombo(string id_face, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return HTMLSelects.OHAdosadaComboOptions(int.Parse(id_face), "", 0, 180, iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOHHabitacionesCombo(string Modo, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return HTMLSelects.OHHabitacionesCombo(int.Parse(Modo), "", 0, 180, iden).Replace("LblFDKSucia", L.LBL("LblFDKSucia"));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOHHabitacionesHidden(string Modo, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Hiddens.OHHabitaciones(int.Parse(Modo), iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOHEmpresasXTarifa(string id_cont, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Hiddens.EmpresasXTarifa(int.Parse(id_cont), iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOHRoomingHuespedesCombo(string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return HTMLSelects.OHRoomingHuespedesComboOptions(iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Operaciones sobre Habitaciones - Huéspedes

        [WebGet]
        [OperationContract]
        public string GetOHHuespedes(string id_face, string ModoEdicion, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetOHHuespedes(int.Parse(id_face), int.Parse(ModoEdicion), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutOHHuespedes(string id_facn, string nombre, string id_naci, string id_cardex, string id_face, string dni_cif
            , string adulto, string sexo, string fecha_nac, string localidad, string ciudad, string direccion, string zip_code, string provincia
            , string tipo_doc, string venc_pas, string fecha_ent, string fecha_sal, string Eliminado, string ModoEdicion
            , string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OHHuesped elemento = new OHHuesped();
                    try
                    {
                        elemento.id_facn = int.Parse(id_facn);
                    }
                    catch
                    {
                        elemento.id_facn = 0;
                    }
                    elemento.nombre = nombre;
                    elemento.id_naci = int.Parse(id_naci);
                    elemento.id_cardex = int.Parse(id_cardex);
                    elemento.id_face = int.Parse(id_face);
                    elemento.dni_cif = dni_cif;
                    elemento.adulto = int.Parse(adulto) == 1 ? true : false;
                    elemento.sexo = int.Parse(sexo) == 1 ? true : false;
                    try
                    {
                        elemento.fecha_nac = DateTime.Parse(fecha_nac);
                    }
                    catch
                    {
                        elemento.fecha_nac = DateTime.Now.AddYears(-1);
                    }
                    elemento.localidad = localidad;
                    elemento.ciudad = ciudad;
                    elemento.direccion = direccion;
                    elemento.zip_code = zip_code;
                    elemento.provincia = provincia;
                    elemento.tipo_doc = int.Parse(tipo_doc) == 1 ? true : false;
                    try
                    {
                        elemento.venc_pas = DateTime.Parse(venc_pas);
                    }
                    catch
                    {
                        elemento.venc_pas = DateTime.Now.AddYears(-1);
                    }
                    //elemento.fecha_ent = DateTime.Parse(fecha_ent);
                    try
                    {
                        elemento.fecha_sal = DateTime.Parse(fecha_sal);
                    }
                    catch
                    {
                        elemento.fecha_sal = DateTime.Now;
                    }
                    //elemento.fecha_ent = DateTime.Now;
                    //elemento.fecha_sal = DateTime.Now;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutOHHuespedes(elemento, int.Parse(ModoEdicion), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Operaciones sobre Habitaciones - Check-In / Check-Out

        [WebGet]
        [OperationContract]
        public string GetOHAdosadas(string id_face, string Anulando, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DataTable datos = Logica.GetOHAdosadas(int.Parse(id_face.Replace("HA", "").Trim()), iden);

                    bool bAnulando = false;

                    try
                    {
                        bAnulando = int.Parse(Anulando) == 1 ? true : false;
                    }
                    catch { }

                    string mens = L.MSG("MsgFDKCheckOut" + (bAnulando ? "Anul" : "") + "Hab");

                    if (datos.Rows.Count > 0)
                    {
                        mens = L.MSG("MsgFDKCheckOut" + (bAnulando ? "Anul" : "") + "HabAdosadas") + " ";

                        bool Primero = true;
                        foreach (DataRow dr in datos.Rows)
                        {
                            if (!Primero)
                            {
                                mens += ", ";
                            }
                            else
                            {
                                Primero = false;
                            }
                            mens += dr["habitacion"].ToString().TrimEnd();
                        }
                    }

                    return mens;

                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOHCheckIn(string id_face, string ModoEdicion, string temporal, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OHCheckIn elemento = new OHCheckIn();

                    try
                    {
                        elemento.id_face = int.Parse(id_face);
                        elemento = Logica.GetOHCheckIn(elemento.id_face, int.Parse(ModoEdicion), iden);
                    }
                    catch
                    {
                        throw new Exception("ERR_OH_NODATA");
                    }

                    string hiddata = "";

                    hiddata += "<input type='hidden' id='HID_CK_id_face' value='" + elemento.id_face + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_adosada_a' value='" + elemento.adosada_a + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_dega' value='" + elemento.id_dega + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_mone' value='" + elemento.id_mone + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_faca' value='" + elemento.id_faca + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_grup' value='" + elemento.id_grup + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_habi' value='" + elemento.id_habi + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_dcto' value='" + elemento.id_dcto + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_cont' value='" + elemento.id_cont + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_ralo' value='" + elemento.id_ralo + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_uhab' value='" + elemento.id_uhab + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_fecha_ent' value='" + String.Format("{0:d}", elemento.fecha_ent) + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_fecha_ent_display' value='" + String.Format("{0:d}", elemento.fecha_ent) + " " + String.Format("{0:HH:mm:ss}", elemento.fecha_ent) + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_fecha_sal' value='" + String.Format("{0:d}", elemento.fecha_sal) + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_precio' value='" + elemento.precio + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_observaciones' value='" + elemento.observaciones + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_vip' value='" + (elemento.vip ? 1 : 0) + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_referencia' value='" + elemento.referencia + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_tar_cred' value='" + elemento.tar_cred + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_sin_equip' value='" + (elemento.sin_equip ? 1 : 0) + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_credito' value='" + (elemento.credito ? 1 : 0) + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_room' value='" + elemento.id_room + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_rese' value='" + elemento.id_rese + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_vuel' value='" + elemento.id_vuel + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_origen' value='" + elemento.id_origen + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_venta' value='" + elemento.id_venta + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_id_oper' value='" + elemento.id_oper + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_CambiaPrecio' value='" + elemento.CambiaPrecio + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_nro_reserva' value='" + elemento.nro_reserva + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_nro_rooming' value='" + elemento.nro_rooming + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_operador' value='" + elemento.operador + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_origen_reg' value='" + elemento.origen_reg + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_FacturaAgencia' value='" + elemento.FacturaAgencia + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_Prepagado' value='" + String.Format("{0:N2}", elemento.Prepagado) + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_ImporteFacturas' value='" + String.Format("{0:N2}", elemento.ImporteFacturas) + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_cod_mone' value='" + elemento.cod_mone + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_desc_grup' value='" + elemento.desc_grup + "' />";
                    hiddata += "<input type='hidden' id='HID_CK_lider' value='" + elemento.lider + "' />";
                    try
                    {
                        if (elemento.id_face != 0 && int.Parse(ModoEdicion) != 2)
                        {
                            DataTable precios = Logica.GetOHPrecios(elemento.id_face, (float)elemento.precio, elemento.fecha_sal, elemento.id_cont, iden);
                            hiddata += "<input type='hidden' id='HID_CK_precio_fin' value='" + float.Parse(precios.Rows[0]["Impo_Tot_USD"].ToString()) + "' />";
                        }
                        else
                        {
                            hiddata += "<input type='hidden' id='HID_CK_precio_fin' value='0' />";
                        }
                    }
                    catch
                    {
                        hiddata += "<input type='hidden' id='HID_CK_precio_fin' value='0' />";
                    }

                    return hiddata;

                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutOHCheckIn(string id_face, string adosada_a, string id_dega, string id_mone, string id_faca, string id_grup
            , string id_habi, string id_dcto, string id_cont, string id_ralo, string id_uhab, string fecha_ent, string fecha_sal
            , string precio, string observaciones, string vip, string referencia, string tar_cred, string sin_equip, string credito
            , string id_room, string id_rese, string id_vuel, string id_origen, string id_venta, string id_oper, string CambiaPrecio
            , string Eliminado, string ModoEdicion, string Anulando, string Huespedes, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OHCheckIn elemento = new OHCheckIn();
                    ConfigFront gen = Logica.GetConfigFront(iden);
                    try
                    {
                        elemento.id_face = int.Parse(id_face);
                    }
                    catch
                    {
                        elemento.id_face = 0;
                    }
                    elemento.adosada_a = int.Parse(adosada_a);
                    elemento.id_dega = int.Parse(id_dega);
                    elemento.id_mone = int.Parse(id_mone);
                    elemento.id_faca = int.Parse(id_faca);
                    elemento.id_grup = int.Parse(id_grup);
                    elemento.id_habi = int.Parse(id_habi);
                    elemento.id_dcto = int.Parse(id_dcto);
                    elemento.id_cont = int.Parse(id_cont);
                    elemento.id_ralo = int.Parse(id_ralo);
                    elemento.id_uhab = int.Parse(id_uhab);
                    elemento.fecha_ent = gen.fecha_hotelera;
                    try
                    {
                        elemento.fecha_sal = DateTime.Parse(fecha_sal);
                    }
                    catch
                    {
                        elemento.fecha_sal = gen.fecha_hotelera.AddDays(-1);
                    }
                    if (elemento.fecha_sal < gen.fecha_hotelera)
                    {
                        throw new Exception("CKIN_MESS27_1"); // Fecha de salida incorrecta
                    }
                    elemento.precio = double.Parse(precio);
                    elemento.observaciones = observaciones;
                    try
                    {
                        elemento.vip = int.Parse(vip) == 1 ? true : false;
                    }
                    catch
                    {
                        elemento.vip = false;
                    }
                    elemento.referencia = referencia;
                    elemento.tar_cred = tar_cred;
                    try
                    {
                        elemento.sin_equip = int.Parse(sin_equip) == 1 ? true : false;
                    }
                    catch
                    {
                        elemento.sin_equip = false;
                    }
                    try
                    {
                        elemento.credito = int.Parse(credito) == 1 ? true : false;
                    }
                    catch
                    {
                        elemento.credito = false;
                    }
                    elemento.id_room = int.Parse(id_room);
                    elemento.id_rese = int.Parse(id_rese);
                    elemento.id_vuel = int.Parse(id_vuel);
                    elemento.id_origen = short.Parse(id_origen);
                    elemento.id_venta = int.Parse(id_venta);
                    elemento.id_oper = iden.U;
                    elemento.CambiaPrecio = true;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    bool bAnulando = false;

                    try
                    {
                        bAnulando = int.Parse(Anulando) == 1 ? true : false;
                    }
                    catch { }

                    DataTable DTHuespedes = jqGridGenie.JQGridJSONToDataTable(Huespedes);

                    if (DTHuespedes.Rows.Count == 0)
                    {
                        throw new Exception("CKIN_MESS16");
                    }

                    int res = -1;

                    res = Logica.PutOHCheckIn(elemento, int.Parse(ModoEdicion), bAnulando, DTHuespedes, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                if (ex.Message.Contains("ERR_CKIN_PUT_10"))
                {
                    return ("<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + ex.Message + "</p>")
                        .Replace("ERR_CKIN_PUT_101", L.ERR("ERR_CKIN_PUT_101"))
                        .Replace("ERR_CKIN_PUT_102", L.ERR("ERR_CKIN_PUT_102"))
                        .Replace("ERR_CKIN_PUT_103", L.ERR("ERR_CKIN_PUT_103"))
                        .Replace("ERR_CKIN_PUT_104", L.ERR("ERR_CKIN_PUT_104"))
                        .Replace("ERR_CKIN_PUT_105", L.ERR("ERR_CKIN_PUT_105"))
                        .Replace("ERR_CKIN_PUT_106", L.ERR("ERR_CKIN_PUT_106"));
                }
                else
                {
                    return ("<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>");
                }


            }
        }

        [WebGet]
        [OperationContract]
        public string OHBeginCheckIn(string ReservaRL, string Id, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, Parametros.O104030_CHECK_IN_RES_RL, D, I)))
                {

                    return jqGridGenie.DataTableToJQGridJSON(Logica.OHBeginCheckIn(int.Parse(ReservaRL) == 1 ? true : false, int.Parse(Id), iden));
                }
                else
                {
                    throw new Exception(L.ERR("LblGENUserNotAuthorized"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Operaciones sobre Habitaciones - Diálogo Precios

        [WebGet]
        [OperationContract]
        public string GetOHPrecios(string id_face, string precio, string fecha_sal, string id_cont, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DataTable datos = Logica.GetOHPrecios(int.Parse(id_face.Replace("HA ", "").Replace("FE ", "")), float.Parse(precio), DateTime.Parse(fecha_sal), int.Parse(id_cont), iden);
                    return "<input type=\"hidden\" id=\"hidDLGPR_Precio_SI\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Precio_SI"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Impuestos\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Impuestos"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Precio\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Precio"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Precio_ralo\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Precio_ralo"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Impo_Noche\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Impo_Noche"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Dif_Dias\" value=\"" + datos.Rows[0]["Dif_Dias"].ToString() + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Impo_Total\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Impo_Total"].ToString())) + "\" />" +

                           "<input type=\"hidden\" id=\"hidDLGPR_Precio_Usd_SI\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Precio_Usd_SI"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Impu_Usd\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Impu_Usd"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Precio_Usd\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Precio_Usd"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Precio_ralo_USD\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Precio_ralo_USD"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Impo_Noche_USD\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Impo_Noche_USD"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Impo_Tot_USD\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Impo_Tot_USD"].ToString())) + "\" />" +

                           "<input type=\"hidden\" id=\"hidDLGPR_tasa\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["tasa"].ToString())) + "\" />";
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Operaciones sobre Habitaciones - Filtros

        [WebGet]
        [OperationContract]
        public string GetOHCheckInReservasRL(string ReservaRL, string Fil_Referencia, string vFil_Referencia, string Fil_Tarifa, string vFil_Tarifa
            , string Fil_Vuelo, string vFil_Vuelo, string Fil_Nacionalidad, string vFil_Nacionalidad, string Fil_Reservante, string vFil_Reservante
            , string Fil_Nombre, string vFil_Nombre, string Fil_Grupo, string vFil_Grupo, string Fil_Perfil, string vFil_Perfil
            , string Fil_Origen, string vFil_Origen, string Fil_Roon, string vFil_Roon, string Confirmadas, string VIP
            , string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OHCheckInFiltroResRL elemento2 = new OHCheckInFiltroResRL();
                    elemento2.Fil_Referencia = false;
                    try
                    {
                        elemento2.Fil_Referencia = int.Parse(Fil_Referencia) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_Referencia = vFil_Referencia;
                    elemento2.Fil_Tarifa = false;
                    try
                    {
                        elemento2.Fil_Tarifa = int.Parse(Fil_Tarifa) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_Tarifa = int.Parse(vFil_Tarifa);
                    }
                    catch
                    {
                        elemento2.vFil_Tarifa = 0;
                    }
                    elemento2.Fil_Vuelo = false;
                    try
                    {
                        elemento2.Fil_Vuelo = int.Parse(Fil_Vuelo) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_Vuelo = int.Parse(vFil_Vuelo);
                    }
                    catch
                    {
                        elemento2.vFil_Vuelo = 0;
                    }
                    elemento2.Fil_Nacionalidad = false;
                    try
                    {
                        elemento2.Fil_Nacionalidad = int.Parse(Fil_Nacionalidad) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_Nacionalidad = int.Parse(vFil_Nacionalidad);
                    }
                    catch
                    {
                        elemento2.vFil_Nacionalidad = 0;
                    }
                    elemento2.Fil_Reservante = false;
                    try
                    {
                        elemento2.Fil_Reservante = int.Parse(Fil_Reservante) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_Reservante = vFil_Reservante;
                    elemento2.Fil_Nombre = false;
                    try
                    {
                        elemento2.Fil_Nombre = int.Parse(Fil_Nombre) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_Nombre = vFil_Nombre;
                    elemento2.Fil_Grupo = false;
                    try
                    {
                        elemento2.Fil_Grupo = int.Parse(Fil_Grupo) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_Grupo = int.Parse(vFil_Grupo);
                    }
                    catch
                    {
                        elemento2.vFil_Grupo = 0;
                    }
                    elemento2.Fil_Perfil = false;
                    try
                    {
                        elemento2.Fil_Perfil = int.Parse(Fil_Perfil) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_Perfil = int.Parse(vFil_Perfil);
                    }
                    catch
                    {
                        elemento2.vFil_Perfil = 0;
                    }
                    elemento2.Fil_Origen = false;
                    try
                    {
                        elemento2.Fil_Origen = int.Parse(Fil_Origen) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_Origen = int.Parse(vFil_Origen);
                    }
                    catch
                    {
                        elemento2.vFil_Origen = 0;
                    }
                    elemento2.Fil_Roon = false;
                    try
                    {
                        elemento2.Fil_Roon = int.Parse(Fil_Roon) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_Roon = int.Parse(vFil_Roon);
                    }
                    catch
                    {
                        elemento2.vFil_Roon = 0;
                    }

                    bool bConfirmadas = false;
                    try
                    {
                        bConfirmadas = int.Parse(Confirmadas) == 1 ? true : false;
                    }
                    catch { }
                    bool bVIP = false;
                    try
                    {
                        bVIP = int.Parse(VIP) == 1 ? true : false;
                    }
                    catch { }

                    return jqGridGenie.DataTableToJQGridJSON(Logica.GetOHCheckInReservasRL(
                          int.Parse(ReservaRL) == 1 ? true : false
                        , elemento2
                        , bConfirmadas
                        , bVIP
                        , iden)
                    );
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOHResRLFilCombos(string Modo, string ReservaRL, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return HTMLSelects.OHResRLFilCombos(int.Parse(Modo), (int.Parse(ReservaRL) == 1 ? true : false), iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOHCheckInHabiFiltro(string Modo, string Fil_id_thab, string vFil_id_thab, string Fil_limpias, string vFil_limpias, string Fil_id_rang, string vFil_id_rang
            , string Fil_id_grup, string vFil_id_grup, string Fil_id_caha, string vFil_id_caha, string Fil_asignadas_a, string vFil_asignadas_a
            , string fecha_ent, string fecha_sal, string check_in, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OHCheckInHabiFiltro elemento2 = new OHCheckInHabiFiltro();

                    elemento2.Fil_id_thab = false;
                    try
                    {
                        elemento2.Fil_id_thab = int.Parse(Fil_id_thab) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_thab = int.Parse(vFil_id_thab);
                    elemento2.Fil_limpias = false;
                    try
                    {
                        elemento2.Fil_limpias = int.Parse(Fil_limpias) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_limpias = true;
                    elemento2.Fil_id_rang = false;
                    try
                    {
                        elemento2.Fil_id_rang = int.Parse(Fil_id_rang) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_rang = int.Parse(vFil_id_rang);
                    }
                    catch
                    {
                        elemento2.vFil_id_rang = 0;
                    }
                    elemento2.Fil_id_grup = false;
                    try
                    {
                        elemento2.Fil_id_grup = int.Parse(Fil_id_grup) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_grup = int.Parse(vFil_id_grup);
                    }
                    catch
                    {
                        elemento2.vFil_id_grup = 0;
                    }
                    elemento2.Fil_id_caha = false;
                    try
                    {
                        elemento2.Fil_id_caha = int.Parse(Fil_id_caha) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_caha = int.Parse(vFil_id_caha);
                    }
                    catch
                    {
                        elemento2.vFil_id_caha = 0;
                    }
                    elemento2.Fil_asignadas_a = false;
                    try
                    {
                        elemento2.Fil_asignadas_a = int.Parse(Fil_asignadas_a) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_asignadas_a = int.Parse(vFil_asignadas_a);
                    }
                    catch
                    {
                        elemento2.vFil_asignadas_a = 0;
                    }

                    elemento2.fecha_ent = DateTime.Parse(fecha_ent);
                    elemento2.fecha_sal = DateTime.Parse(fecha_sal);
                    elemento2.check_in = int.Parse(check_in) == 1 ? true : false;

                    return jqGridGenie.DataTableToJQGridJSON(Logica.GetOHCheckInHabiFiltro(int.Parse(Modo), elemento2, iden)).Replace("LblFDKSucia", L.LBL("LblFDKSucia"));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOHCheckInFiltro(string Fil_fecha_ent, string Fil_fecha_ent_modo, string vFil_fecha_ent, string vFil_fecha_ent2
            , string Fil_fecha_sal, string Fil_fecha_sal_modo, string vFil_fecha_sal, string vFil_fecha_sal2
            , string Fil_id_grup, string vFil_id_grup, string Fil_nro_reserva, string vFil_nro_reserva, string Fil_nro_rooming, string vFil_nro_rooming
            , string Fil_id_thab, string vFil_id_thab, string Fil_id_uhab, string vFil_id_uhab, string Fil_id_vuel, string vFil_id_vuel, string Fil_id_cont
            , string vFil_id_cont, string Fil_id_naci, string vFil_id_naci, string Fil_id_mone, string vFil_id_mone, string Fil_nombre, string vFil_nombre
            , string Fil_adosada_a, string vFil_adosada_a, string Fil_vip, string Fil_id_venta, string vFil_id_venta, string Fil_id_oper
            , string vFil_id_oper, string Fil_id_origen, string vFil_id_origen, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OHCheckInFiltro elemento2 = new OHCheckInFiltro();
                    elemento2.Fil_fecha_ent = false;
                    try
                    {
                        elemento2.Fil_fecha_ent = int.Parse(Fil_fecha_ent) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.Fil_fecha_ent_modo = int.Parse(Fil_fecha_ent_modo);
                    try
                    {
                        elemento2.vFil_fecha_ent = DateTime.Parse(vFil_fecha_ent);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_ent = DateTime.Now;
                    }
                    try
                    {
                        elemento2.vFil_fecha_ent2 = DateTime.Parse(vFil_fecha_ent2);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_ent2 = DateTime.Now;
                    }
                    elemento2.Fil_fecha_sal = false;
                    try
                    {
                        elemento2.Fil_fecha_sal = int.Parse(Fil_fecha_sal) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.Fil_fecha_sal_modo = int.Parse(Fil_fecha_sal_modo);
                    try
                    {
                        elemento2.vFil_fecha_sal = DateTime.Parse(vFil_fecha_sal);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_sal = DateTime.Now;
                    }
                    try
                    {
                        elemento2.vFil_fecha_sal2 = DateTime.Parse(vFil_fecha_sal2);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_sal2 = DateTime.Now;
                    }
                    elemento2.Fil_id_grup = false;
                    try
                    {
                        elemento2.Fil_id_grup = int.Parse(Fil_id_grup) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_grup = int.Parse(vFil_id_grup);
                    }
                    catch
                    {
                        elemento2.vFil_id_grup = 0;
                    }
                    elemento2.Fil_nro_reserva = false;
                    try
                    {
                        elemento2.Fil_nro_reserva = int.Parse(Fil_nro_reserva) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_nro_reserva = int.Parse(vFil_nro_reserva);
                    }
                    catch
                    {
                        elemento2.vFil_nro_reserva = 0;
                    }
                    elemento2.Fil_nro_rooming = false;
                    try
                    {
                        elemento2.Fil_nro_rooming = int.Parse(Fil_nro_rooming) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_nro_rooming = int.Parse(vFil_nro_rooming);
                    }
                    catch
                    {
                        elemento2.vFil_nro_rooming = 0;
                    }
                    elemento2.Fil_id_thab = false;
                    try
                    {
                        elemento2.Fil_id_thab = int.Parse(Fil_id_thab) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_thab = int.Parse(vFil_id_thab);
                    elemento2.Fil_id_uhab = false;
                    try
                    {
                        elemento2.Fil_id_uhab = int.Parse(Fil_id_uhab) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_uhab = int.Parse(vFil_id_uhab);
                    elemento2.Fil_id_vuel = false;
                    try
                    {
                        elemento2.Fil_id_vuel = int.Parse(Fil_id_vuel) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_vuel = int.Parse(vFil_id_vuel);
                    }
                    catch
                    {
                        elemento2.vFil_id_vuel = 0;
                    }
                    elemento2.Fil_id_cont = false;
                    try
                    {
                        elemento2.Fil_id_cont = int.Parse(Fil_id_cont) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_cont = int.Parse(vFil_id_cont);
                    elemento2.Fil_id_naci = false;
                    try
                    {
                        elemento2.Fil_id_naci = int.Parse(Fil_id_naci) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_naci = int.Parse(vFil_id_naci);
                    elemento2.Fil_id_mone = false;
                    try
                    {
                        elemento2.Fil_id_mone = int.Parse(Fil_id_mone) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_mone = int.Parse(vFil_id_mone);
                    elemento2.Fil_nombre = false;
                    try
                    {
                        elemento2.Fil_nombre = int.Parse(Fil_nombre) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_nombre = vFil_nombre;
                    elemento2.Fil_adosada_a = false;
                    try
                    {
                        elemento2.Fil_adosada_a = int.Parse(Fil_adosada_a) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_adosada_a = int.Parse(vFil_adosada_a);
                    }
                    catch
                    {
                        elemento2.vFil_adosada_a = 0;
                    }
                    elemento2.Fil_vip = false;
                    try
                    {
                        elemento2.Fil_vip = int.Parse(Fil_vip) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_vip = true;
                    elemento2.Fil_id_venta = false;
                    try
                    {
                        elemento2.Fil_id_venta = int.Parse(Fil_id_venta) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_venta = int.Parse(vFil_id_venta);
                    }
                    catch
                    {
                        elemento2.vFil_id_venta = 0;
                    }
                    elemento2.Fil_id_oper = false;
                    try
                    {
                        elemento2.Fil_id_oper = int.Parse(Fil_id_oper) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_oper = int.Parse(vFil_id_oper);
                    elemento2.Fil_id_origen = false;
                    try
                    {
                        elemento2.Fil_id_origen = int.Parse(Fil_id_origen) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_origen = int.Parse(vFil_id_origen);

                    return jqGridGenie.DataTableToJQGridJSON(Logica.GetOHCheckInFiltro(elemento2, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Operaciones sobre Habitaciones - Mensajes

        [WebGet]
        [OperationContract]
        public string GetMensajes(string id_face, string id_mens, string Eliminado, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int id = int.Parse(id_mens);

                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    if (id == 0)
                    {
                        return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetMensajes(int.Parse(id_face), id, Eliminados, iden));
                    }
                    else
                    {
                        DataTable datos = Logica.GetMensajes(int.Parse(id_face), id, Eliminados, iden);
                        return "<input type=\"hidden\" id=\"hidMENS_id_mens\" value=\"" + datos.Rows[0]["id_mens"].ToString() + "\" />" +
                            "<input type=\"hidden\" id=\"hidMENS_de\" value=\"" + datos.Rows[0]["de"].ToString() + "\" />" +
                            "<input type=\"hidden\" id=\"hidMENS_responder_a\" value=\"" + datos.Rows[0]["responder_a"].ToString() + "\" />" +
                            //"<input type=\"hidden\" id=\"hidMENS_texto\" value=\"" + CrazyGenie.JSONPurifier(datos.Rows[0]["texto"].ToString()) + "\" />" +
                            "<input type=\"hidden\" id=\"hidMENS_texto\" value=\"" + datos.Rows[0]["texto"].ToString() + "\" />" +
                            "<input type=\"hidden\" id=\"hidMENS_fecha_hora\" value=\"" + datos.Rows[0]["fecha_hora"].ToString() + "\" />" +
                            "<input type=\"hidden\" id=\"hidMENS_operador\" value=\"" + datos.Rows[0]["operador"].ToString() + "\" />" +
                            "<input type=\"hidden\" id=\"hidMENS_operador_mod\" value=\"" + datos.Rows[0]["operador_mod"].ToString() + "\" />" +
                            "<input type=\"hidden\" id=\"hidMENS_operador_eli\" value=\"" + datos.Rows[0]["operador_eli"].ToString() + "\" />";
                    }
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutMensajes(string id_mens, string id_face, string de, string texto, string responder_a, string fecha_hora, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    Mensaje elemento = new Mensaje();
                    try
                    {
                        elemento.id_mens = int.Parse(id_mens);
                    }
                    catch
                    {
                        elemento.id_mens = 0;
                    }
                    elemento.id_face = int.Parse(id_face);
                    elemento.de = de;
                    elemento.texto = texto;
                    elemento.responder_a = responder_a;
                    elemento.fecha_hora = DateTime.Parse(fecha_hora);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutMensajes(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Operaciones sobre Habitaciones - Facturas

        [WebGet]
        [OperationContract]
        public string GetOHFacturas(string id_face, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {

                    bool folio_ext = false;

                    int vid_face = 0;

                    if (id_face.Contains("HA"))
                    {
                        vid_face = int.Parse(id_face.Split(' ')[1]);
                    }
                    else if (id_face.Contains("FE"))
                    {
                        vid_face = int.Parse(id_face.Split(' ')[1]);
                        folio_ext = true;
                    }
                    else
                    {
                        vid_face = int.Parse(id_face);
                    }

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetOHFacturas(vid_face, folio_ext, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutOHFacturas(string id_fact, string id_mone, string id_cardex, string id_face, string nro_cheque, string orden_fact, string factura
            , string Empresa, string Id_Cardex2, string KActivo, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    if (id_face.Contains("HA"))
                    {
                        OHFactura elemento = new OHFactura();
                        try
                        {
                            elemento.id_fact = int.Parse(id_fact);
                        }
                        catch
                        {
                            elemento.id_fact = 0;
                        }
                        elemento.id_mone = int.Parse(id_mone);
                        elemento.id_cardex = int.Parse(id_cardex);
                        elemento.id_face = int.Parse(id_face.Replace("HA ", "").Replace("FE ", ""));
                        elemento.nro_cheque = 0;
                        elemento.orden_fact = int.Parse(orden_fact);
                        try
                        {
                            elemento.factura = short.Parse(factura);
                        }
                        catch
                        {
                            elemento.factura = 0;
                        }
                        elemento.Empresa = "";
                        elemento.Id_Cardex2 = 0;
                        elemento.KActivo = true;

                        elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                        res = Logica.PutOHFacturas(elemento, iden);
                    }
                    else
                    {
                        res = Logica.PutFEPerfil(int.Parse(id_face.Replace("FE ", "")), int.Parse(id_cardex), iden);
                    }


                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Operaciones sobre Habitaciones - Facturas - Cargos Automaticos

        [WebGet]
        [OperationContract]
        public string GetOHCargosAutomaticos(string Modo, string id_fact, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return CrazyGenie.DateHourCleaner(Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetOHCargosAutomaticos(int.Parse(Modo), int.Parse(id_fact), iden)));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutOHCargosAutomaticos(string Id, string id_linc, string id_fact, string fecha_desde, string fecha_hasta, string cantidad_linc
            , string id_pre0, string precio_linc, string Eliminado, string orden_fact, string id_face, string folio_ext, string id_mone
            , string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OHCargoAutomatico elemento = new OHCargoAutomatico();
                    try
                    {
                        elemento.Id = int.Parse(Id);
                    }
                    catch
                    {
                        elemento.Id = 0;
                    }
                    try
                    {
                        elemento.id_linc = int.Parse(id_linc);
                    }
                    catch
                    {
                        elemento.id_linc = 0;
                    }
                    elemento.id_fact = int.Parse(id_fact);
                    elemento.fecha_desde = DateTime.Parse(fecha_desde);
                    elemento.fecha_hasta = DateTime.Parse(fecha_hasta);
                    elemento.cantidad_linc = short.Parse(cantidad_linc);
                    elemento.id_pre0 = int.Parse(id_pre0);
                    elemento.precio_linc = double.Parse(precio_linc);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutOHCargosAutomaticos(elemento, int.Parse(orden_fact), int.Parse(id_face.Replace("HA ", "").Replace("FE ", ""))
                        , id_face.Contains("FE") ? true : false, int.Parse(id_mone), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Operaciones sobre Habitaciones - Facturas - Redireccionamiento de Cargos

        [WebGet]
        [OperationContract]
        public string GetOHFacturasCombo(string id_face, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    id_face = id_face.Contains("FE") ? "0" : id_face.Replace("HA ", "");

                    return Globals.jqGridGenie.DataTableToJQGridCombo(HTMLSelects.OHFacturasComboJQGrid(int.Parse(id_face), "", 0, 0, iden)).Replace("value:", "");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOHRedirCargos(string id_face, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    id_face = id_face.Contains("FE") ? "0" : id_face.Replace("HA ", "");

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetOHRedirCargos(int.Parse(id_face), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutOHRedirCargos(string id_face, string id_pre0, string id_fact, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OHRedirCargo elemento = new OHRedirCargo();

                    elemento.id_face = int.Parse(id_face.Replace("HA ", "").Replace("FE ", ""));
                    elemento.id_pre0 = int.Parse(id_pre0);
                    elemento.id_fact = int.Parse(id_fact);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutOHRedirCargos(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Operaciones sobre Habitaciones - Cambio de Habitación

        [WebGet]
        [OperationContract]
        public string PutOHCambioHabitacion(string id_face, string id_habi, string id_uhab, string precio, string motivo, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    if (motivo.TrimEnd().Length == 0)
                    {
                        throw new Exception(L.ERR("ERR_PUT_OHCHA_001"));
                    }

                    int res = -1;

                    res = Logica.PutOHCambioHabitacion(int.Parse(id_face), int.Parse(id_habi), int.Parse(id_uhab), float.Parse(precio), motivo, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Operaciones sobre Habitaciones - Check Out de Grupo

        [WebGet]
        [OperationContract]
        public string OHCheckOutGrupo(string id_grup, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, Parametros.O104033_CHECK_OUT_GRUPO, D, I)))
                {
                    DataTable grupo = Logica.GetOHGrupCheckIns(int.Parse(id_grup), iden);

                    int res = -1;

                    bool Erroneos = false;

                    foreach (DataRow dr in grupo.Rows)
                    {

                        try
                        {
                            OHCheckIn elemento = Logica.GetOHCheckIn(int.Parse(dr["id_face"].ToString()), 0, iden);
                            elemento.eliminado = true;

                            //Queda pendiente acá hacer el cierre de facturas en cero si tiene.
                            //Esto se hará cuando se acabe Operaciones sobre Folios.

                            res = Logica.PutOHCheckIn(elemento, 0, false, new DataTable(), iden);
                        }
                        catch
                        {
                            Erroneos = true;
                        }
                    }

                    if (Erroneos)
                    {
                        throw new Exception("ERR_CKOUT_GRUPO");
                    }

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.ERR("LblGENUserNotAuthorized"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return ("<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>")
                    .Replace("ERR_CKIN_PUT_101", L.ERR("ERR_CKIN_PUT_101"))
                    .Replace("ERR_CKIN_PUT_102", L.ERR("ERR_CKIN_PUT_102"))
                    .Replace("ERR_CKIN_PUT_103", L.ERR("ERR_CKIN_PUT_103"))
                    .Replace("ERR_CKIN_PUT_104", L.ERR("ERR_CKIN_PUT_104"))
                    .Replace("ERR_CKIN_PUT_105", L.ERR("ERR_CKIN_PUT_105"))
                    .Replace("ERR_CKIN_PUT_106", L.ERR("ERR_CKIN_PUT_106"));
            }
        }

        #endregion

        #region Operaciones sobre Habitaciones - Check In Inmediato Rooming List

        [WebGet]
        [OperationContract]
        public string OHCheckInRoomingListInme(string elementos, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    bool PrimeroOK = true;
                    string ElementosOK = "";
                    bool PrimeroMAL = true;
                    string ElementosMAL = "";

                    foreach (string elem in elementos.Split(','))
                    {
                        OHCheckIn elemento = Logica.GetOHCheckIn(int.Parse(elem), 2, iden);
                        DataTable huespedes = Logica.GetOHHuespedes(int.Parse(elem), 2, iden);

                        try
                        {
                            res = Logica.PutOHCheckIn(elemento, 2, false, huespedes, iden);

                            if (!PrimeroOK)
                            {
                                ElementosOK += ", ";
                            }
                            else
                            {
                                PrimeroOK = false;
                            }
                            ElementosOK += res;
                        }
                        catch
                        {
                            if (!PrimeroMAL)
                            {
                                ElementosMAL += ", ";
                            }
                            else
                            {
                                PrimeroMAL = false;
                            }
                            ElementosMAL += int.Parse(elem);
                        }
                    }

                    return jqGridGenie.DataTableToJQGridJSON(Logica.GetOHCheckInRLInme(ElementosOK, ElementosMAL, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return ("<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>")
                    .Replace("ERR_CKIN_PUT_101", L.ERR("ERR_CKIN_PUT_101"))
                    .Replace("ERR_CKIN_PUT_102", L.ERR("ERR_CKIN_PUT_102"))
                    .Replace("ERR_CKIN_PUT_103", L.ERR("ERR_CKIN_PUT_103"))
                    .Replace("ERR_CKIN_PUT_104", L.ERR("ERR_CKIN_PUT_104"))
                    .Replace("ERR_CKIN_PUT_105", L.ERR("ERR_CKIN_PUT_105"))
                    .Replace("ERR_CKIN_PUT_106", L.ERR("ERR_CKIN_PUT_106"));
            }
        }

        #endregion

        #region Grupos

        [WebGet]
        [OperationContract]
        public string GetGrupos(string Fil_nro_rooming, string vFil_nro_rooming
            , string Fil_id_vuel, string vFil_id_vuel, string Fil_id_cont, string vFil_id_cont
            , string Eliminado, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    Grupo elemento = new Grupo();
                    elemento.id_grup = 0;

                    GrupoFiltro elemento2 = new GrupoFiltro();

                    elemento2.Fil_nro_rooming = false;
                    try
                    {
                        elemento2.Fil_nro_rooming = int.Parse(Fil_nro_rooming) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_nro_rooming = int.Parse(vFil_nro_rooming);
                    }
                    catch
                    {
                        elemento2.vFil_nro_rooming = 0;
                    }
                    elemento2.Fil_id_vuel = false;
                    try
                    {
                        elemento2.Fil_id_vuel = int.Parse(Fil_id_vuel) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_vuel = int.Parse(vFil_id_vuel);
                    }
                    catch
                    {
                        elemento2.vFil_id_vuel = 0;
                    }
                    elemento2.Fil_id_cont = false;
                    try
                    {
                        elemento2.Fil_id_cont = int.Parse(Fil_id_cont) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_cont = int.Parse(vFil_id_cont);
                    }
                    catch { }

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetGrupos(elemento, elemento2, Eliminados, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutGrupos(string id_grup, string desc_grup, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    Grupo elemento = new Grupo();
                    try
                    {
                        elemento.id_grup = int.Parse(id_grup);
                    }
                    catch
                    {
                        elemento.id_grup = 0;
                    }
                    elemento.desc_grup = desc_grup;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutGrupos(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Perfiles (Cardex)

        [WebGet]
        [OperationContract]
        public string GetPerfiles(string Modo, string id_cardex, string id_cardex_fil, string Fil_nombre, string vFil_nombre, string Fil_clave_cardex, string vFil_clave_cardex
            , string Fil_dni_cif, string vFil_dni_cif, string Fil_provincia, string vFil_provincia, string Fil_ciudad, string vFil_ciudad
            , string Fil_localidad, string vFil_localidad, string Fil_zip_code, string vFil_zip_code, string Fil_id_naci, string vFil_id_naci
            , string Fil_fecha_nac, string Fil_fecha_nac_modo, string vFil_fecha_nac, string vFil_fecha_nac2
            , string Fil_vip, string vFil_vip, string Fil_sexo, string vFil_sexo
            , string Fil_cumpleanos, string vFil_cumpleanos, string vFil_cumpleanos2
            , string Eliminado, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    Perfil elemento = new Perfil();
                    elemento.id_cardex = int.Parse(id_cardex);

                    PerfilFiltro elemento2 = new PerfilFiltro();
                    elemento2.id_cardex_fil = 0;
                    try
                    {
                        elemento2.id_cardex_fil = int.Parse(id_cardex_fil);
                    }
                    catch { }
                    elemento2.Fil_nombre = false;
                    try
                    {
                        elemento2.Fil_nombre = int.Parse(Fil_nombre) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_nombre = vFil_nombre;
                    elemento2.Fil_clave_cardex = false;
                    try
                    {
                        elemento2.Fil_clave_cardex = int.Parse(Fil_clave_cardex) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_clave_cardex = vFil_clave_cardex;
                    elemento2.Fil_dni_cif = false;
                    try
                    {
                        elemento2.Fil_dni_cif = int.Parse(Fil_dni_cif) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_dni_cif = vFil_dni_cif;
                    elemento2.Fil_provincia = false;
                    try
                    {
                        elemento2.Fil_provincia = int.Parse(Fil_provincia) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_provincia = vFil_provincia;
                    elemento2.Fil_ciudad = false;
                    try
                    {
                        elemento2.Fil_ciudad = int.Parse(Fil_ciudad) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_ciudad = vFil_ciudad;
                    elemento2.Fil_localidad = false;
                    try
                    {
                        elemento2.Fil_localidad = int.Parse(Fil_localidad) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_localidad = vFil_localidad;
                    elemento2.Fil_zip_code = false;
                    try
                    {
                        elemento2.Fil_zip_code = int.Parse(Fil_zip_code) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_zip_code = vFil_zip_code;
                    elemento2.Fil_id_naci = false;
                    try
                    {
                        elemento2.Fil_id_naci = int.Parse(Fil_id_naci) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_naci = int.Parse(vFil_id_naci);
                    elemento2.Fil_fecha_nac = false;
                    try
                    {
                        elemento2.Fil_fecha_nac = int.Parse(Fil_fecha_nac) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.Fil_fecha_nac_modo = int.Parse(Fil_fecha_nac_modo);
                    try
                    {
                        elemento2.vFil_fecha_nac = DateTime.Parse(vFil_fecha_nac);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_nac = DateTime.Now;
                    }
                    try
                    {
                        elemento2.vFil_fecha_nac2 = DateTime.Parse(vFil_fecha_nac2);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_nac2 = DateTime.Now;
                    }
                    elemento2.Fil_vip = false;
                    try
                    {
                        elemento2.Fil_vip = int.Parse(Fil_vip) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_vip = false;
                    elemento2.Fil_sexo = false;
                    try
                    {
                        elemento2.Fil_sexo = int.Parse(Fil_sexo) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_sexo = false;
                    try
                    {
                        elemento2.vFil_sexo = int.Parse(vFil_sexo) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.Fil_cumpleanos = false;
                    try
                    {
                        elemento2.Fil_cumpleanos = int.Parse(Fil_cumpleanos) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_cumpleanos = DateTime.Parse(vFil_cumpleanos);
                    }
                    catch
                    {
                        elemento2.vFil_cumpleanos = DateTime.Now;
                    }
                    try
                    {
                        elemento2.vFil_cumpleanos2 = DateTime.Parse(vFil_cumpleanos2);
                    }
                    catch
                    {
                        elemento2.vFil_cumpleanos2 = DateTime.Now;
                    }

                    if (elemento.id_cardex == 0)
                    {
                        return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetPerfiles(int.Parse(Modo), elemento, elemento2, Eliminados, iden));
                    }
                    else
                    {
                        elemento = Logica.GetPerfiles(elemento.id_cardex, Eliminados, iden);

                        string hiddata = "";
                        hiddata += "<input type='hidden' id='HIDPER_id_cardex' value='" + elemento.id_cardex + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_es_empresa' value='" + (elemento.es_empresa ? 1 : 0) + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_id_mone' value='" + elemento.id_mone + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_id_cuenta' value='" + elemento.id_cuenta + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_id_dcto' value='" + elemento.id_dcto + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_clave_cardex' value='" + elemento.clave_cardex + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_direccion' value='" + elemento.direccion + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_fecha_nac' value='" + CrazyGenie.DateHourCleaner(elemento.fecha_nac.ToString()) + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_precio_especial' value='" + String.Format("{0:N2}", elemento.precio_especial) + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_empresa' value='" + (elemento.empresa ? 1 : 0) + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_dni_cif' value='" + elemento.dni_cif + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_vip' value='" + (elemento.vip ? 1 : 0) + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_E_mail' value='" + elemento.E_mail + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_localidad' value='" + elemento.localidad + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_ciudad' value='" + elemento.ciudad + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_zip_code' value='" + elemento.zip_code + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_provincia' value='" + elemento.provincia + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_observaciones' value='" + elemento.observaciones + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_id_naci' value='" + elemento.id_naci + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_id_idio' value='" + elemento.id_idio + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_telefonos' value='" + elemento.telefonos + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_fax' value='" + elemento.fax + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_referencia' value='" + elemento.referencia + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_siglas' value='" + elemento.siglas + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_nombre_empresa' value='" + elemento.nombre_empresa + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_objeto_social' value='" + elemento.objeto_social + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_nombre_gerente' value='" + elemento.nombre_gerente + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_nombre' value='" + elemento.nombre + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_lugar_nacimiento' value='" + elemento.lugar_nacimiento + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_profesion' value='" + elemento.profesion + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_tipo_doc' value='" + (elemento.tipo_doc ? 1 : 0) + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_sexo' value='" + (elemento.sexo ? 1 : 0) + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_venc_pas' value='" + CrazyGenie.DateHourCleaner(elemento.venc_pas.ToString()) + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_tarj_cred' value='" + elemento.tarj_cred + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_venc_tarj_month' value='" + elemento.venc_tarj.Month + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_venc_tarj_year' value='" + elemento.venc_tarj.Year + "' />";
                        hiddata += "<input type='hidden' id='HIDPER_Eliminado' value='" + elemento.eliminado + "' />";
                        return hiddata;
                    }
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutPerfiles(string id_cardex, string es_empresa, string id_mone, string id_cuenta, string id_dcto, string clave_cardex
            , string direccion, string fecha_nac, string precio_especial, string empresa, string dni_cif, string vip, string E_mail, string localidad
            , string ciudad, string zip_code, string provincia, string observaciones, string id_naci, string id_idio, string telefonos, string fax
            , string referencia, string siglas, string nombre_empresa, string objeto_social, string nombre_gerente, string nombre, string lugar_nacimiento
            , string profesion, string tipo_doc, string sexo, string venc_pas, string tarj_cred, string venc_tarj_month, string venc_tarj_year
            , string numero_pas, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DateTime FechaNula = new DateTime(1900, 1, 1);

                    Perfil elemento = new Perfil();
                    try
                    {
                        elemento.id_cardex = int.Parse(id_cardex);
                    }
                    catch
                    {
                        elemento.id_cardex = 0;
                    }
                    elemento.es_empresa = false;
                    try
                    {
                        elemento.es_empresa = int.Parse(es_empresa) == 1 ? true : false;
                    }
                    catch { }
                    elemento.id_mone = int.Parse(id_mone);
                    elemento.id_cuenta = int.Parse(id_cuenta);
                    elemento.id_dcto = int.Parse(id_dcto);
                    elemento.clave_cardex = clave_cardex;
                    elemento.direccion = direccion;
                    try
                    {
                        elemento.fecha_nac = DateTime.Parse(fecha_nac);
                    }
                    catch
                    {
                        elemento.fecha_nac = FechaNula;
                    }
                    elemento.precio_especial = double.Parse(precio_especial);
                    elemento.empresa = false;
                    try
                    {
                        elemento.empresa = int.Parse(es_empresa) == 1 ? true : false;
                    }
                    catch { }
                    elemento.dni_cif = dni_cif;
                    elemento.vip = false;
                    try
                    {
                        elemento.vip = int.Parse(vip) == 1 ? true : false;
                    }
                    catch { }
                    elemento.E_mail = E_mail;
                    elemento.localidad = localidad;
                    elemento.ciudad = ciudad;
                    elemento.zip_code = zip_code;
                    elemento.provincia = provincia;
                    elemento.observaciones = observaciones;
                    elemento.id_naci = int.Parse(id_naci);
                    elemento.id_idio = int.Parse(id_idio);
                    elemento.telefonos = telefonos;
                    elemento.fax = fax;
                    elemento.referencia = referencia;
                    elemento.siglas = siglas;
                    elemento.nombre_empresa = nombre_empresa;
                    elemento.objeto_social = objeto_social;
                    elemento.nombre_gerente = nombre_gerente;
                    elemento.nombre = nombre;
                    elemento.lugar_nacimiento = lugar_nacimiento;
                    elemento.profesion = profesion;
                    elemento.tipo_doc = false;
                    try
                    {
                        elemento.tipo_doc = int.Parse(tipo_doc) == 1 ? true : false;
                    }
                    catch { }
                    elemento.sexo = false;
                    try
                    {
                        elemento.sexo = int.Parse(sexo) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.venc_pas = DateTime.Parse(venc_pas);
                    }
                    catch
                    {
                        elemento.venc_pas = FechaNula;
                    }
                    elemento.tarj_cred = tarj_cred;
                    elemento.venc_tarj = new DateTime(int.Parse(venc_tarj_year), int.Parse(venc_tarj_month), 1);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    elemento.dni_cif = elemento.es_empresa ? elemento.dni_cif : numero_pas;

                    int res = -1;

                    res = Logica.PutPerfiles(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Servicios Simples de Agencia

        [WebGet]
        [OperationContract]
        public string GetServSimplesAgenciasXSA(string id_cfag, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetServSimplesAgenciasXSA(int.Parse(id_cfag), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Operaciones sobre Folios - Diálogo Precios

        [WebGet]
        [OperationContract]
        public string GetOFPrecios(string id_face, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OHCheckIn elemento = Logica.GetOHCheckIn(int.Parse(id_face.Replace("HA ", "").Replace("FE ", "")), 0, iden);
                    DataTable datos = Logica.GetOHPrecios(int.Parse(id_face.Replace("HA ", "").Replace("FE ", "")), float.Parse(elemento.precio.ToString()), elemento.fecha_sal, elemento.id_cont, iden);
                    return "<input type=\"hidden\" id=\"hidDLGPR_Precio_SI\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Precio_SI"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Impuestos\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Impuestos"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Precio\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Precio"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Precio_ralo\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Precio_ralo"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Impo_Noche\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Impo_Noche"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Dif_Dias\" value=\"" + datos.Rows[0]["Dif_Dias"].ToString() + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Impo_Total\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Impo_Total"].ToString())) + "\" />" +

                           "<input type=\"hidden\" id=\"hidDLGPR_Precio_Usd_SI\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Precio_Usd_SI"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Impu_Usd\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Impu_Usd"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Precio_Usd\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Precio_Usd"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Precio_ralo_USD\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Precio_ralo_USD"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Impo_Noche_USD\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Impo_Noche_USD"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidDLGPR_Impo_Tot_USD\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Impo_Tot_USD"].ToString())) + "\" />" +

                           "<input type=\"hidden\" id=\"hidDLGPR_tasa\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["tasa"].ToString())) + "\" />";
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }



        #endregion

        #region Operaciones sobre Folios - Información Principal

        [WebGet]
        [OperationContract]
        public string GetOFHabiFoliosExt(string id_face, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DataTable datos = Logica.GetOFHabiFoliosExt(id_face, iden);
                    try
                    {
                        return "<input type=\"hidden\" id=\"hidOF_id_face\" value=\"" + datos.Rows[0]["id_face"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_nombre\" value=\"" + datos.Rows[0]["nombre"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_tipo\" value=\"" + datos.Rows[0]["tipo"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_uso_reg\" value=\"" + datos.Rows[0]["uso_reg"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_prepago\" value=\"" + (float.Parse(datos.Rows[0]["prepagado"].ToString()) == 0 ? "0" : "1") + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_prepagado\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["prepagado"].ToString())) + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_moneda\" value=\"" + datos.Rows[0]["moneda"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_ent_sal\" value=\""
                                    + (datos.Rows[0]["id_face"].ToString().Contains("HA") ?
                                        String.Format("{0:dd/MMM/yyyy}", DateTime.Parse(datos.Rows[0]["fecha_ent"].ToString())) + " - " +
                                            String.Format("{0:dd/MMM/yyyy}", DateTime.Parse(datos.Rows[0]["fecha_sal"].ToString()))
                                        : String.Format("{0:dd/MMM/yyyy}", DateTime.Parse(datos.Rows[0]["fecha_sal"].ToString()))
                                      )
                                    + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_fecha_sal\" value=\""
                                    + String.Format("{0:d}", DateTime.Parse(datos.Rows[0]["fecha_sal"].ToString()))
                                    + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_desc_dcto\" value=\"" + datos.Rows[0]["desc_dcto"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_observaciones\" value=\"" + datos.Rows[0]["observaciones"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_folio_agen\" value=\"" + datos.Rows[0]["folio_agen"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_adosada_a\" value=\"" + datos.Rows[0]["adosada_a"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_credito\" value=\"" + datos.Rows[0]["credito"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_id_mone\" value=\"" + datos.Rows[0]["id_mone"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_habitacion\" value=\"" + datos.Rows[0]["habitacion"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_pasaporte\" value=\"" + datos.Rows[0]["pasaporte"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_folios_abiertos\" value=\"" + datos.Rows[0]["folios_abiertos"].ToString() + "\" />" +
                               "<input type=\"hidden\" id=\"hidOF_id_cuenta\" value=\"" + datos.Rows[0]["id_cuenta"].ToString() + "\" />";
                    }
                    catch
                    {
                        return "";
                    }
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Operaciones sobre Folios - Detalle de la Factura

        [WebGet]
        [OperationContract]
        public string GetOFFacturaDetalle(string id_face, string id_fact, string Fil_Fecha, string Fil_Fecha_modo, string vFil_Fecha, string vFil_Fecha2
            , string Fil_id_con0, string vFil_id_con0, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OFFacturaDetFiltro elemento2 = new OFFacturaDetFiltro();
                    elemento2.Fil_Fecha = false;
                    try
                    {
                        elemento2.Fil_Fecha = int.Parse(Fil_Fecha) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.Fil_Fecha_modo = int.Parse(Fil_Fecha_modo);
                    }
                    catch
                    {
                        elemento2.Fil_Fecha_modo = 1;
                    }
                    try
                    {
                        elemento2.vFil_Fecha = DateTime.Parse(vFil_Fecha);
                    }
                    catch
                    {
                        elemento2.vFil_Fecha = DateTime.Now;
                    }
                    try
                    {
                        elemento2.vFil_Fecha2 = DateTime.Parse(vFil_Fecha2);
                    }
                    catch
                    {
                        elemento2.vFil_Fecha2 = DateTime.Now;
                    }
                    elemento2.Fil_id_con0 = false;
                    try
                    {
                        elemento2.Fil_id_con0 = int.Parse(Fil_id_con0) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_con0 = int.Parse(vFil_id_con0);
                    }
                    catch
                    {
                        elemento2.vFil_id_con0 = 0;
                    }

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetOFFacturaDetalle(int.Parse(id_fact), (id_face.Contains("FE") ? true : false), elemento2, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Operaciones sobre Folios - Canje de Divisas

        [WebGet]
        [OperationContract]
        public string GetOFCanjeDivisas(string id_mone_ori, string id_mone_des, string importe, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    float Importe = 0;
                    try
                    {
                        Importe = float.Parse(importe);
                    }
                    catch { }
                    DataTable datos = Logica.GetOFCanjeDivisas(int.Parse(id_mone_ori), int.Parse(id_mone_des), Importe, iden);
                    return "<input type=\"hidden\" id=\"hidCD_PorcComi\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["PorcComi"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidCD_Tasa\" value=\"" + string.Format("{0:N8}", float.Parse(datos.Rows[0]["Tasa"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidCD_ImporteDes\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["ImporteDes"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidCD_Comision\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Comision"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidCD_Devolver\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Devolver"].ToString())) + "\" />";
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutOFCanjeDivisa(string id_face, string habitacion, string huesped, string pasaporte, string id_mone_ori, string id_mone_des
            , string importe, string comision, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OFCanjeDivisa elemento = new OFCanjeDivisa();

                    elemento.id_face = int.Parse(id_face.Replace("HA ", "").Replace("FE ", ""));
                    elemento.habitacion = habitacion;
                    elemento.huesped = huesped;
                    elemento.pasaporte = pasaporte;
                    elemento.id_mone_ori = int.Parse(id_mone_ori);
                    elemento.id_mone_des = int.Parse(id_mone_des);
                    elemento.importe = float.Parse(importe);
                    elemento.comision = float.Parse(comision);

                    int res = -1;

                    res = Logica.PutOFCanjeDivisa(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Operaciones sobre Folios - Traslado de Cargos

        [WebGet]
        [OperationContract]
        public string PutOFTraslado(string id_face_ori, string id_face_des, string id_fact_ori, string orden_des, string motivo, string cargos
            , string id_oper, string fecha_fil, string fecha_ini, string fecha_fin, string conc_fil, string id_pre0, string Eliminado
            , string cuenta_casa, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OFTraslado elemento = new OFTraslado();

                    elemento.id_face_ori = int.Parse(id_face_ori.Replace("HA ", "").Replace("FE ", ""));
                    elemento.folio_ext_ori = id_face_ori.Contains("FE") ? true : false;
                    elemento.id_face_des = int.Parse(id_face_des.Replace("HA ", "").Replace("FE ", ""));
                    elemento.folio_ext_des = id_face_des.Contains("FE") ? true : false;
                    elemento.id_fact_ori = int.Parse(id_fact_ori);
                    elemento.orden_des = int.Parse(orden_des);
                    elemento.motivo = motivo;
                    elemento.cargos = cargos;
                    elemento.id_oper = int.Parse(id_oper);
                    elemento.fecha_fil = false;
                    try
                    {
                        elemento.fecha_fil = int.Parse(fecha_fil) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.fecha_ini = DateTime.Parse(fecha_ini);
                    }
                    catch
                    {
                        elemento.fecha_ini = DateTime.Now;
                    }
                    try
                    {
                        elemento.fecha_fin = DateTime.Parse(fecha_fin);
                    }
                    catch
                    {
                        elemento.fecha_fin = DateTime.Now;
                    }

                    if (elemento.fecha_fin < elemento.fecha_ini)
                    {
                        DateTime aux = elemento.fecha_ini;
                        elemento.fecha_ini = elemento.fecha_fin;
                        elemento.fecha_fin = aux;
                    }

                    elemento.conc_fil = false;
                    try
                    {
                        elemento.conc_fil = int.Parse(conc_fil) == 1 ? true : false;
                    }
                    catch { }
                    elemento.id_pre0 = int.Parse(id_pre0);

                    int res = -1;

                    bool vcuenta_casa = false;
                    try
                    {
                        vcuenta_casa = int.Parse(cuenta_casa) == 1 ? true : false;
                    }
                    catch { }

                    res = Logica.PutOFTraslado(elemento, vcuenta_casa, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Operaciones sobre Folios - Cargos

        [WebGet]
        [OperationContract]
        public string GetOFDetalleCargo(string id_face, string id_line, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Print.OFCargoDetalle(int.Parse(id_line), id_face.Contains("FE") ? true : false, iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutOFFacturaCargos(string id_face, string orden, string id_mone, string id_pre0, string id_mone_imp
            , string importe, string motivo, string cargo, string id_line_cor, string id_oper, string cuenta_casa
            , string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OFFacturaCargos elemento = new OFFacturaCargos();

                    elemento.id_face = int.Parse(id_face.Replace("HA ", "").Replace("FE ", ""));
                    elemento.orden = int.Parse(orden);
                    elemento.id_mone = int.Parse(id_mone);
                    elemento.id_pre0 = int.Parse(id_pre0);
                    elemento.id_mone_imp = int.Parse(id_mone_imp);
                    elemento.importe = float.Parse(importe);
                    elemento.motivo = motivo;
                    elemento.cargo = false;
                    try
                    {
                        elemento.cargo = int.Parse(cargo) == 1 ? true : false;
                    }
                    catch { }
                    elemento.id_line_cor = int.Parse(id_line_cor);
                    elemento.id_oper = 0;
                    elemento.folio_ext = id_face.Contains("FE") ? true : false;

                    int res = -1;

                    bool vcuenta_casa = false;
                    try
                    {
                        vcuenta_casa = int.Parse(cuenta_casa) == 1 ? true : false;
                    }
                    catch { }

                    res = Logica.PutOFFacturaCargos(elemento, vcuenta_casa, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Operaciones sobre Folios - Cierre de la Factura

        [WebGet]
        [OperationContract]
        public string ConvetirImporte(string id_mone_fact, string importe_orig
            , string id_mone_ori, string id_mone_des, string importe, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DataTable mone = Logica.GetMonedasCombo(iden);
                    double impo = 0;
                    double tasa_ori = 0;
                    double tasa_des = 0;
                    double comision_des = 0;

                    string impo_orig = "";

                    try
                    {
                        if (id_mone_ori == id_mone_des)
                        {
                            return importe;
                        }

                        //Convertir importe original a la moneda de origen del monto
                        foreach (DataRow dr in mone.Rows)
                        {
                            if (int.Parse(id_mone_fact) == int.Parse(dr["id_mone"].ToString()))
                            {
                                tasa_ori = double.Parse(dr["tasa"].ToString());
                            }
                            if (int.Parse(id_mone_ori) == int.Parse(dr["id_mone"].ToString()))
                            {
                                tasa_des = double.Parse(dr["tasa"].ToString());
                                comision_des = double.Parse(dr["comision"].ToString());
                            }
                        }

                        impo = (double.Parse(importe_orig) / tasa_ori) * tasa_des;
                        impo_orig = String.Format("{0:N2}", impo);

                        if (impo_orig.Equals(importe) && id_mone_fact == id_mone_des)
                        {
                            // Devolvemos el importe original, de esta forma se evita la pérdida de precisión al convertir de la moneda origen A a la B y luego volver a la A, 
                            // la pérdida es notable cuando la moneda A está más devaluada con respecto a la moneda B.
                            return importe_orig;
                        }
                        else
                        {

                            impo = 0;
                            tasa_ori = 0;
                            tasa_des = 0;
                            comision_des = 0;

                            //Hacer la conversión del monto de la moneda origen a la moneda destino
                            foreach (DataRow dr in mone.Rows)
                            {
                                if (int.Parse(id_mone_ori) == int.Parse(dr["id_mone"].ToString()))
                                {
                                    tasa_ori = double.Parse(dr["tasa"].ToString());
                                }
                                if (int.Parse(id_mone_des) == int.Parse(dr["id_mone"].ToString()))
                                {
                                    tasa_des = double.Parse(dr["tasa"].ToString());
                                    comision_des = double.Parse(dr["comision"].ToString());
                                }
                            }

                            impo = (double.Parse(importe) / tasa_ori) * tasa_des;

                            return String.Format("{0:N2}", impo);
                        }
                    }
                    catch
                    {
                        return importe;
                    }
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutOFHabFECIERDescuento(string id_face, string id_dcto, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.PutOFHabFECIERDescuento(int.Parse(id_face.Replace("HA ", "").Replace("FE ", ""))
                        , int.Parse(id_dcto), (id_face.Contains("FE") ? true : false), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOFFacturaCobros(string id_fact, string id_face, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetOFFacturaCobros(int.Parse(id_fact), (id_face.Contains("FE") ? true : false), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutOFFacturaCobros(string id_face, string id_fcob, string id_cuenta, string id_tcob
            , string id_fact, string tarj_cred, string Mes, string Ano
            , string entregado, string propina, string comision, string aplicado, string vuelto, string tasa_monpag
            , string Eliminado, string incluir_dega, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OFFacturaCobro elemento = new OFFacturaCobro();
                    try
                    {
                        elemento.id_fcob = int.Parse(id_fcob);
                    }
                    catch
                    {
                        elemento.id_fcob = 0;
                    }
                    elemento.id_cuenta = int.Parse(id_cuenta);
                    elemento.id_tcob = int.Parse(id_tcob);
                    elemento.id_fact = int.Parse(id_fact);
                    elemento.tarj_cred = tarj_cred;
                    elemento.mes = int.Parse(Mes);
                    elemento.ano = int.Parse(Ano);
                    elemento.entregado = double.Parse(entregado);
                    elemento.propina = double.Parse(propina);
                    elemento.comision = 0;
                    elemento.aplicado = 0;
                    elemento.vuelto = 0;
                    elemento.tasa_monpag = 0;

                    elemento.folio_ext = id_face.Contains("FE") ? true : false;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    bool inclu_dega = false;
                    try
                    {
                        inclu_dega = int.Parse(incluir_dega) == 1 ? true : false;
                    }
                    catch { }

                    int res = -1;

                    res = Logica.PutOFFacturaCobros(elemento, inclu_dega, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string DelOFFacturaCobros(string id_fact, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.DelOFFacturaCobros(int.Parse(id_fact), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutOFCierreFactura(string id_fact, string incluir_dega, string id_face, string factura, string id_oper
            , string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OFCierreFactura elemento = new OFCierreFactura();
                    elemento.id_fact = int.Parse(id_fact);
                    elemento.incluir_dega = false;
                    try
                    {
                        elemento.incluir_dega = int.Parse(incluir_dega) == 1 ? true : false;
                    }
                    catch { }
                    elemento.folio_ext = id_face.Contains("FE") ? true : false;
                    elemento.factura = false;
                    try
                    {
                        elemento.factura = int.Parse(factura) == 1 ? true : false;
                    }
                    catch { }

                    int res = -1;

                    res = Logica.PutOFCierreFactura(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Operaciones sobre Folios - Depósitos Adelantados

        [WebGet]
        [OperationContract]
        public string PutOFDepositoAdelantado(string id_face, string orden, string id_line, string id_mone, string id_tcob, string tarj_cred
            , string mes, string ano, string importe, string entregado, string id_mone_impo, string anulacion, string motivo, string folio_ext, string id_oper
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OFDepositoAdelantado elemento = new OFDepositoAdelantado();

                    elemento.id_face = int.Parse(id_face.Replace("HA ", "").Replace("FE ", ""));
                    elemento.orden = int.Parse(orden);
                    try
                    {
                        elemento.id_line = int.Parse(id_line);
                    }
                    catch
                    {
                        elemento.id_line = 0;
                    }
                    elemento.id_mone = int.Parse(id_mone);
                    elemento.id_tcob = int.Parse(id_tcob);
                    elemento.tarj_cred = tarj_cred;
                    try
                    {
                        elemento.fec_venc = new DateTime(int.Parse(ano), int.Parse(mes), 1);
                    }
                    catch
                    {
                        elemento.fec_venc = DateTime.Now;
                    }
                    elemento.importe = float.Parse(importe);
                    elemento.anulacion = false;
                    try
                    {
                        elemento.anulacion = int.Parse(anulacion) == 1 ? true : false;
                    }
                    catch { }
                    if (!elemento.anulacion)
                    {
                        try
                        {
                            elemento.entregado = float.Parse(entregado);
                            if (elemento.entregado == 0)
                            {
                                elemento.entregado = elemento.importe;
                            }
                            else if (elemento.entregado < elemento.importe)
                            {
                                throw new Exception("CARGOS_MESS_DA_001");
                            }
                        }
                        catch
                        {
                            elemento.entregado = elemento.importe;
                        }
                    }
                    else
                    {
                        elemento.entregado = elemento.importe;
                    }
                    elemento.id_mone_impo = int.Parse(id_mone_impo);
                    elemento.motivo = motivo;
                    elemento.folio_ext = id_face.Contains("FE") ? true : false;

                    int res = -1;

                    res = Logica.PutOFDepositoAdelantado(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Operaciones sobre Folios - Liquidación del Cajero

        [WebGet]
        [OperationContract]
        public string GetOFLiquidacionCajero(string id_mone, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetOFLiquidacionCajero(int.Parse(id_mone), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutOFLiquidacionCajero(string id_lica, string id_oper, string id_mone, string billete, string cantidad
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    OFLiquidacionCajero elemento = new OFLiquidacionCajero();
                    try
                    {
                        elemento.id_lica = int.Parse(id_lica);
                    }
                    catch
                    {
                        elemento.id_lica = 0;
                    }
                    elemento.id_oper = iden.U;
                    elemento.id_mone = int.Parse(id_mone);
                    elemento.billete = int.Parse(billete);
                    elemento.cantidad = int.Parse(cantidad);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutOFLiquidacionCajero(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Operaciones sobre Folios - Check Out

        [WebGet]
        [OperationContract]
        public string OFCheckOut(string id_face, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, Parametros.O104021_OH_CHECK_OUT, D, I)))
                {
                    OHCheckIn elemento = Logica.GetOHCheckIn(int.Parse(id_face.Replace("HA", "").Trim()), 0, iden);
                    elemento.eliminado = true;

                    int res = Logica.PutOHCheckIn(elemento, 0, false, new DataTable(), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.ERR("LblGENUserNotAuthorized"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return ("<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>")
                    .Replace("ERR_CKIN_PUT_101", L.ERR("ERR_CKIN_PUT_101"))
                    .Replace("ERR_CKIN_PUT_102", L.ERR("ERR_CKIN_PUT_102"))
                    .Replace("ERR_CKIN_PUT_103", L.ERR("ERR_CKIN_PUT_103"))
                    .Replace("ERR_CKIN_PUT_104", L.ERR("ERR_CKIN_PUT_104"))
                    .Replace("ERR_CKIN_PUT_105", L.ERR("ERR_CKIN_PUT_105"))
                    .Replace("ERR_CKIN_PUT_106", L.ERR("ERR_CKIN_PUT_106"));
            }
        }

        #endregion

        #region Búsqueda de Clientes

        [WebGet]
        [OperationContract]
        public string GetBusquedaClientes(string Fil_nombre, string vFil_nombre, string principio, string Fil_id_naci, string vFil_id_naci, string Fil_id_habi
            , string vFil_id_habi, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    BusquedaClientesFiltro elemento2 = new BusquedaClientesFiltro();
                    elemento2.Fil_nombre = false;
                    try
                    {
                        elemento2.Fil_nombre = int.Parse(Fil_nombre) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_nombre = vFil_nombre;
                    elemento2.principio = false;
                    try
                    {
                        elemento2.principio = int.Parse(principio) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.Fil_id_naci = false;
                    try
                    {
                        elemento2.Fil_id_naci = int.Parse(Fil_id_naci) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_naci = int.Parse(vFil_id_naci);
                    elemento2.Fil_id_habi = false;
                    try
                    {
                        elemento2.Fil_id_habi = int.Parse(Fil_id_habi) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_habi = int.Parse(vFil_id_habi);

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetBusquedaClientes(elemento2, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Folios Externos

        [WebGet]
        [OperationContract]
        public string GetFoliosExternos(string id_tarj, string Fil_id_tipo, string vFil_id_tipo, string Fil_nombre_titular, string vFil_nombre_titular
            , string Fil_num_tarj, string vFil_num_tarj, string Fil_fecha_vencim, string Fil_fecha_vencim_modo, string vFil_fecha_vencim, string vFil_fecha_vencim2
            , string Eliminado, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    FolioExterno elemento = new FolioExterno();
                    elemento.id_tarj = int.Parse(id_tarj);

                    FolioExternoFiltro elemento2 = new FolioExternoFiltro();
                    elemento2.Fil_id_tipo = false;
                    try
                    {
                        elemento2.Fil_id_tipo = int.Parse(Fil_id_tipo) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_tipo = int.Parse(vFil_id_tipo);
                    elemento2.Fil_nombre_titular = false;
                    try
                    {
                        elemento2.Fil_nombre_titular = int.Parse(Fil_nombre_titular) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_nombre_titular = vFil_nombre_titular;
                    elemento2.Fil_num_tarj = false;
                    try
                    {
                        elemento2.Fil_num_tarj = int.Parse(Fil_num_tarj) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_num_tarj = int.Parse(vFil_num_tarj);
                    }
                    catch
                    {
                        elemento2.vFil_num_tarj = 0;
                    }
                    elemento2.Fil_fecha_vencim = false;
                    try
                    {
                        elemento2.Fil_fecha_vencim = int.Parse(Fil_fecha_vencim) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.Fil_fecha_vencim_modo = int.Parse(Fil_fecha_vencim_modo);
                    try
                    {
                        elemento2.vFil_fecha_vencim = DateTime.Parse(vFil_fecha_vencim);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_vencim = DateTime.Now;
                    }
                    try
                    {
                        elemento2.vFil_fecha_vencim2 = DateTime.Parse(vFil_fecha_vencim2);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_vencim2 = DateTime.Now;
                    }

                    if (elemento.id_tarj == 0)
                    {
                        return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetFoliosExternos(elemento, elemento2, Eliminados, iden));
                    }
                    else
                    {
                        elemento = Logica.GetFoliosExternos(elemento.id_tarj, Eliminados, iden);

                        string hiddata = "";
                        hiddata += "<input type='hidden' id='HIDFE_id_tarj' value='" + elemento.id_tarj + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_id_dega' value='" + elemento.id_dega + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_id_cardex' value='" + elemento.id_cardex + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_id_dcto' value='" + elemento.id_dcto + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_id_cuenta' value='" + elemento.id_cuenta + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_id_tipo' value='" + elemento.id_tipo + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_nombre_titular' value='" + elemento.nombre_titular + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_fecha_vencim' value='" + String.Format("{0:d}", elemento.fecha_vencim) + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_fecha_emision' value='" + String.Format("{0:d}", elemento.fecha_emision) + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_limite_cred' value='" + String.Format("{0:N2}", elemento.limite_cred) + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_num_tarj' value='" + elemento.num_tarj + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_factura' value='" + elemento.factura + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_eliminado' value='" + (elemento.eliminado ? "1" : "0") + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_nro_cheque' value='" + (elemento.nro_cheque == 0 ? "" : elemento.nro_cheque.ToString()) + "' />";
                        hiddata += "<input type='hidden' id='HIDFE_credito' value='" + (elemento.credito ? "1" : "0") + "' />";
                        return hiddata;
                    }
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutFoliosExternos(string id_tarj, string id_dega, string id_cardex, string id_dcto, string id_cuenta, string id_tipo, string nombre_titular
            , string fecha_vencim, string fecha_emision, string limite_cred, string num_tarj, string factura, string nro_cheque, string credito
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    FolioExterno elemento = new FolioExterno();
                    try
                    {
                        elemento.id_tarj = int.Parse(id_tarj);
                    }
                    catch
                    {
                        elemento.id_tarj = 0;
                    }
                    elemento.id_dega = int.Parse(id_dega);
                    elemento.id_cardex = int.Parse(id_cardex);
                    elemento.id_dcto = int.Parse(id_dcto);
                    elemento.id_cuenta = int.Parse(id_cuenta);
                    elemento.id_tipo = int.Parse(id_tipo);
                    elemento.nombre_titular = nombre_titular;
                    elemento.fecha_vencim = DateTime.Parse(fecha_vencim);
                    elemento.fecha_emision = DateTime.Now;
                    elemento.limite_cred = double.Parse(limite_cred);
                    elemento.num_tarj = 0;
                    elemento.factura = 0;
                    try
                    {
                        elemento.factura = short.Parse(factura);
                    }
                    catch { }
                    elemento.nro_cheque = 0;
                    elemento.credito = false;
                    try
                    {
                        elemento.credito = int.Parse(credito) == 1 ? true : false;
                    }
                    catch { }

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutFoliosExternos(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Enlaces para Prepagos

        [WebGet]
        [OperationContract]
        public string GetEnlacesPrepagosComboOptions(string id_mone, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return HTMLSelects.EnlacesPrepagosComboOptions(int.Parse(id_mone), "", 0, 0, iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Prepagos

        [WebGet]
        [OperationContract]
        public string GetPrepagosAsignados(string modo, string id_elem, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int vmodo = int.Parse(modo);
                    vmodo = id_elem.Contains("HA") ? 1 : vmodo;
                    vmodo = id_elem.Contains("FE") ? 0 : vmodo;
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetPrepagosAsignados(vmodo, int.Parse(id_elem.Replace("HA ", "").Replace("FE ", "")), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string AddPrepagosAsignados(string modo, string id_elem, string id_dega, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.AddPrepagosAsignados(int.Parse(modo), int.Parse(id_elem), int.Parse(id_dega), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string DelPrepagosAsignados(string modo, string id_dega, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.DelPrepagosAsignados(int.Parse(modo), int.Parse(id_dega), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetPrepagos(string modo, string id_cont, string id_dega, string Fil_id_endg, string vFil_id_endg, string Fil_nombre_depo, string vFil_nombre_depo
            , string Fil_id_mone, string vFil_id_mone, string Fil_documento_ext, string vFil_documento_ext, string Fil_fecha_recepcion, string Fil_fecha_recepcion_modo
            , string vFil_fecha_recepcion, string vFil_fecha_recepcion2, string Fil_fecha_caducidad, string Fil_fecha_caducidad_modo
            , string vFil_fecha_caducidad, string vFil_fecha_caducidad2, string Fil_no_tari, string vFil_no_tari, string Fil_id_cont, string vFil_id_cont
            , string Fil_asignado, string vFil_asignado, string Fil_nro_dega, string vFil_nro_dega, string Eliminado, string Dominio
            , string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    Prepago elemento = new Prepago();
                    elemento.id_dega = int.Parse(id_dega);
                    elemento.id_cont = int.Parse(id_cont);

                    PrepagoFiltro elemento2 = new PrepagoFiltro();
                    elemento2.Fil_id_endg = false;
                    try
                    {
                        elemento2.Fil_id_endg = int.Parse(Fil_id_endg) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_endg = int.Parse(vFil_id_endg);
                    elemento2.Fil_nombre_depo = false;
                    try
                    {
                        elemento2.Fil_nombre_depo = int.Parse(Fil_nombre_depo) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_nombre_depo = vFil_nombre_depo;
                    elemento2.Fil_id_mone = false;
                    try
                    {
                        elemento2.Fil_id_mone = int.Parse(Fil_id_mone) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_mone = int.Parse(vFil_id_mone);
                    elemento2.Fil_documento_ext = false;
                    try
                    {
                        elemento2.Fil_documento_ext = int.Parse(Fil_documento_ext) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_documento_ext = vFil_documento_ext;
                    elemento2.Fil_fecha_recepcion = false;
                    try
                    {
                        elemento2.Fil_fecha_recepcion = int.Parse(Fil_fecha_recepcion) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.Fil_fecha_recepcion_modo = int.Parse(Fil_fecha_recepcion_modo);
                    try
                    {
                        elemento2.vFil_fecha_recepcion = DateTime.Parse(vFil_fecha_recepcion);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_recepcion = DateTime.Now;
                    }
                    try
                    {
                        elemento2.vFil_fecha_recepcion2 = DateTime.Parse(vFil_fecha_recepcion2);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_recepcion2 = DateTime.Now;
                    }
                    elemento2.Fil_fecha_caducidad = false;
                    try
                    {
                        elemento2.Fil_fecha_caducidad = int.Parse(Fil_fecha_caducidad) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.Fil_fecha_caducidad_modo = int.Parse(Fil_fecha_caducidad_modo);
                    try
                    {
                        elemento2.vFil_fecha_caducidad = DateTime.Parse(vFil_fecha_caducidad);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_caducidad = DateTime.Now;
                    }
                    try
                    {
                        elemento2.vFil_fecha_caducidad2 = DateTime.Parse(vFil_fecha_caducidad2);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_caducidad2 = DateTime.Now;
                    }
                    elemento2.Fil_no_tari = false;
                    try
                    {
                        elemento2.Fil_no_tari = int.Parse(Fil_no_tari) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_no_tari = false;
                    elemento2.Fil_id_cont = false;
                    try
                    {
                        elemento2.Fil_id_cont = int.Parse(Fil_id_cont) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_cont = int.Parse(vFil_id_cont);
                    }
                    catch
                    {
                        elemento2.vFil_id_cont = 0;
                    }
                    try
                    {
                        elemento2.Fil_asignado = int.Parse(Fil_asignado) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_asignado = int.Parse(vFil_asignado) == 1 ? true : false;
                    }
                    catch
                    {
                        elemento2.vFil_asignado = false;
                    }
                    elemento2.Fil_nro_dega = false;
                    try
                    {
                        elemento2.Fil_nro_dega = int.Parse(Fil_nro_dega) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_nro_dega = int.Parse(vFil_nro_dega);
                    }
                    catch
                    {
                        elemento2.vFil_nro_dega = 0;
                    }

                    if (elemento.id_dega == 0)
                    {
                        return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetPrepagos(int.Parse(modo), elemento, elemento2, Eliminados, iden));
                    }
                    else
                    {
                        elemento = Logica.GetPrepagos(elemento.id_dega, Eliminados, iden);

                        if (elemento.asignado.Trim().Length == 0)
                        {
                            elemento.asignado = "<span style=\"color: red;\">" + L.LBL("LblFDKEHLibre").ToUpper() + "</span>";
                        }

                        string hiddata = "";
                        hiddata += "<input type='hidden' id='HIDDG_id_dega' value='" + elemento.id_dega + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_id_mone' value='" + elemento.id_mone + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_tasa' value='" + elemento.tasa + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_nombre_depo' value='" + elemento.nombre_depo + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_importe' value='" + String.Format("{0:N2}", elemento.importe) + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_entregado' value='" + String.Format("{0:N2}", 0) + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_tarj_cred' value='" + elemento.tarj_cred + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_documento_ext' value='" + elemento.documento_ext + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_fecha_asignacion' value='" +
                            (elemento.fecha_asignacion.Year > 1900 ? String.Format("{0:d}", elemento.fecha_asignacion) : "") +
                            "' />";
                        hiddata += "<input type='hidden' id='HIDDG_Fecha_recepcion' value='" + String.Format("{0:d}", elemento.Fecha_recepcion) + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_fecha_caducidad' value='" + String.Format("{0:d}", elemento.fecha_caducidad) + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_nro_dega' value='" + elemento.nro_dega + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_id_endg' value='" + elemento.id_endg + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_id_cont' value='" + elemento.id_cont + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_doc_pa' value='" + elemento.doc_pa + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_operador' value='" + elemento.operador + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_terminal' value='" + elemento.terminal + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_tasa_mb_co' value='" + elemento.tasa_mb_co + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_id_dato' value='" + elemento.id_dato + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_asignada_a' value='" + elemento.asignada_a + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_id_refer' value='" + elemento.id_refer + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_referencia' value='" + elemento.referencia + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_mes' value='" + elemento.fecha_exp_tarj.Month + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_ano' value='" + elemento.fecha_exp_tarj.Year + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_eliminado' value='" + elemento.eliminado + "' />";
                        hiddata += "<input type='hidden' id='HIDDG_oper_nombre' value='" + elemento.oper_nombre + "' />";

                        string link = "";
                        try
                        {
                            string[] dega_asig = elemento.asignado.Split('-');
                            if (dega_asig[0].Equals("Hab"))
                            {
                                link = "OperacionesFolios.aspx?n=HA%20" + dega_asig[1];
                            }
                            if (dega_asig[0].Equals("Fag"))
                            {
                                link = "FacturacionEmpresas.aspx?n=" + dega_asig[1];
                            }
                            if (dega_asig[0].Equals("Tcr") || dega_asig[0].Equals("FOL"))
                            {
                                link = "OperacionesFolios.aspx?n=FE%20" + dega_asig[1];
                            }
                            if (dega_asig[0].Equals("Roo"))
                            {
                                link = "RoomingList.aspx?n=" + dega_asig[1];
                            }
                            if (dega_asig[0].Equals("Res"))
                            {
                                link = "Reservas.aspx?n=" + dega_asig[1];
                            }
                        }
                        catch { }

                        hiddata += "<input type='hidden' id='HIDDG_asig_link' value='" + link + "' />";

                        hiddata += "<input type='hidden' id='HIDDG_asignado' value='" +
                            elemento.asignado
                                .Replace("Hab", L.LBL("LblFDKHabAbbr"))
                                .Replace("Fag", L.LBL("LblFDKFactEmpAbbr"))
                                .Replace("Tcr", L.LBL("LblFDKFEAbbr"))
                                .Replace("Roo", "Roo")
                                .Replace("Res", L.LBL("LblFDKReservaAbbr"))
                                //.Replace("FOL", L.LBL("LblFDKFolioAbbr"))
                                .Replace("FOL", L.LBL("LblFDKFEAbbr"))
                                .Replace("-", " ")
                                .ToUpper()
                                +
                        "' />";
                        return hiddata.Replace("01/01/0001", "");
                    }


                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetPrepagosMoneInfo(string id_mone_dega, string importe, string entregado, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    float impo = 0;
                    try
                    {
                        impo = float.Parse(importe);
                    }
                    catch { }

                    float entr = 0;
                    try
                    {
                        entr = float.Parse(entregado);
                    }
                    catch { }

                    DataTable info = Logica.GetPrepagosMoneInfo(int.Parse(id_mone_dega), impo, entr, iden);

                    string hiddata = "";
                    hiddata += "<input type='hidden' id='HIDMONDG_cod_mone' value='" + info.Rows[0]["cod_mone"].ToString() + "' />";
                    hiddata += "<input type='hidden' id='HIDMONDG_tasa' value='" + String.Format("{0:N8}", float.Parse(info.Rows[0]["tasa"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDMONDG_saldo' value='" + String.Format("{0:N2}", float.Parse(info.Rows[0]["saldo"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDMONDG_porc_comision' value='" + String.Format("{0:N2}", float.Parse(info.Rows[0]["porc_comision"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDMONDG_comision' value='" + String.Format("{0:N2}", float.Parse(info.Rows[0]["comision"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDMONDG_total' value='" + String.Format("{0:N2}", float.Parse(info.Rows[0]["total"].ToString())) + "' />";
                    return hiddata;


                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutPrepagos(string id_dega, string id_mone, string tasa, string nombre_depo, string importe, string entregado, string comision
            , string tarj_cred, string documento_ext, string fecha_asignacion, string Fecha_recepcion, string fecha_caducidad, string nro_dega
            , string id_endg, string id_cont, string doc_pa, string operador, string terminal, string tasa_mb_co, string id_dato, string asignada_a
            , string id_refer, string referencia, string mes, string ano, string Eliminado, string ElimModo, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    Prepago elemento = new Prepago();
                    try
                    {
                        elemento.id_dega = int.Parse(id_dega);
                    }
                    catch
                    {
                        elemento.id_dega = 0;
                    }
                    elemento.id_mone = int.Parse(id_mone);
                    elemento.tasa = 0;
                    elemento.nombre_depo = nombre_depo;
                    elemento.importe = double.Parse(importe);
                    elemento.tarj_cred = tarj_cred;
                    elemento.documento_ext = documento_ext;
                    elemento.fecha_asignacion = DateTime.Now;
                    elemento.Fecha_recepcion = DateTime.Now;
                    elemento.fecha_caducidad = DateTime.Parse(fecha_caducidad);
                    elemento.nro_dega = 0;
                    elemento.id_endg = int.Parse(id_endg);
                    elemento.id_cont = int.Parse(id_cont);
                    elemento.doc_pa = "";
                    elemento.operador = iden.U;
                    elemento.terminal = 0;
                    elemento.tasa_mb_co = 0;
                    elemento.id_dato = iden.D;
                    elemento.asignada_a = 0;
                    elemento.id_refer = 0;
                    elemento.referencia = referencia;
                    elemento.fecha_exp_tarj = new DateTime(int.Parse(ano), int.Parse(mes), 1);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    float comi = 0;
                    try
                    {
                        comi = float.Parse(comision);
                    }
                    catch { }

                    res = Logica.PutPrepagos(elemento, double.Parse(entregado), comi, int.Parse(ElimModo), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Prepagos - Fragmentar

        [WebGet]
        [OperationContract]
        public string GetPrepagosFragmentar(string id_dega, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetPrepagosFragmentar(int.Parse(id_dega), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutPrepagosFragmentar(string id_fdeg, string id_dega, string monto, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    PrepagoFragmentar elemento = new PrepagoFragmentar();
                    try
                    {
                        elemento.id_fdeg = int.Parse(id_fdeg);
                    }
                    catch
                    {
                        elemento.id_fdeg = 0;
                    }
                    elemento.id_dega = int.Parse(id_dega);
                    elemento.monto = double.Parse(monto);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutPrepagosFragmentar(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string RunPrepagosFragmentar(string id_dega, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.RunPrepagosFragmentar(int.Parse(id_dega), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Reservas

        [WebGet]
        [OperationContract]
        public string GetReservasPrecio(string id_cont, string id_uhab, string id_ralo, string fecha_ent, string fecha_sal
            , string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return String.Format("{0:N2}", Logica.GetReservasPrecio(int.Parse(id_cont), int.Parse(id_uhab), int.Parse(id_ralo)
                        , DateTime.Parse(fecha_ent), DateTime.Parse(fecha_sal), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetReservas(string id_rese, string Fil_id_cont, string vFil_id_cont, string Fil_id_agen, string vFil_id_agen
            , string Fil_id_merc, string vFil_id_merc, string Fil_nombre, string vFil_nombre, string Fil_nomb_reserv, string vFil_nomb_reserv
            , string Fil_fecha_ent, string Fil_fecha_ent_modo, string vFil_fecha_ent, string vFil_fecha_ent2
            , string Fil_fecha_sal, string Fil_fecha_sal_modo, string vFil_fecha_sal, string vFil_fecha_sal2
            , string Fil_fecha_reserv, string Fil_fecha_reserv_modo, string vFil_fecha_reserv, string vFil_fecha_reserv2
            , string Fil_fecha_anulada, string Fil_fecha_anulada_modo, string vFil_fecha_anulada, string vFil_fecha_anulada2
            , string Fil_id_thab, string vFil_id_thab, string Fil_id_uhab, string vFil_id_uhab, string Fil_id_naci
            , string vFil_id_naci, string Fil_id_ralo, string vFil_id_ralo, string Fil_id_vuelent, string vFil_id_vuelent
            , string Fil_id_vuelsal, string vFil_id_vuelsal, string Fil_vip, string Fil_referencia
            , string vFil_referencia, string Fil_cardex, string vFil_cardex, string Fil_cant_hab, string vFil_cant_hab
            , string Fil_id_venta, string vFil_id_venta, string Fil_id_oper, string vFil_id_oper, string Fil_id_origen
            , string vFil_id_origen, string Fil_nro_reserva, string vFil_nro_reserva, string Fil_prepago, string vFil_prepago
            , string Fil_estado, string solicitadas, string confirmadas, string espera, string anuladas, string checkin, string rooming, string traslado
            , string Eliminado, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    Reserva elemento = new Reserva();
                    elemento.id_rese = int.Parse(id_rese);

                    if (elemento.id_rese == 0)
                    {

                        ReservaFiltro elemento2 = new ReservaFiltro();
                        elemento2.Fil_id_cont = false;
                        try
                        {
                            elemento2.Fil_id_cont = int.Parse(Fil_id_cont) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_cont = int.Parse(vFil_id_cont);
                        elemento2.Fil_id_agen = false;
                        try
                        {
                            elemento2.Fil_id_agen = int.Parse(Fil_id_agen) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_agen = int.Parse(vFil_id_agen);
                        elemento2.Fil_id_merc = false;
                        try
                        {
                            elemento2.Fil_id_merc = int.Parse(Fil_id_merc) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_merc = int.Parse(vFil_id_merc);
                        elemento2.Fil_nombre = false;
                        try
                        {
                            elemento2.Fil_nombre = int.Parse(Fil_nombre) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_nombre = vFil_nombre;
                        elemento2.Fil_nomb_reserv = false;
                        try
                        {
                            elemento2.Fil_nomb_reserv = int.Parse(Fil_nomb_reserv) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_nomb_reserv = vFil_nomb_reserv;

                        elemento2.Fil_fecha_ent = false;
                        try
                        {
                            elemento2.Fil_fecha_ent = int.Parse(Fil_fecha_ent) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.Fil_fecha_ent_modo = int.Parse(Fil_fecha_ent_modo);
                        elemento2.vFil_fecha_ent = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_ent = DateTime.Parse(vFil_fecha_ent);
                        }
                        catch { }
                        elemento2.vFil_fecha_ent2 = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_ent2 = DateTime.Parse(vFil_fecha_ent2);
                        }
                        catch { }

                        elemento2.Fil_fecha_sal = false;
                        try
                        {
                            elemento2.Fil_fecha_sal = int.Parse(Fil_fecha_sal) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.Fil_fecha_sal_modo = int.Parse(Fil_fecha_sal_modo);
                        elemento2.vFil_fecha_sal = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_sal = DateTime.Parse(vFil_fecha_sal);
                        }
                        catch { }
                        elemento2.vFil_fecha_sal2 = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_sal2 = DateTime.Parse(vFil_fecha_sal2);
                        }
                        catch { }

                        elemento2.Fil_fecha_reserv = false;
                        try
                        {
                            elemento2.Fil_fecha_reserv = int.Parse(Fil_fecha_reserv) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.Fil_fecha_reserv_modo = int.Parse(Fil_fecha_reserv_modo);
                        elemento2.vFil_fecha_reserv = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_reserv = DateTime.Parse(vFil_fecha_reserv);
                        }
                        catch { }
                        elemento2.vFil_fecha_reserv2 = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_reserv2 = DateTime.Parse(vFil_fecha_reserv2);
                        }
                        catch { }

                        elemento2.Fil_fecha_anulada = false;
                        try
                        {
                            elemento2.Fil_fecha_anulada = int.Parse(Fil_fecha_anulada) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.Fil_fecha_anulada_modo = int.Parse(Fil_fecha_anulada_modo);
                        elemento2.vFil_fecha_anulada = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_anulada = DateTime.Parse(vFil_fecha_anulada);
                        }
                        catch { }
                        elemento2.vFil_fecha_anulada2 = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_anulada2 = DateTime.Parse(vFil_fecha_anulada2);
                        }
                        catch { }

                        elemento2.Fil_id_thab = false;
                        try
                        {
                            elemento2.Fil_id_thab = int.Parse(Fil_id_thab) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_thab = int.Parse(vFil_id_thab);
                        elemento2.Fil_id_uhab = false;
                        try
                        {
                            elemento2.Fil_id_uhab = int.Parse(Fil_id_uhab) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_uhab = int.Parse(vFil_id_uhab);
                        elemento2.Fil_id_naci = false;
                        try
                        {
                            elemento2.Fil_id_naci = int.Parse(Fil_id_naci) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_naci = int.Parse(vFil_id_naci);
                        elemento2.Fil_id_ralo = false;
                        try
                        {
                            elemento2.Fil_id_ralo = int.Parse(Fil_id_ralo) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_ralo = int.Parse(vFil_id_ralo);
                        elemento2.Fil_id_vuelent = false;
                        try
                        {
                            elemento2.Fil_id_vuelent = int.Parse(Fil_id_vuelent) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_vuelent = short.Parse(vFil_id_vuelent);
                        elemento2.Fil_id_vuelsal = false;
                        try
                        {
                            elemento2.Fil_id_vuelsal = int.Parse(Fil_id_vuelsal) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_vuelsal = short.Parse(vFil_id_vuelsal);
                        elemento2.Fil_vip = false;
                        try
                        {
                            elemento2.Fil_vip = int.Parse(Fil_vip) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_vip = false;
                        elemento2.Fil_referencia = false;
                        try
                        {
                            elemento2.Fil_referencia = int.Parse(Fil_referencia) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_referencia = vFil_referencia;
                        elemento2.Fil_cardex = false;
                        try
                        {
                            elemento2.Fil_cardex = int.Parse(Fil_cardex) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_cardex = vFil_cardex;
                        elemento2.Fil_cant_hab = false;
                        try
                        {
                            elemento2.Fil_cant_hab = int.Parse(Fil_cant_hab) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_cant_hab = 0;
                        try
                        {
                            elemento2.vFil_cant_hab = int.Parse(vFil_cant_hab);
                        }
                        catch { }
                        elemento2.Fil_id_venta = false;
                        try
                        {
                            elemento2.Fil_id_venta = int.Parse(Fil_id_venta) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_venta = int.Parse(vFil_id_venta);
                        elemento2.Fil_id_oper = false;
                        try
                        {
                            elemento2.Fil_id_oper = int.Parse(Fil_id_oper) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_oper = int.Parse(vFil_id_oper);
                        elemento2.Fil_id_origen = false;
                        try
                        {
                            elemento2.Fil_id_origen = int.Parse(Fil_id_origen) == 1 ? true : false;
                        }
                        catch { }
                        try
                        {
                            elemento2.vFil_id_origen = int.Parse(vFil_id_origen);
                        }
                        catch { }
                        elemento2.Fil_nro_reserva = false;
                        try
                        {
                            elemento2.Fil_nro_reserva = int.Parse(Fil_nro_reserva) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_nro_reserva = 0;
                        try
                        {
                            elemento2.vFil_nro_reserva = int.Parse(vFil_nro_reserva);
                        }
                        catch { }
                        elemento2.Fil_estado = false;
                        try
                        {
                            elemento2.Fil_estado = int.Parse(Fil_estado) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.solicitadas = false;
                        try
                        {
                            elemento2.solicitadas = int.Parse(solicitadas) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.confirmadas = false;
                        try
                        {
                            elemento2.confirmadas = int.Parse(confirmadas) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.espera = false;
                        try
                        {
                            elemento2.espera = int.Parse(espera) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.anuladas = false;
                        try
                        {
                            elemento2.anuladas = int.Parse(anuladas) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.checkin = false;
                        try
                        {
                            elemento2.checkin = int.Parse(checkin) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.rooming = false;
                        try
                        {
                            elemento2.rooming = int.Parse(rooming) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.traslado = false;
                        try
                        {
                            elemento2.traslado = int.Parse(traslado) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.Fil_prepago = false;
                        try
                        {
                            elemento2.Fil_prepago = int.Parse(Fil_prepago) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_prepago = 0;
                        try
                        {
                            elemento2.vFil_prepago = int.Parse(vFil_prepago);
                        }
                        catch { }

                        return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetReservas(elemento, elemento2, Eliminados, false, iden));
                    }
                    else
                    {
                        elemento = Logica.GetReservas(elemento.id_rese, Eliminados, iden);

                        DataTable datos = Logica.GetInfo("EXEC [WFDK_Reservas_GetTotales] " + elemento.id_rese, iden);

                        string hiddata = "";
                        hiddata += "<input type='hidden' id='HIDRE_id_rese' value='" + elemento.id_rese + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_id_cardex' value='" + elemento.id_cardex + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_id_dega' value='" + elemento.id_dega + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_id_cont' value='" + elemento.id_cont + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_id_dcto' value='" + elemento.id_dcto + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_id_estado' value='" + elemento.id_estado + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_estado' value='" + GetReservaEstado(elemento.id_estado) + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_id_vuelsal' value='" + elemento.id_vuelsal + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_fecha_ent' value='" + String.Format("{0:d}", elemento.fecha_ent) + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_fecha_sal' value='" + String.Format("{0:d}", elemento.fecha_sal) + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_nombre' value='" + elemento.nombre + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_nomb_reserv' value='" + elemento.nomb_reserv + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_observaciones' value='" + elemento.observaciones + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_telef_reserv' value='" + elemento.telef_reserv + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_fecha_reserv' value='" + String.Format("{0:D}", elemento.fecha_reserv) + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_referencia' value='" + elemento.referencia + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_tar_cred' value='" + elemento.tar_cred + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_id_vuelent' value='" + elemento.id_vuelent + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_nro_reserva' value='" + elemento.nro_reserva + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_id_naci' value='" + elemento.id_naci + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_vip' value='" + (elemento.vip ? 1 : 0) + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_fecha_anulada' value='" + elemento.fecha_anulada + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_oper_anulada' value='" + elemento.oper_anulada + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_id_origen' value='" + elemento.id_origen + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_email' value='" + elemento.email + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_mes' value='" + elemento.fecha_expTC.Month + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_ano' value='" + elemento.fecha_expTC.Year + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_id_venta' value='" + elemento.id_venta + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_id_oper' value='" + elemento.id_oper + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_Id_Cardex2' value='" + elemento.Id_Cardex2 + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_KActivo' value='" + elemento.KActivo + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_PerfilUso' value='" + elemento.PerfilUso + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_operador' value='" + elemento.operador + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_origen' value='" + elemento.origen + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_Perfil' value='" + elemento.Perfil + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_tot_cant_habi' value='" + String.Format("{0:N2}", float.Parse(datos.Rows[0]["tot_cant_habi"].ToString())) + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_tot_precio_hab' value='" + String.Format("{0:N2}", float.Parse(datos.Rows[0]["tot_precio_hab"].ToString())) + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_tot_precio_serv' value='" + String.Format("{0:N2}", float.Parse(datos.Rows[0]["tot_precio_serv"].ToString())) + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_tot_descuento' value='" + String.Format("{0:N2}", float.Parse(datos.Rows[0]["tot_descuento"].ToString())) + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_tot_total' value='" + String.Format("{0:N2}", float.Parse(datos.Rows[0]["tot_total"].ToString())) + "' />";
                        hiddata += "<input type='hidden' id='HIDRE_tot_prepagado' value='" + String.Format("{0:N2}", float.Parse(datos.Rows[0]["tot_prepagado"].ToString())) + "' />";
                        return hiddata;
                    }
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        public string GetReservaEstado(int id_estado)
        {
            switch (id_estado)
            {
                case 1:
                    return L.LBL("LblFDKESRERooming");
                case 2:
                    return L.LBL("LblFDKESRECheckIn");
                case 3:
                    return L.LBL("LblFDKESRESolicitada");
                case 4:
                    return L.LBL("LblFDKESREAnulada");
                case 5:
                    return L.LBL("LblFDKESREConfirmada");
                case 6:
                    return L.LBL("LblFDKESRETraslado");
                case 7:
                    return L.LBL("LblFDKESREListaEspera");
                default:
                    return "-ERROR-";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutReservas(string id_rese, string id_cardex, string id_dega, string id_cont, string id_dcto, string id_estado
            , string id_vuelsal, string fecha_ent, string fecha_sal, string nombre, string nomb_reserv, string observaciones, string telef_reserv
            , string fecha_reserv, string referencia, string tar_cred, string id_vuelent, string nro_reserva, string id_naci, string vip
            , string fecha_anulada, string oper_anulada, string id_origen, string email, string mes, string ano, string id_venta, string id_oper
            , string Id_Cardex2, string KActivo, string PerfilUso, string Eliminado, string Detalle, string forzar, string motivo
            , string visualiza_carp, string visualiza_care, string edita_carp, string edita_care, string actualiza_tari, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    Reserva elemento = new Reserva();
                    try
                    {
                        elemento.id_rese = int.Parse(id_rese);
                    }
                    catch
                    {
                        elemento.id_rese = 0;
                    }
                    elemento.id_cardex = int.Parse(id_cardex);
                    elemento.id_dega = int.Parse(id_dega);
                    elemento.id_cont = int.Parse(id_cont);
                    elemento.id_dcto = int.Parse(id_dcto);
                    elemento.id_estado = short.Parse(id_estado);
                    elemento.id_vuelsal = short.Parse(id_vuelsal);
                    elemento.fecha_ent = DateTime.Parse(fecha_ent);
                    elemento.fecha_sal = DateTime.Parse(fecha_sal);
                    elemento.nombre = nombre;
                    elemento.nomb_reserv = nomb_reserv;
                    elemento.observaciones = observaciones;
                    elemento.telef_reserv = telef_reserv;
                    elemento.fecha_reserv = DateTime.Now;
                    elemento.referencia = referencia;
                    elemento.tar_cred = tar_cred;
                    elemento.id_vuelent = short.Parse(id_vuelent);
                    elemento.nro_reserva = int.Parse(nro_reserva);
                    elemento.id_naci = int.Parse(id_naci);
                    elemento.vip = false;
                    try
                    {
                        elemento.vip = int.Parse(vip) == 1 ? true : false;
                    }
                    catch { }
                    elemento.fecha_anulada = DateTime.Now;
                    elemento.oper_anulada = 0;
                    elemento.id_origen = short.Parse(id_origen);
                    elemento.email = email;
                    elemento.fecha_expTC = new DateTime(int.Parse(ano), int.Parse(mes), 1);
                    elemento.id_venta = int.Parse(id_venta);
                    elemento.id_oper = iden.U;
                    elemento.Id_Cardex2 = int.Parse(Id_Cardex2);
                    elemento.KActivo = false;
                    elemento.PerfilUso = 0;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    DataTable detrese = new DataTable();
                    try
                    {
                        detrese = jqGridGenie.JQGridJSONToDataTable(Detalle);
                    }
                    catch { }

                    bool vforzar = false;
                    try
                    {
                        vforzar = int.Parse(forzar) == 1 ? true : false;
                    }
                    catch { }

                    bool visual_carp = false;
                    try
                    {
                        visual_carp = int.Parse(visualiza_carp) == 1 ? true : false;
                    }
                    catch { }

                    bool visual_care = false;
                    try
                    {
                        visual_care = int.Parse(visualiza_care) == 1 ? true : false;
                    }
                    catch { }

                    bool edit_carp = false;
                    try
                    {
                        edit_carp = int.Parse(edita_carp) == 1 ? true : false;
                    }
                    catch { }

                    bool edit_care = false;
                    try
                    {
                        edit_care = int.Parse(edita_care) == 1 ? true : false;
                    }
                    catch { }

                    bool act_tari = true;
                    try
                    {
                        act_tari = int.Parse(actualiza_tari) == 1 ? true : false;
                    }
                    catch { }

                    int res = -1;

                    res = Logica.PutReservas(elemento, motivo, detrese, vforzar, visual_carp, visual_care, edit_carp, edit_care, act_tari, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                if (ex.Message.Contains("ERR_RESE_SOBREVENTA"))
                {
                    return -2147483648 + "|<p class=\"SevenMsgError\">"
                        + ex.Message.Replace("[", "").Replace("]", "")
                            .Replace("ERR_RESE_SOBREVENTA:", "<b>" + L.ERR("ERR_RESE_SOBREVENTA") + ":</b></br> ")
                            .Replace("LblGENUsoHab", L.LBL("LblGENUsoHab"))
                            .Replace("LblGENDate", L.LBL("LblGENDate"))
                            .Replace("LblGENRooms", L.LBL("LblGENRooms")) + "</p>";
                }
                else
                {
                    return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
                }
            }
        }

        [WebGet]
        [OperationContract]
        public string Reserva2Rooming(string id_rese, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.Reserva2Rooming(int.Parse(id_rese), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Reservas - Detalle

        [WebGet]
        [OperationContract]
        public string GetReservaDetalle(string id_rese, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetReservaDetalle(int.Parse(id_rese), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutReservaDetalle(string id_lres, string id_uhab, string id_rese, string id_ralo, string cant_habi, string precio_hab, string id_habi
            , string Eliminado, string forzar, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    ReservaDetalle elemento = new ReservaDetalle();
                    try
                    {
                        elemento.id_lres = int.Parse(id_lres);
                    }
                    catch
                    {
                        elemento.id_lres = 0;
                    }
                    elemento.id_uhab = short.Parse(id_uhab);
                    elemento.id_rese = int.Parse(id_rese);
                    elemento.id_ralo = short.Parse(id_ralo);
                    elemento.cant_habi = int.Parse(cant_habi);
                    elemento.precio_hab = double.Parse(precio_hab);
                    elemento.id_habi = 0;
                    try
                    {
                        elemento.id_habi = int.Parse(id_habi);
                    }
                    catch { }

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    bool vforzar = false;
                    try
                    {
                        vforzar = int.Parse(forzar) == 1 ? true : false;
                    }
                    catch { }

                    int res = -1;

                    res = Logica.PutReservaDetalle(elemento, vforzar, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                if (ex.Message.Contains("ERR_RESE_SOBREVENTA"))
                {
                    return -2147483648 + "|<p class=\"SevenMsgError\">"
                        + ex.Message.Replace("[", "").Replace("]", "")
                            .Replace("ERR_RESE_SOBREVENTA:", "<b>" + L.ERR("ERR_RESE_SOBREVENTA") + ":</b></br> ")
                            .Replace("LblGENUsoHab", L.LBL("LblGENUsoHab"))
                            .Replace("LblGENDate", L.LBL("LblGENDate"))
                            .Replace("LblGENRooms", L.LBL("LblGENRooms")) + "</p>";
                }
                else
                {
                    return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
                }
            }
        }


        #endregion

        #region Reservas - Cargos Directos

        [WebGet]
        [OperationContract]
        public string GetReservaCargosDirectos(string id_lres, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetReservaCargosDirectos(int.Parse(id_lres), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutReservaCargosDirectos(string id_reau, string id_lres, string id_con0, string fecha_desde, string fecha_hasta, string cantidad
            , string precio, string Id_Ralo, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    ReservaCargoDirecto elemento = new ReservaCargoDirecto();
                    try
                    {
                        elemento.id_reau = int.Parse(id_reau);
                    }
                    catch
                    {
                        elemento.id_reau = 0;
                    }
                    elemento.id_lres = int.Parse(id_lres);
                    elemento.id_con0 = int.Parse(id_con0);
                    elemento.fecha_desde = DateTime.Parse(fecha_desde);
                    elemento.fecha_hasta = DateTime.Parse(fecha_hasta);
                    elemento.cantidad = short.Parse(cantidad);
                    elemento.precio = float.Parse(precio);
                    elemento.Id_Ralo = 0;
                    try
                    {
                        elemento.Id_Ralo = int.Parse(Id_Ralo);
                    }
                    catch { }

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutReservaCargosDirectos(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Reservas - Cargos Agencia

        [WebGet]
        [OperationContract]
        public string GetReservasCargosAgencia(string id_lres, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetReservaCargosAgencia(int.Parse(id_lres), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutReservasCargosAgencia(string id_reag, string id_lres, string id_cfag, string fecha_desde, string fecha_hasta, string cantidad
            , string precio, string Id_Ralo, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    ReservaCargoAgencia elemento = new ReservaCargoAgencia();
                    try
                    {
                        elemento.id_reag = int.Parse(id_reag);
                    }
                    catch
                    {
                        elemento.id_reag = 0;
                    }
                    elemento.id_lres = int.Parse(id_lres);
                    elemento.id_cfag = int.Parse(id_cfag);
                    elemento.fecha_desde = DateTime.Parse(fecha_desde);
                    elemento.fecha_hasta = DateTime.Parse(fecha_hasta);
                    elemento.cantidad = short.Parse(cantidad);
                    elemento.precio = float.Parse(precio);
                    elemento.Id_Ralo = 0;
                    try
                    {
                        elemento.Id_Ralo = int.Parse(Id_Ralo);
                    }
                    catch { }

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutReservaCargosAgencia(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Reservas - Plazos

        [WebGet]
        [OperationContract]
        public string GetReservaPlazos(string id_rese, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return CrazyGenie.DateHourCleaner(Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetReservaPlazos(int.Parse(id_rese), iden)));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutReservaPlazos(string id_rega, string id_rese, string fecha_plazo, string importe, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    ReservaPlazo elemento = new ReservaPlazo();
                    try
                    {
                        elemento.id_rega = int.Parse(id_rega);
                    }
                    catch
                    {
                        elemento.id_rega = 0;
                    }
                    elemento.id_rese = int.Parse(id_rese);
                    elemento.fecha_plazo = DateTime.Parse(fecha_plazo);
                    elemento.importe = float.Parse(importe);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutReservaPlazos(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Reservas - Rooming List

        [WebGet]
        [OperationContract]
        public string GetReseRoomCargosPrecio(string id_cont, string id_serv, string fecha_ent, string fecha_sal
            , string agencia, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool vagencia = false;
                    try
                    {
                        vagencia = int.Parse(agencia) == 1 ? true : false;
                    }
                    catch { }
                    return String.Format("{0:N2}", Logica.GetReseRoomCargosPrecio(int.Parse(id_cont), int.Parse(id_serv)
                        , DateTime.Parse(fecha_ent), DateTime.Parse(fecha_sal), vagencia, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GenReseRoomPlazos(string rese, string id_elem, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.GenReseRoomPlazos(int.Parse(rese) == 1 ? true : false, int.Parse(id_elem), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string DuplicarReseRoom(string Reserva, string id_elem, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.DuplicarReseRoom(int.Parse(Reserva) == 1 ? true : false, int.Parse(id_elem), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Rooming List

        [WebGet]
        [OperationContract]
        public string GetRoomingPrecio(string id_cont, string id_uhab, string id_ralo, string fecha_ent, string fecha_sal
            , string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return String.Format("{0:N2}", Logica.GetRoomingPrecio(int.Parse(id_cont), int.Parse(id_uhab), int.Parse(id_ralo)
                        , DateTime.Parse(fecha_ent), DateTime.Parse(fecha_sal), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetRooming(string id_room, string Fil_id_cont, string vFil_id_cont, string Fil_id_agen, string vFil_id_agen
            , string Fil_id_merc, string vFil_id_merc, string Fil_nombre, string vFil_nombre, string Fil_referencia, string vFil_referencia
            , string Fil_fecha_ent, string Fil_fecha_ent_modo, string vFil_fecha_ent, string vFil_fecha_ent2
            , string Fil_fecha_sal, string Fil_fecha_sal_modo, string vFil_fecha_sal, string vFil_fecha_sal2
            , string Fil_fecha_reserv, string Fil_fecha_reserv_modo, string vFil_fecha_reserv, string vFil_fecha_reserv2
            , string Fil_id_thab, string vFil_id_thab, string Fil_id_uhab
            , string vFil_id_uhab, string Fil_id_naci, string vFil_id_naci, string Fil_id_ralo, string vFil_id_ralo
            , string Fil_id_vuelent, string vFil_id_vuelent, string Fil_id_vuelsal, string vFil_id_vuelsal, string Fil_id_grup
            , string vFil_id_grup, string Fil_prepago, string vFil_prepago, string Fil_cardex, string vFil_cardex
            , string Fil_hab_asig, string vFil_hab_asig, string Fil_id_venta, string vFil_id_venta, string Fil_id_oper
            , string vFil_id_oper, string Fil_id_origen, string vFil_id_origen, string Fil_nro_rooming, string vFil_nro_rooming
            , string Fil_estado, string solicitadas, string confirmadas, string anuladas, string checkin, string traslado
            , string Eliminado, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    Rooming elemento = new Rooming();
                    elemento.id_room = int.Parse(id_room);

                    if (elemento.id_room == 0)
                    {

                        RoomingFiltro elemento2 = new RoomingFiltro();
                        elemento2.Fil_id_cont = false;
                        try
                        {
                            elemento2.Fil_id_cont = int.Parse(Fil_id_cont) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_cont = int.Parse(vFil_id_cont);
                        elemento2.Fil_id_agen = false;
                        try
                        {
                            elemento2.Fil_id_agen = int.Parse(Fil_id_agen) == 1 ? true : false;
                        }
                        catch { }
                        try
                        {
                            elemento2.vFil_id_agen = int.Parse(vFil_id_agen);
                        }
                        catch
                        {
                            elemento2.vFil_id_agen = 0;
                        }
                        elemento2.Fil_id_merc = false;
                        try
                        {
                            elemento2.Fil_id_merc = int.Parse(Fil_id_merc) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_merc = int.Parse(vFil_id_merc);
                        elemento2.Fil_nombre = false;
                        try
                        {
                            elemento2.Fil_nombre = int.Parse(Fil_nombre) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_nombre = vFil_nombre;
                        elemento2.Fil_referencia = false;
                        try
                        {
                            elemento2.Fil_referencia = int.Parse(Fil_referencia) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_referencia = vFil_referencia;

                        elemento2.Fil_fecha_ent = false;
                        try
                        {
                            elemento2.Fil_fecha_ent = int.Parse(Fil_fecha_ent) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.Fil_fecha_ent_modo = int.Parse(Fil_fecha_ent_modo);
                        elemento2.vFil_fecha_ent = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_ent = DateTime.Parse(vFil_fecha_ent);
                        }
                        catch { }
                        elemento2.vFil_fecha_ent2 = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_ent2 = DateTime.Parse(vFil_fecha_ent2);
                        }
                        catch { }

                        elemento2.Fil_fecha_sal = false;
                        try
                        {
                            elemento2.Fil_fecha_sal = int.Parse(Fil_fecha_sal) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.Fil_fecha_sal_modo = int.Parse(Fil_fecha_sal_modo);
                        elemento2.vFil_fecha_sal = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_sal = DateTime.Parse(vFil_fecha_sal);
                        }
                        catch { }
                        elemento2.vFil_fecha_sal2 = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_sal2 = DateTime.Parse(vFil_fecha_sal2);
                        }
                        catch { }

                        elemento2.Fil_fecha_reserv = false;
                        try
                        {
                            elemento2.Fil_fecha_reserv = int.Parse(Fil_fecha_reserv) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.Fil_fecha_reserv_modo = int.Parse(Fil_fecha_reserv_modo);
                        elemento2.vFil_fecha_reserv = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_reserv = DateTime.Parse(vFil_fecha_reserv);
                        }
                        catch { }
                        elemento2.vFil_fecha_reserv2 = DateTime.Now;
                        try
                        {
                            elemento2.vFil_fecha_reserv2 = DateTime.Parse(vFil_fecha_reserv2);
                        }
                        catch { }

                        elemento2.Fil_id_thab = false;
                        try
                        {
                            elemento2.Fil_id_thab = int.Parse(Fil_id_thab) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_thab = int.Parse(vFil_id_thab);
                        elemento2.Fil_id_uhab = false;
                        try
                        {
                            elemento2.Fil_id_uhab = int.Parse(Fil_id_uhab) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_uhab = int.Parse(vFil_id_uhab);
                        elemento2.Fil_id_naci = false;
                        try
                        {
                            elemento2.Fil_id_naci = int.Parse(Fil_id_naci) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_naci = int.Parse(vFil_id_naci);
                        elemento2.Fil_id_ralo = false;
                        try
                        {
                            elemento2.Fil_id_ralo = int.Parse(Fil_id_ralo) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_ralo = int.Parse(vFil_id_ralo);
                        elemento2.Fil_id_vuelent = false;
                        try
                        {
                            elemento2.Fil_id_vuelent = int.Parse(Fil_id_vuelent) == 1 ? true : false;
                        }
                        catch { }
                        try
                        {
                            elemento2.vFil_id_vuelent = int.Parse(vFil_id_vuelent);
                        }
                        catch
                        {
                            elemento2.vFil_id_vuelent = 0;
                        }
                        elemento2.Fil_id_vuelsal = false;
                        try
                        {
                            elemento2.Fil_id_vuelsal = int.Parse(Fil_id_vuelsal) == 1 ? true : false;
                        }
                        catch { }
                        try
                        {
                            elemento2.vFil_id_vuelsal = int.Parse(vFil_id_vuelsal);
                        }
                        catch
                        {
                            elemento2.vFil_id_vuelsal = 0;
                        }
                        elemento2.Fil_id_grup = false;
                        try
                        {
                            elemento2.Fil_id_grup = int.Parse(Fil_id_grup) == 1 ? true : false;
                        }
                        catch { }
                        try
                        {
                            elemento2.vFil_id_grup = int.Parse(vFil_id_grup);
                        }
                        catch
                        {
                            elemento2.vFil_id_grup = 0;
                        }
                        elemento2.Fil_prepago = false;
                        try
                        {
                            elemento2.Fil_prepago = int.Parse(Fil_prepago) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_prepago = false;
                        elemento2.Fil_cardex = false;
                        try
                        {
                            elemento2.Fil_cardex = int.Parse(Fil_cardex) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_cardex = vFil_cardex;
                        elemento2.Fil_hab_asig = false;
                        try
                        {
                            elemento2.Fil_hab_asig = int.Parse(Fil_hab_asig) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_hab_asig = false;
                        elemento2.Fil_id_venta = false;
                        try
                        {
                            elemento2.Fil_id_venta = int.Parse(Fil_id_venta) == 1 ? true : false;
                        }
                        catch { }
                        try
                        {
                            elemento2.vFil_id_venta = int.Parse(vFil_id_venta);
                        }
                        catch
                        {
                            elemento2.vFil_id_venta = 0;
                        }
                        elemento2.Fil_id_oper = false;
                        try
                        {
                            elemento2.Fil_id_oper = int.Parse(Fil_id_oper) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_id_oper = int.Parse(vFil_id_oper);
                        elemento2.Fil_id_origen = false;
                        try
                        {
                            elemento2.Fil_id_origen = int.Parse(Fil_id_origen) == 1 ? true : false;
                        }
                        catch { }
                        try
                        {
                            elemento2.vFil_id_origen = int.Parse(vFil_id_origen);
                        }
                        catch { }
                        elemento2.Fil_nro_rooming = false;
                        try
                        {
                            elemento2.Fil_nro_rooming = int.Parse(Fil_nro_rooming) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.vFil_nro_rooming = 0;
                        try
                        {
                            elemento2.vFil_nro_rooming = int.Parse(vFil_nro_rooming);
                        }
                        catch { }
                        elemento2.Fil_estado = false;
                        try
                        {
                            elemento2.Fil_estado = int.Parse(Fil_estado) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.solicitadas = false;
                        try
                        {
                            elemento2.solicitadas = int.Parse(solicitadas) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.confirmadas = false;
                        try
                        {
                            elemento2.confirmadas = int.Parse(confirmadas) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.anuladas = false;
                        try
                        {
                            elemento2.anuladas = int.Parse(anuladas) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.checkin = false;
                        try
                        {
                            elemento2.checkin = int.Parse(checkin) == 1 ? true : false;
                        }
                        catch { }
                        elemento2.traslado = false;
                        try
                        {
                            elemento2.traslado = int.Parse(traslado) == 1 ? true : false;
                        }
                        catch { }

                        return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetRooming(elemento, elemento2, Eliminados, false, iden));
                    }
                    else
                    {
                        elemento = Logica.GetRooming(elemento.id_room, Eliminados, iden);

                        DataTable datos = Logica.GetInfo("EXEC [WFDK_Rooming_GetTotales] " + elemento.id_room, iden);

                        string hiddata = "";
                        hiddata += "<input type='hidden' id='HIDRL_id_room' value='" + elemento.id_room + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_id_dega' value='" + elemento.id_dega + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_id_grup' value='" + elemento.id_grup + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_id_cont' value='" + elemento.id_cont + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_id_origen' value='" + elemento.id_origen + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_referencia' value='" + elemento.referencia + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_nro_rooming' value='" + elemento.nro_rooming + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_fecha_rooming' value='" + elemento.fecha_rooming + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_id_venta' value='" + elemento.id_venta + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_id_oper' value='" + elemento.id_oper + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_Id_Cardex2' value='" + elemento.Id_Cardex2 + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_KActivo' value='" + elemento.KActivo + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_operador' value='" + elemento.operador + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_desc_grup' value='" + elemento.desc_grup.Replace("LblGENNoAsignado", L.LBL("LblGENNoAsignado")) + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_desc_origen' value='" + elemento.desc_origen + "' />";
                        hiddata += "<input type='hidden' id='HIDRL_Perfil' value='" + elemento.Perfil + "' />";
                        hiddata += "<input type='hidden' id='HIDRO_tot_cant_habi' value='" + String.Format("{0:N2}", float.Parse(datos.Rows[0]["tot_cant_habi"].ToString())) + "' />";
                        hiddata += "<input type='hidden' id='HIDRO_tot_precio_hab' value='" + String.Format("{0:N2}", float.Parse(datos.Rows[0]["tot_precio_hab"].ToString())) + "' />";
                        hiddata += "<input type='hidden' id='HIDRO_tot_precio_serv' value='" + String.Format("{0:N2}", float.Parse(datos.Rows[0]["tot_precio_serv"].ToString())) + "' />";
                        hiddata += "<input type='hidden' id='HIDRO_tot_total' value='" + String.Format("{0:N2}", float.Parse(datos.Rows[0]["tot_total"].ToString())) + "' />";
                        hiddata += "<input type='hidden' id='HIDRO_tot_prepagado' value='" + String.Format("{0:N2}", float.Parse(datos.Rows[0]["tot_prepagado"].ToString())) + "' />";
                        return hiddata;
                    }
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutRooming(string id_room, string id_dega, string id_grup, string id_cont, string id_origen, string referencia, string nro_rooming
            , string fecha_rooming, string id_venta, string id_oper, string Id_Cardex2, string KActivo, string Eliminado, string Detalle, string forzar, string forzar_release
            , string actualiza_tari, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    Rooming elemento = new Rooming();
                    elemento.id_room = 0;
                    try
                    {
                        elemento.id_room = int.Parse(id_room);
                    }
                    catch { }
                    elemento.id_dega = 0;
                    try
                    {
                        elemento.id_dega = int.Parse(id_dega);
                    }
                    catch { }
                    elemento.id_grup = 0;
                    try
                    {
                        elemento.id_grup = int.Parse(id_grup);
                    }
                    catch { }
                    elemento.id_cont = int.Parse(id_cont);
                    elemento.id_origen = 1;
                    elemento.referencia = referencia;
                    elemento.nro_rooming = int.Parse(nro_rooming);
                    elemento.fecha_rooming = DateTime.Now;
                    elemento.id_venta = int.Parse(id_venta);
                    elemento.id_oper = iden.U;
                    elemento.Id_Cardex2 = 0;
                    try
                    {
                        elemento.Id_Cardex2 = int.Parse(Id_Cardex2);
                    }
                    catch { }
                    elemento.KActivo = false;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    DataTable rools = new DataTable();
                    try
                    {
                        rools = jqGridGenie.JQGridJSONToDataTable(Detalle);
                    }
                    catch { }

                    bool vforzar = false;
                    try
                    {
                        vforzar = int.Parse(forzar) == 1 ? true : false;
                    }
                    catch { }

                    bool vforzar_release = false;
                    try
                    {
                        vforzar_release = int.Parse(forzar_release) == 1 ? true : false;
                    }
                    catch { }

                    bool act_tari = true;
                    try
                    {
                        act_tari = int.Parse(actualiza_tari) == 1 ? true : false;
                    }
                    catch { }

                    int res = -1;

                    res = Logica.PutRooming(elemento, rools, vforzar, vforzar_release, act_tari, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                if (ex.Message.Contains("ERR_RESE_SOBREVENTA"))
                {
                    return -2147483648 + "|<p class=\"SevenMsgError\">"
                        + ex.Message.Replace("[", "").Replace("]", "")
                            .Replace("ERR_RESE_SOBREVENTA:", "<b>" + L.ERR("ERR_RESE_SOBREVENTA") + ":</b></br> ")
                            .Replace("LblGENUsoHab", L.LBL("LblGENUsoHab"))
                            .Replace("LblGENDate", L.LBL("LblGENDate"))
                            .Replace("LblGENRooms", L.LBL("LblGENRooms")) + "</p>";
                }
                else if (ex.Message.Contains("ROOM_RELEASE"))
                {
                    return -2147483649 + "|"
                        + "<p class=\"SevenMsgError\"><b>" + L.LBL("LblFDKSRelease") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
                }
                else
                {
                    return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
                }
            }
        }

        [WebGet]
        [OperationContract]
        public string PutRoomingEstado(string id_room, string id_estado, string motivo, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.PutRoomingEstado(int.Parse(id_room), int.Parse(id_estado), motivo, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                if (ex.Message.Contains("ERR_RESE_SOBREVENTA"))
                {
                    return -2147483648 + "|<p class=\"SevenMsgError\">"
                        + ex.Message.Replace("[", "").Replace("]", "")
                            .Replace("ERR_RESE_SOBREVENTA:", "<b>" + L.ERR("ERR_RESE_SOBREVENTA") + ":</b></br> ")
                            .Replace("LblGENUsoHab", L.LBL("LblGENUsoHab"))
                            .Replace("LblGENDate", L.LBL("LblGENDate"))
                            .Replace("LblGENRooms", L.LBL("LblGENRooms")) + "</p>";
                }
                else
                {
                    return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
                }
            }
        }


        #endregion

        #region Rooming List - Detalle

        [WebGet]
        [OperationContract]
        public string GetRoomingDetalle(string id_room, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return CrazyGenie.DateHourCleaner(Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetRoomingDetalle(int.Parse(id_room), iden))
                        .Replace("LblFDKESRERooming", L.LBL("LblFDKESRERooming"))
                        .Replace("LblFDKESRECheckIn", L.LBL("LblFDKESRECheckIn"))
                        .Replace("LblFDKESRESolicitada", L.LBL("LblFDKESRESolicitada"))
                        .Replace("LblFDKESREAnulada", L.LBL("LblFDKESREAnulada"))
                        .Replace("LblFDKESREConfirmada", L.LBL("LblFDKESREConfirmada"))
                        .Replace("LblFDKESRETraslado", L.LBL("LblFDKESRETraslado"))
                        .Replace("LblFDKESREListaEspera", L.LBL("LblFDKESREListaEspera")));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutRoomingDetalle(string id_rool, string id_room, string fecha_ent, string fecha_sal, string id_uhab, string id_ralo, string id_habi
            , string precio, string id_estado, string id_vuelsal, string observaciones, string referencia, string id_vuelent, string id_face
            , string Eliminado, string forzar, string forzar_release, string motivo, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    RoomingDetalle elemento = new RoomingDetalle();
                    try
                    {
                        elemento.id_rool = int.Parse(id_rool);
                    }
                    catch
                    {
                        elemento.id_rool = 0;
                    }
                    elemento.id_room = int.Parse(id_room);
                    elemento.fecha_ent = DateTime.Parse(fecha_ent);
                    elemento.fecha_sal = DateTime.Parse(fecha_sal);
                    elemento.id_uhab = short.Parse(id_uhab);
                    elemento.id_ralo = short.Parse(id_ralo);
                    elemento.id_habi = 0;
                    try
                    {
                        elemento.id_habi = int.Parse(id_habi);
                    }
                    catch { }
                    elemento.precio = double.Parse(precio);
                    elemento.id_estado = short.Parse(id_estado);
                    elemento.id_vuelsal = 0;
                    try
                    {
                        elemento.id_vuelsal = short.Parse(id_vuelsal);
                    }
                    catch { }
                    elemento.observaciones = observaciones;
                    elemento.referencia = referencia;
                    elemento.id_vuelent = 0;
                    try
                    {
                        elemento.id_vuelent = short.Parse(id_vuelent);
                    }
                    catch { }
                    elemento.id_face = 0;
                    try
                    {
                        elemento.id_face = int.Parse(id_face);
                    }
                    catch { }

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    bool vforzar = false;
                    try
                    {
                        vforzar = int.Parse(forzar) == 1 ? true : false;
                    }
                    catch { }

                    bool vforzar_release = false;
                    try
                    {
                        vforzar_release = int.Parse(forzar_release) == 1 ? true : false;
                    }
                    catch { }

                    int res = -1;

                    res = Logica.PutRoomingDetalle(elemento, vforzar, vforzar_release, motivo, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                if (ex.Message.Contains("ERR_RESE_SOBREVENTA"))
                {
                    return -2147483648 + "|<p class=\"SevenMsgError\">"
                        + ex.Message.Replace("[", "").Replace("]", "")
                            .Replace("ERR_RESE_SOBREVENTA:", "<b>" + L.ERR("ERR_RESE_SOBREVENTA") + ":</b></br> ")
                            .Replace("LblGENUsoHab", L.LBL("LblGENUsoHab"))
                            .Replace("LblGENDate", L.LBL("LblGENDate"))
                            .Replace("LblGENRooms", L.LBL("LblGENRooms")) + "</p>";
                }
                else if (ex.Message.Contains("ROOM_RELEASE"))
                {
                    return -2147483649 + "|" 
                        + "<p class=\"SevenMsgError\"><b>" + L.LBL("LblFDKSRelease") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
                }
                else
                {
                    return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
                }
            }
        }


        #endregion

        #region Rooming List - Huéspedes

        [WebGet]
        [OperationContract]
        public string GetRoomingHuespedes(string id_rool, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetRoomingHuespedes(int.Parse(id_rool), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutRoomingHuespedes(string id_roon, string id_rool, string nombre, string adulto, string id_naci, string id_cardex
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    RoomingHuesped elemento = new RoomingHuesped();
                    try
                    {
                        elemento.id_roon = int.Parse(id_roon);
                    }
                    catch
                    {
                        elemento.id_roon = 0;
                    }
                    elemento.id_rool = int.Parse(id_rool);
                    elemento.nombre = nombre;
                    elemento.adulto = false;
                    try
                    {
                        elemento.adulto = bool.Parse(adulto);
                    }
                    catch { }
                    elemento.id_naci = int.Parse(id_naci);
                    elemento.id_cardex = 0;
                    try
                    {
                        elemento.id_cardex = int.Parse(id_cardex);
                    }
                    catch { }

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutRoomingHuespedes(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Rooming List - Cargos Directos

        [WebGet]
        [OperationContract]
        public string GetRoomingCargosDirectos(string id_rool, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetRoomingCargosDirectos(int.Parse(id_rool), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutRoomingCargosDirectos(string id_rlau, string id_rool, string id_con0, string fecha_desde, string fecha_hasta, string cantidad
            , string precio, string Id_Ralo, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    RoomingCargoDirecto elemento = new RoomingCargoDirecto();
                    try
                    {
                        elemento.id_rlau = int.Parse(id_rlau);
                    }
                    catch
                    {
                        elemento.id_rlau = 0;
                    }
                    elemento.id_rool = int.Parse(id_rool);
                    elemento.id_con0 = int.Parse(id_con0);
                    elemento.fecha_desde = DateTime.Parse(fecha_desde);
                    elemento.fecha_hasta = DateTime.Parse(fecha_hasta);
                    elemento.cantidad = short.Parse(cantidad);
                    elemento.precio = float.Parse(precio);
                    elemento.Id_Ralo = 0;
                    try
                    {
                        elemento.Id_Ralo = int.Parse(Id_Ralo);
                    }
                    catch { }

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutRoomingCargosDirectos(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Rooming List - Cargos Agencia

        [WebGet]
        [OperationContract]
        public string GetRoomingCargosAgencia(string id_rool, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetRoomingCargosAgencia(int.Parse(id_rool), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutRoomingCargosAgencia(string id_rlag, string id_rool, string id_cfag, string fecha_desde, string fecha_hasta, string cantidad
            , string precio, string Id_Ralo, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    RoomingCargoAgencia elemento = new RoomingCargoAgencia();
                    try
                    {
                        elemento.id_rlag = int.Parse(id_rlag);
                    }
                    catch
                    {
                        elemento.id_rlag = 0;
                    }
                    elemento.id_rool = int.Parse(id_rool);
                    elemento.id_cfag = int.Parse(id_cfag);
                    elemento.fecha_desde = DateTime.Parse(fecha_desde);
                    elemento.fecha_hasta = DateTime.Parse(fecha_hasta);
                    elemento.cantidad = short.Parse(cantidad);
                    elemento.precio = float.Parse(precio);
                    elemento.Id_Ralo = 0;
                    try
                    {
                        elemento.Id_Ralo = int.Parse(Id_Ralo);
                    }
                    catch { }

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutRoomingCargosAgencia(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Rooming List - Plazos

        [WebGet]
        [OperationContract]
        public string GetRoomingPlazos(string id_room, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return CrazyGenie.DateHourCleaner(Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetRoomingPlazos(int.Parse(id_room), iden)));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutRoomingPlazos(string id_roga, string id_room, string fecha_plazo, string importe, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    RoomingPlazo elemento = new RoomingPlazo();
                    try
                    {
                        elemento.id_roga = int.Parse(id_roga);
                    }
                    catch
                    {
                        elemento.id_roga = 0;
                    }
                    elemento.id_room = int.Parse(id_room);
                    elemento.fecha_plazo = DateTime.Parse(fecha_plazo);
                    elemento.importe = float.Parse(importe);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutRoomingPlazos(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Estadísticas de Composiciones

        [WebGet]
        [OperationContract]
        public string GetEstadisticasComposiciones(string Eliminado, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    EstadisticaComposicion elemento = new EstadisticaComposicion();
                    elemento.id_clist = 0;

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetEstadisticasComposiciones(elemento, Eliminados, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutEstadisticasComposiciones(string id_clist, string titulo, string report, string cierre, string bmulti, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    EstadisticaComposicion elemento = new EstadisticaComposicion();
                    try
                    {
                        elemento.id_clist = int.Parse(id_clist);
                    }
                    catch
                    {
                        elemento.id_clist = 0;
                    }
                    elemento.titulo = titulo;
                    elemento.report = report;
                    try
                    {
                        elemento.cierre = bool.Parse(cierre);
                    }
                    catch
                    {
                        elemento.cierre = false;
                    }
                    //elemento.bmulti = bool.Parse(bmulti);
                    elemento.bmulti = false;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutEstadisticasComposiciones(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Estadísticas de Categorías

        [WebGet]
        [OperationContract]
        public string GetEstadisticasCategorias(string Eliminado, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    EstadisticaCategoria elemento = new EstadisticaCategoria();
                    elemento.id_list = 0;

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetEstadisticasCategorias(elemento, Eliminados, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutEstadisticasCategorias(string id_list, string titulo, string tipo, string usauhab, string uhabnot, string usacont
            , string contnot, string usanaci, string nacinot, string usaralo, string ralonot, string usamone, string monenot, string smone
            , string suhab, string snaci, string scont, string sralo, string usamerc, string smerc, string usaagen, string sagen
            , string usapais, string spais, string orden_uhab, string orden_naci, string orden_cont, string orden_ralo, string orden_mone
            , string cierre, string bmulti, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    EstadisticaCategoria elemento = new EstadisticaCategoria();
                    try
                    {
                        elemento.id_list = int.Parse(id_list);
                    }
                    catch
                    {
                        elemento.id_list = 0;
                    }
                    elemento.titulo = titulo;
                    elemento.tipo = int.Parse(tipo);

                    try { elemento.usaralo = int.Parse(usaralo) == 1 ? true : false; }
                    catch { elemento.usaralo = false; }
                    try { elemento.ralonot = int.Parse(ralonot) == 1 ? true : false; }
                    catch { elemento.ralonot = false; }
                    elemento.sralo = sralo;

                    try { elemento.usamone = int.Parse(usamone) == 1 ? true : false; }
                    catch { elemento.usamone = false; }
                    try { elemento.monenot = int.Parse(monenot) == 1 ? true : false; }
                    catch { elemento.monenot = false; }
                    elemento.smone = smone;

                    try { elemento.usauhab = int.Parse(usauhab) == 1 ? true : false; }
                    catch { elemento.usauhab = false; }
                    try { elemento.uhabnot = int.Parse(uhabnot) == 1 ? true : false; }
                    catch { elemento.uhabnot = false; }
                    elemento.suhab = suhab;

                    try { elemento.usacont = int.Parse(usacont) == 1 ? true : false; }
                    catch { elemento.usacont = false; }
                    try { elemento.contnot = int.Parse(contnot) == 1 ? true : false; }
                    catch { elemento.contnot = false; }
                    elemento.scont = scont;

                    try { elemento.usanaci = int.Parse(usanaci) == 1 ? true : false; }
                    catch { elemento.usanaci = false; }
                    try { elemento.nacinot = int.Parse(nacinot) == 1 ? true : false; }
                    catch { elemento.nacinot = false; }
                    elemento.snaci = snaci;

                    try { elemento.usamerc = int.Parse(usamerc) == 1 ? true : false; }
                    catch { elemento.usamerc = false; }
                    elemento.smerc = smerc;

                    try { elemento.usaagen = int.Parse(usaagen) == 1 ? true : false; }
                    catch { elemento.usaagen = false; }
                    elemento.sagen = sagen;

                    try { elemento.usapais = int.Parse(usapais) == 1 ? true : false; }
                    catch { elemento.usapais = false; }
                    elemento.spais = spais;

                    //elemento.orden_uhab = short.Parse(orden_uhab);
                    //elemento.orden_naci = short.Parse(orden_naci);
                    //elemento.orden_cont = short.Parse(orden_cont);
                    //elemento.orden_ralo = short.Parse(orden_ralo);
                    //elemento.orden_mone = short.Parse(orden_mone);

                    elemento.orden_uhab = 1;
                    elemento.orden_naci = 2;
                    elemento.orden_cont = 3;
                    elemento.orden_ralo = 4;
                    elemento.orden_mone = 5;

                    try { elemento.cierre = int.Parse(cierre) == 1 ? true : false; }
                    catch { elemento.cierre = false; }

                    try { elemento.bmulti = int.Parse(bmulti) == 1 ? true : false; }
                    catch { elemento.bmulti = false; }

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutEstadisticasCategorias(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetEstadisticasCategoriaRalo(string id_list, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetEstadisticasCategoriaRalo(int.Parse(id_list), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetEstadisticasCategoriaMone(string id_list, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetEstadisticasCategoriaMone(int.Parse(id_list), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetEstadisticasCategoriaUhab(string id_list, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetEstadisticasCategoriaUhab(int.Parse(id_list), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetEstadisticasCategoriaCont(string id_list, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetEstadisticasCategoriaCont(int.Parse(id_list), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetEstadisticasCategoriaNaci(string id_list, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetEstadisticasCategoriaNaci(int.Parse(id_list), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetEstadisticasCategoriaMerc(string id_list, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetEstadisticasCategoriaMerc(int.Parse(id_list), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetEstadisticasCategoriaAgen(string id_list, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetEstadisticasCategoriaAgen(int.Parse(id_list), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetEstadisticasCategoriaPais(string id_list, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetEstadisticasCategoriaPais(int.Parse(id_list), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Disponibilidad de Habitaciones

        [WebGet]
        [OperationContract]
        public string GetDisponibilidadHabitacionesDetalle(string id_habi, string fecha, string estado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    string res = "";
                    if (int.Parse(estado) == 0)
                    {
                        string habitacion = Logica.GetInfoDS("SELECT habitacion FROM HOTEHABI WHERE id_habi = " + int.Parse(id_habi), iden)
                            .Tables[0].Rows[0]["habitacion"].ToString();
                        res += "<b>Habitación: <span style=\"color: purple;\">" + habitacion + "</span> " +
                            "- Fecha: <span style=\"color: purple;\">" + string.Format("{0:d}", DateTime.Parse(fecha)) + "</span></b><br /><br />";
                        res += "Disponible";
                    }
                    else
                    {
                        res = Print.DisponibilidadHabitacionesDetalle(int.Parse(id_habi), DateTime.Parse(fecha), int.Parse(estado), iden)
                            .Replace("CambiosHabitacion", L.TIT("CambiosHabitacion"))
                            .Replace("LblFDKCHAHabDest", L.LBL("LblFDKCHAHabDest"))
                            .Replace("LblGENCambiar", L.LBL("LblGENCambiar"));
                    }
                    return res;
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutDHCambioHabitacion(string reserva, string numero, string id_habi_ori, string id_habi_des, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.PutDHCambioHabitacion(int.Parse(reserva), int.Parse(numero), int.Parse(id_habi_ori), int.Parse(id_habi_des), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Detalle del tipo de Habitación

        [WebGet]
        [OperationContract]
        public string GetDetalleTipoHabitacion(string id_thab, string fecha, string modo, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return jqGridGenie.DataTableToJQGridJSON(Logica.GetDetalleTipoHabitacion(int.Parse(id_thab), DateTime.Parse(fecha), int.Parse(modo), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Facturas de Empresas

        [WebGet]
        [OperationContract]
        public string GetFacturaEmpresas(string id_faca, string Fil_nro_folio, string vFil_nro_folio, string Fil_id_cont, string vFil_id_cont, string Fil_referencia
            , string vFil_referencia, string Fil_fecha_ent, string Fil_fecha_ent_modo, string vFil_fecha_ent, string vFil_fecha_ent2
            , string Fil_fecha_sal, string Fil_fecha_sal_modo, string vFil_fecha_sal, string vFil_fecha_sal2
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    FacturaEmpresa elemento = new FacturaEmpresa();
                    elemento.id_faca = int.Parse(id_faca);

                    FacturaEmpresaFiltro elemento2 = new FacturaEmpresaFiltro();
                    elemento2.Fil_nro_folio = false;
                    try
                    {
                        elemento2.Fil_nro_folio = int.Parse(Fil_nro_folio) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_nro_folio = int.Parse(vFil_nro_folio);
                    }
                    catch
                    {
                        elemento2.vFil_nro_folio = 0;
                    }
                    elemento2.Fil_id_cont = false;
                    try
                    {
                        elemento2.Fil_id_cont = int.Parse(Fil_id_cont) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_id_cont = int.Parse(vFil_id_cont);
                    elemento2.Fil_referencia = false;
                    try
                    {
                        elemento2.Fil_referencia = int.Parse(Fil_referencia) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.vFil_referencia = vFil_referencia;
                    elemento2.Fil_fecha_ent = false;
                    try
                    {
                        elemento2.Fil_fecha_ent = int.Parse(Fil_fecha_ent) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.Fil_fecha_ent_modo = int.Parse(Fil_fecha_ent_modo);
                    try
                    {
                        elemento2.vFil_fecha_ent = DateTime.Parse(vFil_fecha_ent);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_ent = DateTime.Today;
                    }
                    try
                    {
                        elemento2.vFil_fecha_ent2 = DateTime.Parse(vFil_fecha_ent2);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_ent2 = DateTime.Today;
                    }
                    elemento2.Fil_fecha_sal = false;
                    try
                    {
                        elemento2.Fil_fecha_sal = int.Parse(Fil_fecha_sal) == 1 ? true : false;
                    }
                    catch { }
                    elemento2.Fil_fecha_sal_modo = int.Parse(Fil_fecha_sal_modo);
                    try
                    {
                        elemento2.vFil_fecha_sal = DateTime.Parse(vFil_fecha_sal);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_sal = DateTime.Today;
                    }
                    try
                    {
                        elemento2.vFil_fecha_sal2 = DateTime.Parse(vFil_fecha_sal2);
                    }
                    catch
                    {
                        elemento2.vFil_fecha_sal2 = DateTime.Today;
                    }

                    if (elemento.id_faca == 0)
                    {
                        return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetFacturaEmpresas(elemento, elemento2, Eliminados, iden));
                    }
                    else
                    {
                        elemento = Logica.GetFacturaEmpresas(elemento.id_faca, Eliminados, iden);

                        string hiddata = "";
                        hiddata += "<input type='hidden' id='HIDFA_id_faca' value='" + elemento.id_faca + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_id_cardex' value='" + elemento.id_cardex + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_id_dcto' value='" + elemento.id_dcto + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_serv_entrada' value='" + elemento.serv_entrada + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_id_dega' value='" + elemento.id_dega + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_id_cont' value='" + elemento.id_cont + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_fecha_desde' value='" + string.Format("{0:d}", elemento.fecha_desde) + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_fecha_hasta' value='" + string.Format("{0:d}", elemento.fecha_hasta) + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_observaciones' value='" + elemento.observaciones + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_referencia' value='" + elemento.referencia + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_fecha_faca' value='" + string.Format("{0:d}", elemento.fecha_faca) + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_nro_cheque' value='" + elemento.nro_cheque + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_tasa' value='" + string.Format("{0:N8}", elemento.tasa) + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_fecha_cobro' value='" + elemento.fecha_cobro + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_modificada' value='" + (elemento.modificada ? 1 : 0) + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_desc_mone' value='" + elemento.desc_mone + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_clave_cardex' value='" + elemento.clave_cardex + "' />";
                        hiddata += "<input type='hidden' id='HIDFA_Prepagado' value='" + string.Format("{0:N2}", elemento.Prepagado) + " (" + elemento.cod_mone + ")' />";
                        hiddata += "<input type='hidden' id='HIDFA_id_cuenta' value='" + elemento.id_cuenta + "' />";
                        return hiddata;
                    }
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutFacturaEmpresas(string id_faca, string id_cardex, string id_dcto, string serv_entrada, string id_dega, string id_cont
            , string fecha_desde, string fecha_hasta, string observaciones, string referencia, string fecha_faca, string nro_cheque, string tasa
            , string fecha_cobro, string modificada, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    FacturaEmpresa elemento = new FacturaEmpresa();
                    try
                    {
                        elemento.id_faca = int.Parse(id_faca);
                    }
                    catch
                    {
                        elemento.id_faca = 0;
                    }
                    elemento.id_cardex = int.Parse(id_cardex);
                    elemento.id_dcto = int.Parse(id_dcto);
                    elemento.serv_entrada = int.Parse(serv_entrada);
                    elemento.id_dega = int.Parse(id_dega);
                    elemento.id_cont = int.Parse(id_cont);
                    elemento.fecha_desde = DateTime.Parse(fecha_desde);
                    elemento.fecha_hasta = DateTime.Parse(fecha_hasta);
                    elemento.observaciones = observaciones;
                    elemento.referencia = referencia;
                    elemento.fecha_faca = DateTime.Now;
                    elemento.nro_cheque = int.Parse(nro_cheque);
                    elemento.tasa = float.Parse(tasa);
                    elemento.fecha_cobro = DateTime.Now;
                    elemento.modificada = false;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutFacturaEmpresas(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetFAServiciosAgenciaCombo(string id_cont, string FecIni, string FecFin, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return HTMLSelects.FAServiciosAgenciaComboOptions(int.Parse(id_cont), DateTime.Parse(FecIni), DateTime.Parse(FecFin), iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetFAServiciosAgenciaXFACombo(string id_faca, string FecIni, string FecFin, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return HTMLSelects.FAServiciosAgenciaXFAComboOptions(int.Parse(id_faca), DateTime.Parse(FecIni), DateTime.Parse(FecFin), iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetFAServiciosAgenciaComboJQ(string id_cont, string FecIni, string FecFin, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return jqGridGenie.DataTableToJQGridCombo(HTMLSelects.FAServiciosAgenciaComboJQGrid(int.Parse(id_cont), DateTime.Parse(FecIni), DateTime.Parse(FecFin), iden))
                        .Replace("value:", "");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetFAServiciosAgenciaPorcComboJQ(string id_cont, string FecIni, string FecFin, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return jqGridGenie.DataTableToJQGridCombo(HTMLSelects.FAServiciosAgenciaPorcComboJQGrid(int.Parse(id_cont), DateTime.Parse(FecIni), DateTime.Parse(FecFin), iden))
                        .Replace("value:", "");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string FAValidar(string id_faca, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int Aux = Logica.FAValidar(int.Parse(id_faca), iden);
                    return Aux == 0 ? L.ERR("PROF_ERROR") : L.MSG("ValidacionCorrecta");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Facturas de Empresas - Conceptos

        [WebGet]
        [OperationContract]
        public string GetFAConceptos(string id_faca, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetFAConceptos(int.Parse(id_faca), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutFAConceptos(string id_facp, string id_faca, string id_ccon, string fecha_desde, string fecha_hasta, string cantidad_p
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    FAConcepto elemento = new FAConcepto();
                    try
                    {
                        elemento.id_facp = int.Parse(id_facp);
                    }
                    catch
                    {
                        elemento.id_facp = 0;
                    }
                    elemento.id_faca = int.Parse(id_faca);
                    elemento.id_ccon = int.Parse(id_ccon);
                    elemento.fecha_desde = DateTime.Parse(fecha_desde);
                    elemento.fecha_hasta = DateTime.Parse(fecha_hasta);
                    elemento.cantidad_p = short.Parse(cantidad_p);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutFAConceptos(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Facturas de Empresas - Conceptos - Precios

        [WebGet]
        [OperationContract]
        public string GetFAConceptoPrecio(string id_facp, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetFAConceptoPrecio(int.Parse(id_facp), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutFAConceptoPrecio(string id_fapp, string id_facp, string fecha_1, string fecha_2, string precio
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    FAConceptoPrecio elemento = new FAConceptoPrecio();
                    try
                    {
                        elemento.id_fapp = int.Parse(id_fapp);
                    }
                    catch
                    {
                        elemento.id_fapp = 0;
                    }
                    elemento.id_facp = int.Parse(id_facp);
                    elemento.fecha_1 = DateTime.Parse(fecha_1);
                    elemento.fecha_2 = DateTime.Parse(fecha_2);
                    elemento.precio = double.Parse(precio);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutFAConceptoPrecio(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Facturas de Empresas - Conceptos - Conceptos Porcentuales

        [WebGet]
        [OperationContract]
        public string GetFAConceptosPorcentual(string id_facp, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetFAConceptosPorcentual(int.Parse(id_facp), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutFAConceptosPorcentual(string id_facs, string id_facp, string id_ccon, string cantidad_s
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    FAConceptoPorcentual elemento = new FAConceptoPorcentual();
                    try
                    {
                        elemento.id_facs = int.Parse(id_facs);
                    }
                    catch
                    {
                        elemento.id_facs = 0;
                    }
                    elemento.id_facp = int.Parse(id_facp);
                    elemento.id_ccon = int.Parse(id_ccon);
                    elemento.cantidad_s = short.Parse(cantidad_s);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutFAConceptosPorcentual(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Facturas de Empresas - Conceptos - Conceptos Porcentuales - Porcentajes

        [WebGet]
        [OperationContract]
        public string GetFAConceptosPorcentualPorc(string id_facs, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetFAConceptosPorcentualPorc(int.Parse(id_facs), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutFAConceptosPorcentualPorc(string id_fasp, string id_facs, string fecha_1, string fecha_2, string porciento
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    FAConceptoPorcentualPorc elemento = new FAConceptoPorcentualPorc();
                    try
                    {
                        elemento.id_fasp = int.Parse(id_fasp);
                    }
                    catch
                    {
                        elemento.id_fasp = 0;
                    }
                    elemento.id_facs = int.Parse(id_facs);
                    elemento.fecha_1 = DateTime.Parse(fecha_1);
                    elemento.fecha_2 = DateTime.Parse(fecha_2);
                    elemento.porciento = float.Parse(porciento);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutFAConceptosPorcentualPorc(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Facturas de Empresas - Habitaciones

        [WebGet]
        [OperationContract]
        public string GetFAHabitaciones(string id_faca, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetFAHabitaciones(0, int.Parse(id_faca), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetFAHabitacionesCombo(string id_faca, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridCombo(HTMLSelects.FAHabitacionesComboJQGrid(int.Parse(id_faca), iden))
                        .Replace("value:", "");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutFAHabitaciones(string id_face, string id_faca, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    FAHabitacion elemento = new FAHabitacion();
                    elemento.id_face = int.Parse(id_face);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutFAHabitaciones(elemento, int.Parse(id_faca), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Facturas de Empresas - No Alojados

        [WebGet]
        [OperationContract]
        public string GetFANoAlojados(string id_faca, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetFANoAlojados(int.Parse(id_faca), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutFANoAlojados(string id_fagh, string id_faca, string fecha_ent, string fecha_sal, string id_ralo
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    FANoAlojado elemento = new FANoAlojado();
                    try
                    {
                        elemento.id_fagh = int.Parse(id_fagh);
                    }
                    catch
                    {
                        elemento.id_fagh = 0;
                    }
                    elemento.id_faca = int.Parse(id_faca);
                    elemento.fecha_ent = DateTime.Parse(fecha_ent);
                    elemento.fecha_sal = DateTime.Parse(fecha_sal);
                    elemento.id_ralo = int.Parse(id_ralo);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutFANoAlojados(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Facturas de Empresas - No Alojados - Nombres

        [WebGet]
        [OperationContract]
        public string GetFANoAlojadosNombres(string id_fagh, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetFANoAlojadosNombres(int.Parse(id_fagh), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutFANoAlojadosNombres(string id_fagn, string id_fagh, string nombre
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    FANoAlojadoNombre elemento = new FANoAlojadoNombre();
                    try
                    {
                        elemento.id_fagn = int.Parse(id_fagn);
                    }
                    catch
                    {
                        elemento.id_fagn = 0;
                    }
                    elemento.id_fagh = int.Parse(id_fagh);
                    elemento.nombre = nombre;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutFANoAlojadosNombres(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Facturas de Empresas - Cargos

        [WebGet]
        [OperationContract]
        public string GetFADetalleCargo(string id_lina, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Print.FACargoDetalle(int.Parse(id_lina), iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetFACargosPrecio(string id_faca, string id_cfag, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int vid_cfag = 0;
                    try
                    {
                        vid_cfag = int.Parse(id_cfag);
                    }
                    catch { }

                    return Logica.GetFACargosPrecio(int.Parse(id_faca), vid_cfag, iden).ToString();
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetFACargosCompPrecio(string id_faca, string id_cfag, string simples, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int vid_cfag = 0;
                    try
                    {
                        vid_cfag = int.Parse(id_cfag);
                    }
                    catch { }

                    return Logica.GetFACargosCompPrecio(int.Parse(id_faca), vid_cfag, simples, iden).ToString();
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetFACargos(string id_faca, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetFACargos(int.Parse(id_faca), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutFACargos(string id_faca, string id_cfag, string id_lina, string simples, string importe, string motivo
            , string cargo, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    FACargo elemento = new FACargo();
                    elemento.id_faca = int.Parse(id_faca);
                    elemento.id_cfag = int.Parse(id_cfag);
                    elemento.id_lina = int.Parse(id_lina);
                    elemento.simples = simples;
                    elemento.importe = float.Parse(importe);
                    elemento.motivo = motivo;
                    elemento.cargo = int.Parse(cargo) == 1 ? true : false;
                    elemento.id_oper = iden.U;

                    int res = -1;

                    res = Logica.PutFACargos(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Facturas de Empresas - Cierre de la Factura

        [WebGet]
        [OperationContract]
        public string GetFATotales(string Modo, string id_faca, string id_dcto, string id_tcob, string entregado_usr, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    float v_entregado_usr = 0;
                    try
                    {
                        v_entregado_usr = float.Parse(entregado_usr);
                    }
                    catch { }

                    DataTable datos = Logica.GetFATotales(int.Parse(Modo), int.Parse(id_faca), int.Parse(id_dcto), int.Parse(id_tcob), v_entregado_usr, iden);
                    return "<input type=\"hidden\" id=\"hidFA_Imp_Total_fra\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Imp_Total_fra"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidFA_Imp_Total_car\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Imp_Total_car"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidFA_Imp_Total\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Imp_Total"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidFA_Depogara\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Depogara"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidFA_apagar\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["apagar"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidFA_Entregado\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Entregado"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidFA_Comision\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Comision"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidFA_Entr_Impo\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Entr_Impo"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidFA_Devolucion\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Devolucion"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidFA_Devol2\" value=\"" + string.Format("{0:N2}", float.Parse(datos.Rows[0]["Devol2"].ToString())) + "\" />" +
                           "<input type=\"hidden\" id=\"hidFA_Habilitar\" value=\"" + datos.Rows[0]["Habilitar"].ToString() + "\" />" +
                           "<input type=\"hidden\" id=\"hidFA_Habil_Devol2\" value=\"" + datos.Rows[0]["Habil_Devol2"].ToString() + "\" />";
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string FACerrar(string id_faca, string id_dcto, string id_tcob, string Entregado, string Devol2, string id_cuenta
            , string TarjCred, string Mes, string Ano, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    FACerrar elemento = new FACerrar();
                    try
                    {
                        elemento.id_faca = int.Parse(id_faca);
                    }
                    catch
                    {
                        elemento.id_faca = 0;
                    }
                    elemento.id_faca = int.Parse(id_faca);
                    elemento.id_dcto = int.Parse(id_dcto);
                    elemento.id_tcob = int.Parse(id_tcob);
                    elemento.Entregado = float.Parse(Entregado);
                    elemento.Devol2 = float.Parse(Devol2);
                    elemento.id_cuenta = int.Parse(id_cuenta);
                    elemento.TarjCred = TarjCred;
                    elemento.Vencim = new DateTime(int.Parse(Ano), int.Parse(Mes), 1);
                    elemento.id_oper = iden.U;

                    int res = -1;

                    res = Logica.FACerrar(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Facturas de Empresas - Proforma Automática

        [WebGet]
        [OperationContract]
        public string GetFAProfAutRooming(string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetFAProfAutRooming(iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetFAProfAutRoomingDet(string id_room, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetFAProfAutRoomingDet(int.Parse(id_room), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutFAProfAut(string id_room, string elementos, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.PutFAProfAut(int.Parse(id_room), elementos, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Preasignación de Habitaciones

        [WebGet]
        [OperationContract]
        public string GetPreasignacionHabitaciones(string Eliminado, string Fil_id_thab, string vFil_id_thab, string Fil_piso, string vFil_piso
            , string Fil_fecha_desde, string Fil_fecha_desde_modo, string vFil_fecha_desde, string vFil_fecha_desde2, string Fil_fecha_hasta, string Fil_fecha_hasta_modo
            , string vFil_fecha_hasta, string vFil_fecha_hasta2, string Fil_observaciones, string vFil_observaciones, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    PreasignacionHabitacion elemento = new PreasignacionHabitacion();
                    elemento.id_sepa = 0;

                    #region Filtrado

                    PreasignacionHabitacionFiltro elemento2 = new PreasignacionHabitacionFiltro();
                    ///////////////////////////////////////////////
                    elemento2.Fil_id_thab = false;
                    try
                    {
                        elemento2.Fil_id_thab = int.Parse(Fil_id_thab) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_thab = int.Parse(vFil_id_thab);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_piso = false;
                    try
                    {
                        elemento2.Fil_piso = int.Parse(Fil_piso) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_piso = vFil_piso;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_fecha_desde = false;
                    try
                    {
                        elemento2.Fil_fecha_desde = int.Parse(Fil_fecha_desde) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.Fil_fecha_desde_modo = int.Parse(Fil_fecha_desde_modo);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_fecha_desde = DateTime.Parse(vFil_fecha_desde);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_fecha_desde2 = DateTime.Parse(vFil_fecha_desde2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_fecha_hasta = false;
                    try
                    {
                        elemento2.Fil_fecha_hasta = int.Parse(Fil_fecha_hasta) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.Fil_fecha_hasta_modo = int.Parse(Fil_fecha_hasta_modo);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_fecha_hasta = DateTime.Parse(vFil_fecha_hasta);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_fecha_hasta2 = DateTime.Parse(vFil_fecha_hasta2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_observaciones = false;
                    try
                    {
                        elemento2.Fil_observaciones = int.Parse(Fil_observaciones) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_observaciones = vFil_observaciones;
                    }
                    catch { }

                    #endregion

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetPreasignacionHabitaciones(elemento, elemento2, Eliminados, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutPreasignacionHabitaciones(string id_sepa, string id_habi, string fecha_ent, string fecha_sal, string nombre
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    PreasignacionHabitacion elemento = new PreasignacionHabitacion();
                    try
                    {
                        elemento.id_sepa = int.Parse(id_sepa);
                    }
                    catch
                    {
                        elemento.id_sepa = 0;
                    }
                    elemento.id_habi = int.Parse(id_habi);
                    elemento.fecha_ent = DateTime.Parse(fecha_ent);
                    elemento.fecha_sal = DateTime.Parse(fecha_sal);
                    elemento.nombre = nombre;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutPreasignacionHabitaciones(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Configuración de Auditoria Nocturna - Informes

        [WebGet]
        [OperationContract]
        public string GetListadosFoliosAbiertos(string modo, string id_zcfg, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DataTable dt;

                    switch (int.Parse(modo))
                    {
                        case 1:
                            dt = Utils.GetListadoLFA(iden);
                            break;
                        case 2:
                            dt = Utils.GetListadoLFAG();
                            break;
                        case 3:
                            dt = Utils.GetListadoLFAT();
                            break;
                        default:
                            dt = Utils.GetListadoLFA(iden);
                            break;
                    }

                    string configuracion = "";
                    int orden = 0;
                    string incluir = "False";

                    try
                    {
                        ConfigAuditoria caud = Logica.GetConfigAuditoria(int.Parse(id_zcfg), false, iden);
                        configuracion = caud.configuracion.Split(',')[0];
                        orden = int.Parse(caud.configuracion.Split(',')[(int.Parse(modo) == 3 || int.Parse(modo) == 2 ? 1 : 2)]);
                        incluir = int.Parse(caud.configuracion.Split(',')[(int.Parse(modo) == 3 ? 2 : 1)]) == 1 ? "True" : "False";
                    }
                    catch { }

                    if (configuracion.Length > 0)
                    {
                        DataTable dt2 = new DataTable();
                        dt2.Columns.Add(new DataColumn("Id"));
                        dt2.Columns.Add(new DataColumn("Codigo"));
                        dt2.Columns.Add(new DataColumn("Descripcion"));
                        dt2.Columns.Add(new DataColumn("Marcado"));
                        dt2.Columns.Add(new DataColumn("Bloqueado"));
                        dt2.Columns.Add(new DataColumn("Eliminado"));
                        dt2.Columns.Add(new DataColumn("Orden"));
                        dt2.Columns.Add(new DataColumn("Incluir"));


                        DataRow drn;

                        int i = 0;
                        foreach (string elem in configuracion.Split(';'))
                        {
                            drn = dt2.NewRow();
                            drn["Id"] = dt.Rows[i]["Id"];
                            drn["Codigo"] = dt.Rows[i]["Codigo"];
                            drn["Descripcion"] = dt.Rows[i]["Descripcion"];
                            try
                            {
                                drn["Marcado"] = int.Parse(elem) == 1 ? "True" : "False";
                            }
                            catch
                            {
                                drn["Marcado"] = dt.Rows[i]["Marcado"];
                            }
                            drn["Bloqueado"] = dt.Rows[i]["Bloqueado"];
                            drn["Eliminado"] = "False";
                            drn["Orden"] = orden;
                            drn["Incluir"] = incluir;
                            dt2.Rows.Add(drn);
                            i += 1;
                        }

                        return Globals.jqGridGenie.DataTableToJQGridJSON(dt2);
                    }
                    else
                    {
                        return Globals.jqGridGenie.DataTableToJQGridJSON(dt);
                    }
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Históricos - Prepagos

        [WebGet]
        [OperationContract]
        public string GetHISTPrepagos(string Fil_Nombre_Depo, string vFil_Nombre_Depo, string Fil_importe, string vFil_importe, string Fil_id_endg, string vFil_id_endg
            , string Fil_id_cont, string vFil_id_cont, string Fil_id_mone, string vFil_id_mone, string Fil_id_oper, string vFil_id_oper, string Fil_doc_pa, string vFil_doc_pa
            , string Fil_fecha_recepcion, string vFil_fecha_recepcion, string vFil_fecha_recepcion2
            , string Fil_fecha_asignacion, string vFil_fecha_asignacion, string vFil_fecha_asignacion2
            , string Fil_fecha_caducidad, string vFil_fecha_caducidad, string vFil_fecha_caducidad2
            , string Fil_fecha_crf, string vFil_fecha_crf, string vFil_fecha_crf2, string Fil_fecha_oficina, string vFil_fecha_oficina, string vFil_fecha_oficina2
            , string Fil_fecha_activos, string vFil_fecha_activos
            , string Fil_fecha_anulacion, string vFil_fecha_anulacion, string vFil_fecha_anulacion2
            , string Fil_nro_dega, string vFil_nro_dega, string vFil_nro_dega2, string Fil_documento_ext, string vFil_documento_ext
            , string Fil_no_tari, string Fil_referencia, string vFil_referencia
            , string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    HISTPrepago elemento = new HISTPrepago(false, "", false, 0, false, 0, false, 0, false, 0, false, 0, false
                        , "", false, DateTime.Now, DateTime.Now, false, DateTime.Now, DateTime.Now, false, DateTime.Now, DateTime.Now
                        , false, DateTime.Now, DateTime.Now, false, DateTime.Now, DateTime.Now
                        , false, DateTime.Now, false, DateTime.Now, DateTime.Now, false, 0, 0, false, "", false, false, "");

                    elemento.Fil_Nombre_Depo = false;
                    try
                    {
                        elemento.Fil_Nombre_Depo = int.Parse(Fil_Nombre_Depo) == 1 ? true : false;
                    }
                    catch { }
                    elemento.vFil_Nombre_Depo = vFil_Nombre_Depo;
                    elemento.Fil_importe = false;
                    try
                    {
                        elemento.Fil_importe = int.Parse(Fil_importe) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_importe = float.Parse(vFil_importe);
                    }
                    catch { }
                    elemento.Fil_id_endg = false;
                    try
                    {
                        elemento.Fil_id_endg = int.Parse(Fil_id_endg) == 1 ? true : false;
                    }
                    catch { }
                    elemento.vFil_id_endg = int.Parse(vFil_id_endg);
                    elemento.Fil_id_cont = false;
                    try
                    {
                        elemento.Fil_id_cont = int.Parse(Fil_id_cont) == 1 ? true : false;
                    }
                    catch { }
                    elemento.vFil_id_cont = int.Parse(vFil_id_cont);
                    elemento.Fil_id_mone = false;
                    try
                    {
                        elemento.Fil_id_mone = int.Parse(Fil_id_mone) == 1 ? true : false;
                    }
                    catch { }
                    elemento.vFil_id_mone = int.Parse(vFil_id_mone);
                    elemento.Fil_id_oper = false;
                    try
                    {
                        elemento.Fil_id_oper = int.Parse(Fil_id_oper) == 1 ? true : false;
                    }
                    catch { }
                    elemento.vFil_id_oper = int.Parse(vFil_id_oper);
                    elemento.Fil_doc_pa = false;
                    try
                    {
                        elemento.Fil_doc_pa = int.Parse(Fil_doc_pa) == 1 ? true : false;
                    }
                    catch { }
                    elemento.vFil_doc_pa = vFil_doc_pa;

                    elemento.Fil_fecha_recepcion = false;
                    try
                    {
                        elemento.Fil_fecha_recepcion = int.Parse(Fil_fecha_recepcion) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_recepcion = DateTime.Parse(vFil_fecha_recepcion);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_recepcion2 = DateTime.Parse(vFil_fecha_recepcion2);
                    }
                    catch { }

                    elemento.Fil_fecha_asignacion = false;
                    try
                    {
                        elemento.Fil_fecha_asignacion = int.Parse(Fil_fecha_asignacion) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_asignacion = DateTime.Parse(vFil_fecha_asignacion);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_asignacion2 = DateTime.Parse(vFil_fecha_asignacion2);
                    }
                    catch { }

                    elemento.Fil_fecha_caducidad = false;
                    try
                    {
                        elemento.Fil_fecha_caducidad = int.Parse(Fil_fecha_caducidad) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_caducidad = DateTime.Parse(vFil_fecha_caducidad);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_caducidad2 = DateTime.Parse(vFil_fecha_caducidad2);
                    }
                    catch { }

                    elemento.Fil_fecha_crf = false;
                    try
                    {
                        elemento.Fil_fecha_crf = int.Parse(Fil_fecha_crf) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_crf = DateTime.Parse(vFil_fecha_crf);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_crf2 = DateTime.Parse(vFil_fecha_crf2);
                    }
                    catch { }

                    elemento.Fil_fecha_oficina = false;
                    try
                    {
                        elemento.Fil_fecha_oficina = int.Parse(Fil_fecha_oficina) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_oficina = DateTime.Parse(vFil_fecha_oficina);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_oficina2 = DateTime.Parse(vFil_fecha_oficina2);
                    }
                    catch { }

                    elemento.Fil_fecha_activos = false;
                    try
                    {
                        elemento.Fil_fecha_activos = int.Parse(Fil_fecha_activos) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_activos = DateTime.Parse(vFil_fecha_activos);
                    }
                    catch { }

                    elemento.Fil_fecha_anulacion = false;
                    try
                    {
                        elemento.Fil_fecha_anulacion = int.Parse(Fil_fecha_anulacion) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_anulacion = DateTime.Parse(vFil_fecha_anulacion);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_anulacion2 = DateTime.Parse(vFil_fecha_anulacion2);
                    }
                    catch { }

                    elemento.Fil_nro_dega = false;
                    try
                    {
                        elemento.Fil_nro_dega = int.Parse(Fil_nro_dega) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_nro_dega = int.Parse(vFil_nro_dega);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_nro_dega2 = int.Parse(vFil_nro_dega2);
                    }
                    catch { }

                    elemento.Fil_documento_ext = false;
                    try
                    {
                        elemento.Fil_documento_ext = int.Parse(Fil_documento_ext) == 1 ? true : false;
                    }
                    catch { }
                    elemento.vFil_documento_ext = vFil_documento_ext;
                    elemento.Fil_no_tari = false;
                    try
                    {
                        elemento.Fil_no_tari = int.Parse(Fil_no_tari) == 1 ? true : false;
                    }
                    catch { }
                    elemento.Fil_referencia = false;
                    try
                    {
                        elemento.Fil_referencia = int.Parse(Fil_referencia) == 1 ? true : false;
                    }
                    catch { }
                    elemento.vFil_referencia = vFil_referencia;

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetHISTPrepagos(1, elemento, iden).Tables[0]);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Históricos - Reservas / Rooming List

        [WebGet]
        [OperationContract]
        public string GetHISTReseRoom(string Fil_nro_reserva, string vFil_nro_reserva, string vFil_nro_reserva2
            , string Fil_nro_rooming, string vFil_nro_rooming, string vFil_nro_rooming2, string Fil_fecha_ent, string vFil_fecha_ent, string vFil_fecha_ent2
            , string Fil_fecha_sal, string vFil_fecha_sal, string vFil_fecha_sal2, string Fil_fecha_anul, string vFil_fecha_anul, string vFil_fecha_anul2
            , string Fil_id_venta, string vFil_id_venta, string Fil_id_agen, string vFil_id_agen, string Fil_id_merc, string vFil_id_merc, string Fil_id_cont
            , string vFil_id_cont, string Fil_id_ralo, string vFil_id_ralo, string Fil_id_oper, string vFil_id_oper, string Fil_id_naci, string vFil_id_naci
            , string Fil_nombre, string vFil_nombre, string Fil_observaciones, string vFil_observaciones, string Fil_referencia, string vFil_referencia
            , string Fil_fecha_reserva, string vFil_fecha_reserva, string vFil_fecha_reserva2, string Fil_id_origen, string vFil_id_origen, string Fil_check_in, string Fil_no_show
            , string Fil_anulada, string Fil_rooming, string Fil_traslado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    HISTReseRoom elemento = new HISTReseRoom(false, 0, 0, false, 0, 0, false, DateTime.Now, DateTime.Now, false, DateTime.Now, DateTime.Now
                        , false, DateTime.Now, DateTime.Now, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, ""
                        , false, "", false, "", false, DateTime.Now, DateTime.Now, false, 0, false, false, false, false, false);

                    elemento.Fil_nro_reserva = false;
                    try
                    {
                        elemento.Fil_nro_reserva = int.Parse(Fil_nro_reserva) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_nro_reserva = int.Parse(vFil_nro_reserva);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_nro_reserva2 = int.Parse(vFil_nro_reserva2);
                    }
                    catch { }

                    elemento.Fil_nro_rooming = false;
                    try
                    {
                        elemento.Fil_nro_rooming = int.Parse(Fil_nro_rooming) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_nro_rooming = int.Parse(vFil_nro_rooming);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_nro_rooming2 = int.Parse(vFil_nro_rooming2);
                    }
                    catch { }

                    elemento.Fil_fecha_ent = false;
                    try
                    {
                        elemento.Fil_fecha_ent = int.Parse(Fil_fecha_ent) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_ent = DateTime.Parse(vFil_fecha_ent);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_ent2 = DateTime.Parse(vFil_fecha_ent2);
                    }
                    catch { }

                    elemento.Fil_fecha_sal = false;
                    try
                    {
                        elemento.Fil_fecha_sal = int.Parse(Fil_fecha_sal) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_sal = DateTime.Parse(vFil_fecha_sal);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_sal2 = DateTime.Parse(vFil_fecha_sal2);
                    }
                    catch { }

                    elemento.Fil_fecha_anul = false;
                    try
                    {
                        elemento.Fil_fecha_anul = int.Parse(Fil_fecha_anul) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_anul = DateTime.Parse(vFil_fecha_anul);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_anul2 = DateTime.Parse(vFil_fecha_anul2);
                    }
                    catch { }

                    elemento.Fil_id_venta = false;
                    try
                    {
                        elemento.Fil_id_venta = int.Parse(Fil_id_venta) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_venta = int.Parse(vFil_id_venta);
                    }
                    catch { }
                    elemento.Fil_id_agen = false;
                    try
                    {
                        elemento.Fil_id_agen = int.Parse(Fil_id_agen) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_agen = int.Parse(vFil_id_agen);
                    }
                    catch { }
                    elemento.Fil_id_merc = false;
                    try
                    {
                        elemento.Fil_id_merc = int.Parse(Fil_id_merc) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_merc = int.Parse(vFil_id_merc);
                    }
                    catch { }
                    elemento.Fil_id_cont = false;
                    try
                    {
                        elemento.Fil_id_cont = int.Parse(Fil_id_cont) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_cont = int.Parse(vFil_id_cont);
                    }
                    catch { }
                    elemento.Fil_id_ralo = false;
                    try
                    {
                        elemento.Fil_id_ralo = int.Parse(Fil_id_ralo) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_ralo = int.Parse(vFil_id_ralo);
                    }
                    catch { }
                    elemento.Fil_id_oper = false;
                    try
                    {
                        elemento.Fil_id_oper = int.Parse(Fil_id_oper) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_oper = int.Parse(vFil_id_oper);
                    }
                    catch { }
                    elemento.Fil_id_naci = false;
                    try
                    {
                        elemento.Fil_id_naci = int.Parse(Fil_id_naci) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_naci = int.Parse(vFil_id_naci);
                    }
                    catch { }
                    elemento.Fil_nombre = false;
                    try
                    {
                        elemento.Fil_nombre = int.Parse(Fil_nombre) == 1 ? true : false;
                    }
                    catch { }
                    elemento.vFil_nombre = vFil_nombre;
                    elemento.Fil_observaciones = false;
                    try
                    {
                        elemento.Fil_observaciones = int.Parse(Fil_observaciones) == 1 ? true : false;
                    }
                    catch { }
                    elemento.vFil_observaciones = vFil_observaciones;
                    elemento.Fil_referencia = false;
                    try
                    {
                        elemento.Fil_referencia = int.Parse(Fil_referencia) == 1 ? true : false;
                    }
                    catch { }
                    elemento.vFil_referencia = vFil_referencia;
                    elemento.Fil_fecha_reserva = false;
                    try
                    {
                        elemento.Fil_fecha_reserva = int.Parse(Fil_fecha_reserva) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_reserva = DateTime.Parse(vFil_fecha_reserva);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_reserva2 = DateTime.Parse(vFil_fecha_reserva2);
                    }
                    catch { }
                    elemento.Fil_id_origen = false;
                    try
                    {
                        elemento.Fil_id_origen = int.Parse(Fil_id_origen) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_origen = int.Parse(vFil_id_origen);
                    }
                    catch { }
                    elemento.Fil_check_in = false;
                    try
                    {
                        elemento.Fil_check_in = int.Parse(Fil_check_in) == 1 ? true : false;
                    }
                    catch { }
                    elemento.Fil_no_show = false;
                    try
                    {
                        elemento.Fil_no_show = int.Parse(Fil_no_show) == 1 ? true : false;
                    }
                    catch { }
                    elemento.Fil_anulada = false;
                    try
                    {
                        elemento.Fil_anulada = int.Parse(Fil_anulada) == 1 ? true : false;
                    }
                    catch { }
                    elemento.Fil_rooming = false;
                    try
                    {
                        elemento.Fil_rooming = int.Parse(Fil_rooming) == 1 ? true : false;
                    }
                    catch { }
                    elemento.Fil_traslado = false;
                    try
                    {
                        elemento.Fil_traslado = int.Parse(Fil_traslado) == 1 ? true : false;
                    }
                    catch { }

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetHISTReseRoom(1, elemento, iden).Tables[0]);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string RecuperarReserva(string id_elem, string tipo, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {

                    bool vtipo = tipo.Equals("RE") ? false : true;

                    int res = -1;

                    res = Logica.RecuperarReserva(int.Parse(id_elem), vtipo, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Históricos - Habitaciones

        [WebGet]
        [OperationContract]
        public string GetHISTHabitaciones(string Fil_id_habi, string vFil_id_habi, string vFil_id_habi2, string Fil_fecha_ent, string vFil_fecha_ent, string vFil_fecha_ent2
            , string Fil_fecha_sal, string vFil_fecha_sal, string vFil_fecha_sal2, string Fil_fecha_estancia, string vFil_fecha_estancia, string vFil_fecha_estancia2
            , string Fil_id_agen, string vFil_id_agen, string Fil_id_cont, string vFil_id_cont, string Fil_id_merc, string vFil_id_merc, string Fil_id_venta
            , string vFil_id_venta, string Fil_nro_reserva, string vFil_nro_reserva, string Fil_nro_rooming, string vFil_nro_rooming, string Fil_id_ralo
            , string vFil_id_ralo, string Fil_id_mone, string vFil_id_mone, string Fil_id_thab, string vFil_id_thab, string Fil_vip, string vFil_vip
            , string Fil_credito, string vFil_credito, string Fil_id_oper, string vFil_id_oper, string Fil_referencia, string vFil_referencia, string Fil_grupo
            , string vFil_grupo, string Fil_nro_faca, string vFil_nro_faca, string Fil_observaciones, string vFil_observaciones, string Fil_id_care, string vFil_id_care
            , string Fil_check_in_anul, string Fil_salidas_hotelera, string Fil_id_origen, string vFil_id_origen, string Fil_nombre_reserv, string vFil_nombre_reserv
            , string detallar_estancias, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    HISTHabitacion elemento = new HISTHabitacion(false, 0, 0, false, DateTime.Now, DateTime.Now, false, DateTime.Now, DateTime.Now
                        , false, DateTime.Now, DateTime.Now, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0
                        , false, false, false, false, false, 0, false, "", false, "", false, 0, false, "", false, 0, false, false, false, 0, false, "", false);

                    ///////////////////////////////////////////////
                    elemento.Fil_id_habi = false;
                    try
                    {
                        elemento.Fil_id_habi = int.Parse(Fil_id_habi) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_habi = int.Parse(vFil_id_habi);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_habi2 = int.Parse(vFil_id_habi2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_fecha_ent = false;
                    try
                    {
                        elemento.Fil_fecha_ent = int.Parse(Fil_fecha_ent) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_ent = DateTime.Parse(vFil_fecha_ent);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_ent2 = DateTime.Parse(vFil_fecha_ent2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_fecha_sal = false;
                    try
                    {
                        elemento.Fil_fecha_sal = int.Parse(Fil_fecha_sal) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_sal = DateTime.Parse(vFil_fecha_sal);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_sal2 = DateTime.Parse(vFil_fecha_sal2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_fecha_estancia = false;
                    try
                    {
                        elemento.Fil_fecha_estancia = int.Parse(Fil_fecha_estancia) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_estancia = DateTime.Parse(vFil_fecha_estancia);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_estancia2 = DateTime.Parse(vFil_fecha_estancia2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_id_agen = false;
                    try
                    {
                        elemento.Fil_id_agen = int.Parse(Fil_id_agen) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_agen = int.Parse(vFil_id_agen);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_id_cont = false;
                    try
                    {
                        elemento.Fil_id_cont = int.Parse(Fil_id_cont) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_cont = int.Parse(vFil_id_cont);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_id_merc = false;
                    try
                    {
                        elemento.Fil_id_merc = int.Parse(Fil_id_merc) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_merc = int.Parse(vFil_id_merc);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_id_venta = false;
                    try
                    {
                        elemento.Fil_id_venta = int.Parse(Fil_id_venta) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_venta = int.Parse(vFil_id_venta);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_nro_reserva = false;
                    try
                    {
                        elemento.Fil_nro_reserva = int.Parse(Fil_nro_reserva) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_nro_reserva = int.Parse(vFil_nro_reserva);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_nro_rooming = false;
                    try
                    {
                        elemento.Fil_nro_rooming = int.Parse(Fil_nro_rooming) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_nro_rooming = int.Parse(vFil_nro_rooming);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_id_ralo = false;
                    try
                    {
                        elemento.Fil_id_ralo = int.Parse(Fil_id_ralo) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_ralo = int.Parse(vFil_id_ralo);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_id_mone = false;
                    try
                    {
                        elemento.Fil_id_mone = int.Parse(Fil_id_mone) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_mone = int.Parse(vFil_id_mone);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_id_thab = false;
                    try
                    {
                        elemento.Fil_id_thab = int.Parse(Fil_id_thab) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_thab = int.Parse(vFil_id_thab);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_vip = false;
                    try
                    {
                        elemento.Fil_vip = int.Parse(Fil_vip) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_vip = int.Parse(vFil_vip) == 1 ? true : false;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_credito = false;
                    try
                    {
                        elemento.Fil_credito = int.Parse(Fil_credito) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_credito = int.Parse(vFil_credito) == 1 ? true : false;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_id_oper = false;
                    try
                    {
                        elemento.Fil_id_oper = int.Parse(Fil_id_oper) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_oper = int.Parse(vFil_id_oper);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_referencia = false;
                    try
                    {
                        elemento.Fil_referencia = int.Parse(Fil_referencia) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_referencia = vFil_referencia;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_grupo = false;
                    try
                    {
                        elemento.Fil_grupo = int.Parse(Fil_grupo) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_grupo = vFil_grupo;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_nro_faca = false;
                    try
                    {
                        elemento.Fil_nro_faca = int.Parse(Fil_nro_faca) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_nro_faca = int.Parse(vFil_nro_faca);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_observaciones = false;
                    try
                    {
                        elemento.Fil_observaciones = int.Parse(Fil_observaciones) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_observaciones = vFil_observaciones;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_id_care = false;
                    try
                    {
                        elemento.Fil_id_care = int.Parse(Fil_id_care) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_care = int.Parse(vFil_id_care);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_check_in_anul = false;
                    try
                    {
                        elemento.Fil_check_in_anul = int.Parse(Fil_check_in_anul) == 1 ? true : false;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_salidas_hotelera = false;
                    try
                    {
                        elemento.Fil_salidas_hotelera = int.Parse(Fil_salidas_hotelera) == 1 ? true : false;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_id_origen = false;
                    try
                    {
                        elemento.Fil_id_origen = int.Parse(Fil_id_origen) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_origen = int.Parse(vFil_id_origen);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_nombre_reserv = false;
                    try
                    {
                        elemento.Fil_nombre_reserv = int.Parse(Fil_nombre_reserv) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_nombre_reserv = vFil_nombre_reserv;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    try
                    {
                        elemento.detallar_estancias = int.Parse(detallar_estancias) == 1 ? true : false;
                    }
                    catch { }

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetHISTHabitaciones(1, elemento, iden).Tables[0]);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Históricos - Folios Externos

        [WebGet]
        [OperationContract]
        public string GetHISTFoliosExternos(string Fil_id_tarj, string vFil_id_tarj, string vFil_id_tarj2, string Fil_nombre, string vFil_nombre
            , string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    HISTFolioExterno elemento = new HISTFolioExterno(false, 0, 0, false, "");

                    elemento.Fil_id_tarj = false;
                    try
                    {
                        elemento.Fil_id_tarj = int.Parse(Fil_id_tarj) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_tarj = int.Parse(vFil_id_tarj);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_tarj2 = int.Parse(vFil_id_tarj2);
                    }
                    catch { }

                    elemento.Fil_nombre = false;
                    try
                    {
                        elemento.Fil_nombre = int.Parse(Fil_nombre) == 1 ? true : false;
                    }
                    catch { }
                    elemento.vFil_nombre = vFil_nombre;

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetHISTFoliosExternos(1, elemento, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Históricos - Clientes

        [WebGet]
        [OperationContract]
        public string GetHISTClientes(string Fil_nombre, string vFil_nombre, string Fil_id_carp, string vFil_id_carp, string Fil_pasaporte, string vFil_pasaporte
            , string Fil_id_naci, string vFil_id_naci, string Fil_ckin_anulado, string vFil_ckin_anulado, string Fil_fecha_ent, string vFil_fecha_ent, string vFil_fecha_ent2
            , string Fil_fecha_sal, string vFil_fecha_sal, string vFil_fecha_sal2, string Fil_salidas_hotelera, string vFil_salidas_hotelera, string Fil_adulto, string vFil_adulto
            , string Fil_genero, string vFil_genero, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    HISTCliente elemento = new HISTCliente(false, "", false, 0, false, "", false, 0, false, false, DateTime.Now, DateTime.Now, false
                        , DateTime.Now, DateTime.Now, false, false, false, false, false);

                    ///////////////////////////////////////////////
                    elemento.Fil_nombre = false;
                    try
                    {
                        elemento.Fil_nombre = int.Parse(Fil_nombre) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_nombre = vFil_nombre;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_id_carp = false;
                    try
                    {
                        elemento.Fil_id_carp = int.Parse(Fil_id_carp) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_carp = int.Parse(vFil_id_carp);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_pasaporte = false;
                    try
                    {
                        elemento.Fil_pasaporte = int.Parse(Fil_pasaporte) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_pasaporte = vFil_pasaporte;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_id_naci = false;
                    try
                    {
                        elemento.Fil_id_naci = int.Parse(Fil_id_naci) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_id_naci = int.Parse(vFil_id_naci);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_ckin_anulado = false;
                    try
                    {
                        elemento.Fil_ckin_anulado = int.Parse(Fil_ckin_anulado) == 1 ? true : false;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_fecha_ent = false;
                    try
                    {
                        elemento.Fil_fecha_ent = int.Parse(Fil_fecha_ent) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_ent = DateTime.Parse(vFil_fecha_ent);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_ent2 = DateTime.Parse(vFil_fecha_ent2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_fecha_sal = false;
                    try
                    {
                        elemento.Fil_fecha_sal = int.Parse(Fil_fecha_sal) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_sal = DateTime.Parse(vFil_fecha_sal);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_sal2 = DateTime.Parse(vFil_fecha_sal2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_salidas_hotelera = false;
                    try
                    {
                        elemento.Fil_salidas_hotelera = int.Parse(Fil_salidas_hotelera) == 1 ? true : false;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_adulto = false;
                    try
                    {
                        elemento.Fil_adulto = int.Parse(Fil_adulto) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_adulto = int.Parse(vFil_adulto) == 1 ? true : false;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_genero = false;
                    try
                    {
                        elemento.Fil_genero = int.Parse(Fil_genero) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_genero = int.Parse(vFil_genero) == 1 ? true : false;
                    }
                    catch { }

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetHISTClientes(1, elemento, iden).Tables[0]);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Históricos - Repitentes

        [WebGet]
        [OperationContract]
        public string GetHISTRepitentes(string Fil_nombre, string Fil_perfil, string Fil_pasaporte
            , string Fil_fecha_ent, string vFil_fecha_ent, string vFil_fecha_ent2, string Fil_fecha_sal, string vFil_fecha_sal, string vFil_fecha_sal2
            , string Fil_estancias, string vFil_estancias, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    HISTRepitente elemento = new HISTRepitente(false, false, false, false, DateTime.Now, DateTime.Now, false, DateTime.Now, DateTime.Now, false, 0);

                    ///////////////////////////////////////////////
                    elemento.Fil_nombre = false;
                    try
                    {
                        elemento.Fil_nombre = int.Parse(Fil_nombre) == 1 ? true : false;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_perfil = false;
                    try
                    {
                        elemento.Fil_perfil = int.Parse(Fil_perfil) == 1 ? true : false;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_pasaporte = false;
                    try
                    {
                        elemento.Fil_pasaporte = int.Parse(Fil_pasaporte) == 1 ? true : false;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_fecha_ent = false;
                    try
                    {
                        elemento.Fil_fecha_ent = int.Parse(Fil_fecha_ent) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_ent = DateTime.Parse(vFil_fecha_ent);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_ent2 = DateTime.Parse(vFil_fecha_ent2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_fecha_sal = false;
                    try
                    {
                        elemento.Fil_fecha_sal = int.Parse(Fil_fecha_sal) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_sal = DateTime.Parse(vFil_fecha_sal);
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_fecha_sal2 = DateTime.Parse(vFil_fecha_sal2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento.Fil_estancias = false;
                    try
                    {
                        elemento.Fil_estancias = int.Parse(Fil_estancias) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento.vFil_estancias = int.Parse(vFil_estancias);
                    }
                    catch { }

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetHISTRepitentes(1, elemento, iden).Tables[0]);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Listados de Folios Abiertos

        [WebGet]
        [OperationContract]
        public string GetListadosFoliosAbiertosUsuario(string modo, string Dominio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DataTable dt;

                    switch (int.Parse(modo))
                    {
                        case 1:
                            dt = Utils.GetListadoLFA(iden);
                            break;
                        case 2:
                            dt = Utils.GetListadoLFAG();
                            break;
                        case 3:
                            dt = Utils.GetListadoLFAT();
                            break;
                        default:
                            dt = Utils.GetListadoLFA(iden);
                            break;
                    }

                    string configuracion = "";
                    int orden = 0;
                    string incluir = "False";

                    try
                    {
                        string cfg = Logica.GetConfigLFAUsuario(int.Parse(modo), iden);
                        configuracion = cfg.Split(',')[0];
                        orden = int.Parse(cfg.Split(',')[(int.Parse(modo) == 3 || int.Parse(modo) == 2 ? 1 : 2)]);
                        incluir = int.Parse(cfg.Split(',')[(int.Parse(modo) == 3 ? 2 : 1)]) == 1 ? "True" : "False";
                    }
                    catch { }

                    if (configuracion.Length > 0)
                    {
                        DataTable dt2 = new DataTable();
                        dt2.Columns.Add(new DataColumn("Id"));
                        dt2.Columns.Add(new DataColumn("Codigo"));
                        dt2.Columns.Add(new DataColumn("Descripcion"));
                        dt2.Columns.Add(new DataColumn("Marcado"));
                        dt2.Columns.Add(new DataColumn("Bloqueado"));
                        dt2.Columns.Add(new DataColumn("Eliminado"));
                        dt2.Columns.Add(new DataColumn("Orden"));
                        dt2.Columns.Add(new DataColumn("Incluir"));


                        DataRow drn;

                        int i = 0;
                        foreach (string elem in configuracion.Split(';'))
                        {
                            drn = dt2.NewRow();
                            drn["Id"] = dt.Rows[i]["Id"];
                            drn["Codigo"] = dt.Rows[i]["Codigo"];
                            drn["Descripcion"] = dt.Rows[i]["Descripcion"];
                            try
                            {
                                drn["Marcado"] = int.Parse(elem) == 1 ? "True" : "False";
                            }
                            catch
                            {
                                drn["Marcado"] = dt.Rows[i]["Marcado"];
                            }
                            drn["Bloqueado"] = dt.Rows[i]["Bloqueado"];
                            drn["Eliminado"] = "False";
                            drn["Orden"] = orden;
                            drn["Incluir"] = incluir;
                            dt2.Rows.Add(drn);
                            i += 1;
                        }

                        return Globals.jqGridGenie.DataTableToJQGridJSON(dt2);
                    }
                    else
                    {
                        return Globals.jqGridGenie.DataTableToJQGridJSON(dt);
                    }
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Correcciones a Folios Cerrados

        [WebGet]
        [OperationContract]
        public string GetFolioMone(string nro_folio, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    string Mone = "0";
                    try
                    {
                        Mone = Logica.GetInfo("SELECT id_mone FROM HOTEHFAC WHERE nro_cheque = " + int.Parse(nro_folio), iden)
                            .Rows[0]["id_mone"].ToString();
                    }
                    catch { }
                    return Mone;
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetCorreccionesFolios(string nro_folio, string reload, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool vreload = false;
                    try
                    {
                        vreload = int.Parse(reload) == 0 ? false : true;
                    }
                    catch { }

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetCorreccionesFolios(int.Parse(nro_folio), vreload, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutCorreccionesFolios(string id_corr, string id_hfco, string id_cuenta, string id_tcob
            , string id_hfac, string tarj_cred, string entregado, string propina, string comision, string aplicado
            , string vuelto, string tasa_monpag, string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    CorreccionFolio elemento = new CorreccionFolio();
                    try
                    {
                        elemento.id_corr = int.Parse(id_corr);
                    }
                    catch
                    {
                        elemento.id_corr = 0;
                    }
                    elemento.id_hfco = int.Parse(id_hfco);
                    elemento.id_cuenta = int.Parse(id_cuenta);
                    elemento.id_tcob = int.Parse(id_tcob);
                    elemento.id_hfac = int.Parse(id_hfac);
                    elemento.tarj_cred = tarj_cred;
                    elemento.entregado = float.Parse(entregado);
                    elemento.propina = float.Parse(propina);
                    elemento.comision = float.Parse(comision);
                    elemento.aplicado = 0;
                    elemento.vuelto = float.Parse(vuelto);
                    elemento.tasa_monpag = float.Parse(tasa_monpag);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutCorreccionesFolios(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string ApplyCorreccionesFolios(string id_hfac, string motivo, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.ApplyCorreccionesFolios(int.Parse(id_hfac), motivo, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Notas

        [WebGet]
        [OperationContract]
        public string GetNotaFolios(string nro_folio, string reload, string credito, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DataTable dt = Logica.GetNotaFolio(int.Parse(nro_folio), int.Parse(reload) == 1 ? true : false, int.Parse(credito) == 1 ? true : false, iden);
                    string hiddata = "";
                    hiddata += "<input type='hidden' id='HIDNota_id_hfac' value='" + dt.Rows[0]["id_hfac"].ToString() + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_nro_documento' value='" + dt.Rows[0]["nro_documento"].ToString() + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_id_mone' value='" + dt.Rows[0]["id_mone"].ToString() + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_origen' value='" + dt.Rows[0]["origen"].ToString() + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_tasa' value='" + string.Format("{0:N6}", float.Parse(dt.Rows[0]["tasa"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_comision' value='" + string.Format("{0:N2}", float.Parse(dt.Rows[0]["comision"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_convertible' value='" + (bool.Parse(dt.Rows[0]["convertible"].ToString()) ? 1 : 0) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_fecha_cierre' value='" + string.Format("{0:d}", DateTime.Parse(dt.Rows[0]["fecha_cierre"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_cod_mone' value='" + dt.Rows[0]["cod_mone"].ToString() + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_tipo_fact' value='" +
                        dt.Rows[0]["tipo_fact"].ToString().Replace("LblGENCompany", L.LBL("LblGENCompany"))
                        .Replace("LblFDKNOHabi", L.LBL("LblFDKNOHabi"))
                        .Replace("LblFDKNOFE", L.LBL("LblFDKNOFE")).ToUpper()
                        + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_nombre' value='" + dt.Rows[0]["nombre"].ToString() + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_id_cont' value='" + dt.Rows[0]["id_cont"].ToString() + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_tarifa' value='" + dt.Rows[0]["tarifa"].ToString() + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_desde' value='" + string.Format("{0:d}", DateTime.Parse(dt.Rows[0]["desde"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_hasta' value='" + string.Format("{0:d}", DateTime.Parse(dt.Rows[0]["hasta"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_impo_folio' value='" + string.Format("{0:N2}", float.Parse(dt.Rows[0]["impo_folio"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_impo_notas' value='" + string.Format("{0:N2}", float.Parse(dt.Rows[0]["impo_notas"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_total_a' value='" + string.Format("{0:N2}", float.Parse(dt.Rows[0]["total_a"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_impo_nota' value='" + string.Format("{0:N2}", float.Parse(dt.Rows[0]["impo_nota"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_total_b' value='" + string.Format("{0:N2}", float.Parse(dt.Rows[0]["total_b"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_entregado' value='" + string.Format("{0:N2}", float.Parse(dt.Rows[0]["entregado"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_restante' value='" + string.Format("{0:N2}", float.Parse(dt.Rows[0]["restante"].ToString())) + "' />";
                    hiddata += "<input type='hidden' id='HIDNota_id_cuenta' value='" + dt.Rows[0]["id_cuenta"].ToString() + "' />";
                    return hiddata;
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetNotaServicios(string id_hfac, string credito, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DataTable dt = Logica.GetNotaServicios(int.Parse(id_hfac), int.Parse(credito) == 1 ? true : false, iden);
                    return "{ \"h\": \"" + CrazyGenie.JSONPurifier(Hiddens.NotaServicios(dt))
                        + "\", \"c\": \"" + CrazyGenie.JSONPurifier(jqGridGenie.DataTableToJQGridCombo(HTMLSelects.NotaServiciosComboJQ(dt)).Replace("value:", "")) + "\" }";
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutNotasEmitir(string id_hfac, string id_tcob, string tarj_cred, string fec_venc, string id_cuenta, string motivo, string credito
            , string entregado, string tasa, string id_oper, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    NotaEmitir elemento = new NotaEmitir();
                    elemento.id_hfac = int.Parse(id_hfac);
                    //elemento.id_tcob = int.Parse(id_tcob);
                    //elemento.tarj_cred = tarj_cred;
                    //elemento.fec_venc = new DateTime(2000, 1, 1);
                    //try
                    //{
                    //    elemento.fec_venc = DateTime.Parse(fec_venc);
                    //}
                    //catch { }
                    //elemento.id_cuenta = int.Parse(id_cuenta);
                    elemento.motivo = motivo;
                    elemento.credito = int.Parse(credito) == 1 ? true : false;
                    //elemento.entregado = float.Parse(entregado);
                    //elemento.tasa = float.Parse(tasa);
                    elemento.id_oper = iden.U;

                    int res = -1;

                    res = Logica.PutNotasEmitir(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Notas - Detalles

        [WebGet]
        [OperationContract]
        public string GetNotaDetalles(string id_hfac, string credito, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetNotaDetalles(int.Parse(id_hfac), int.Parse(credito) == 1 ? true : false, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutNotaDetalles(string id_lnot, string id_hfac, string id_pre0, string importe_nota, string tasa
            , string tasa_mb_co, string Eliminado, string credito, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    NotaDetalle elemento = new NotaDetalle();
                    try
                    {
                        elemento.id_lnot = int.Parse(id_lnot);
                    }
                    catch
                    {
                        elemento.id_lnot = 0;
                    }
                    elemento.id_hfac = int.Parse(id_hfac);
                    elemento.id_pre0 = int.Parse(id_pre0);
                    elemento.importe_nota = double.Parse(importe_nota);
                    elemento.tasa = float.Parse(tasa);
                    elemento.tasa_mb_co = 1;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutNotaDetalles(elemento, int.Parse(credito) == 1 ? true : false, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                if (ex.Message.Contains("NOTAS_MESS02"))
                {
                    return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + ex.Message
                        .Replace("NOTAS_MESS02", L.ERR("NOTAS_MESS02")).Replace("NOTAS_MESS05", L.ERR("NOTAS_MESS05"))
                        .Replace("NOTAS_MESS06", L.ERR("NOTAS_MESS06")).Replace("[", "").Replace("]", "") + "</p>";
                }
                else
                {
                    return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
                }
            }
        }


        #endregion

        #region Notas - Formas de Pago

        [WebGet]
        [OperationContract]
        public string GetNotaCobros(string id_hfac, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetNotaCobros(int.Parse(id_hfac), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutNotaCobros(string id_noco, string id_hfac, string id_tcob, string id_cuenta, string tarj_cred, string entregado
            , string tasa_monpag, string comision, string aplicado, string Eliminado, string mes, string ano, string credito
            , string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    NotaCobro elemento = new NotaCobro();
                    try
                    {
                        elemento.id_noco = int.Parse(id_noco);
                    }
                    catch
                    {
                        elemento.id_noco = 0;
                    }
                    elemento.id_hfac = int.Parse(id_hfac);
                    elemento.id_tcob = int.Parse(id_tcob);
                    elemento.id_cuenta = int.Parse(id_cuenta);
                    elemento.tarj_cred = tarj_cred;
                    elemento.entregado = double.Parse(entregado);
                    elemento.tasa_monpag = float.Parse(tasa_monpag);
                    elemento.comision = 0;
                    elemento.aplicado = 0;
                    try
                    {
                        elemento.fec_venc = new DateTime(int.Parse(ano), int.Parse(mes), 1);
                    }
                    catch
                    {
                        elemento.fec_venc = new DateTime(1900, 1, 1);
                    }

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutNotaCobros(elemento, int.Parse(credito) == 1 ? true : false, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Notas - Anulacion Automática

        [WebGet]
        [OperationContract]
        public string NOAnulacionAutomatica(string id_hfac, string tasa, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.NOAnulacionAutomatica(int.Parse(id_hfac), float.Parse(tasa), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                if (ex.Message.Contains("NOTAS_MESS02"))
                {
                    return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + ex.Message
                        .Replace("NOTAS_MESS02", L.ERR("NOTAS_MESS02")).Replace("NOTAS_MESS05", L.ERR("NOTAS_MESS05"))
                        .Replace("NOTAS_MESS06", L.ERR("NOTAS_MESS06")).Replace("[", "").Replace("]", "") + "</p>";
                }
                else
                {
                    return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
                }
            }
        }

        #endregion

        #region Estado de las Habitaciones

        [WebGet]
        [OperationContract]
        public string GetEstadoHabitaciones(string Modo, string FilEstado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetEstadoHabitaciones(int.Parse(Modo), int.Parse(FilEstado), false, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutEstadoHabitaciones(string id_habi, string sucia, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    bool vsucia = false;
                    try
                    {
                        vsucia = int.Parse(sucia) == 1 ? true : false;
                    }
                    catch { }

                    res = Logica.PutEstadoHabitaciones(int.Parse(id_habi), vsucia, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string EstadoHabitacionesClean(string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.EstadoHabitacionesClean(iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Discrepancias

        [WebGet]
        [OperationContract]
        public string GetDiscrepancias(string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetDiscrepancias(iden.U, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutDiscrepancias(string id_habi, string estado, string limpia, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    Discrepancia elemento = new Discrepancia();
                    try
                    {
                        elemento.id_oper = iden.U;
                    }
                    catch
                    {
                        elemento.id_oper = 0;
                    }
                    elemento.id_oper = iden.U;
                    elemento.id_habi = int.Parse(id_habi);
                    elemento.estado = int.Parse(estado);
                    elemento.limpia = false;
                    try
                    {
                        elemento.limpia = int.Parse(limpia) == 1 ? true : false;
                    }
                    catch { }

                    int res = -1;

                    res = Logica.PutDiscrepancias(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Distribución de Camareras

        [WebGet]
        [OperationContract]
        public string GetDistribucionCamareras(string Modo, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetDistribucionCamareras(int.Parse(Modo), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Distribución de Camareras - Detalle

        [WebGet]
        [OperationContract]
        public string GetDistribucionCamarerasDetalle(string id_cama, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetDistribucionCamarerasDetalle(int.Parse(id_cama), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutDistribucionCamarerasDetalle(string id_raca, string id_cama, string id_rango
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DistribucionCamarera elemento = new DistribucionCamarera();
                    try
                    {
                        elemento.id_raca = int.Parse(id_raca);
                    }
                    catch
                    {
                        elemento.id_raca = 0;
                    }
                    elemento.id_cama = short.Parse(id_cama);
                    elemento.id_rango = int.Parse(id_rango);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutDistribucionCamarerasDetalle(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Bloqueo de Habitaciones

        [WebGet]
        [OperationContract]
        public string GetBloqueoHabitaciones(string Eliminado, string Fil_id_thab, string vFil_id_thab, string Fil_piso, string vFil_piso
            , string Fil_fecha_desde, string Fil_fecha_desde_modo, string vFil_fecha_desde, string vFil_fecha_desde2, string Fil_fecha_hasta, string Fil_fecha_hasta_modo
            , string vFil_fecha_hasta, string vFil_fecha_hasta2, string Fil_observaciones, string vFil_observaciones, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Eliminados = false;
                    try
                    {
                        Eliminados = int.Parse(Eliminado) == 0 ? false : true;
                    }
                    catch { }

                    BloqueoHabitacion elemento = new BloqueoHabitacion();
                    elemento.id_ford = 0;

                    #region Filtrado

                    BloqueoHabitacionFiltro elemento2 = new BloqueoHabitacionFiltro();
                    ///////////////////////////////////////////////
                    elemento2.Fil_id_thab = false;
                    try
                    {
                        elemento2.Fil_id_thab = int.Parse(Fil_id_thab) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_thab = int.Parse(vFil_id_thab);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_piso = false;
                    try
                    {
                        elemento2.Fil_piso = int.Parse(Fil_piso) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_piso = vFil_piso;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_fecha_desde = false;
                    try
                    {
                        elemento2.Fil_fecha_desde = int.Parse(Fil_fecha_desde) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.Fil_fecha_desde_modo = int.Parse(Fil_fecha_desde_modo);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_fecha_desde = DateTime.Parse(vFil_fecha_desde);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_fecha_desde2 = DateTime.Parse(vFil_fecha_desde2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_fecha_hasta = false;
                    try
                    {
                        elemento2.Fil_fecha_hasta = int.Parse(Fil_fecha_hasta) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.Fil_fecha_hasta_modo = int.Parse(Fil_fecha_hasta_modo);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_fecha_hasta = DateTime.Parse(vFil_fecha_hasta);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_fecha_hasta2 = DateTime.Parse(vFil_fecha_hasta2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_observaciones = false;
                    try
                    {
                        elemento2.Fil_observaciones = int.Parse(Fil_observaciones) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_observaciones = vFil_observaciones;
                    }
                    catch { }

                    #endregion

                    return CrazyGenie.DateHourCleaner(Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetBloqueoHabitaciones(elemento, elemento2, Eliminados, iden)));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetBloqueoHabitacionesHabis(string id_thab, string piso, string fecha_desde, string fecha_hasta, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int vid_thab = 0;
                    DateTime vfecha_desde = DateTime.Parse(fecha_desde);
                    DateTime vfecha_hasta = DateTime.Parse(fecha_hasta);
                    DateTime fecha_hotelera = Logica.GetFechaHotelera(iden);

                    if (vfecha_desde.Date > vfecha_hasta.Date)
                    {
                        throw new Exception("ERR_PUT_OH_CARGAUT_001");
                    }

                    if (vfecha_desde.Date < fecha_hotelera.Date)
                    {
                        throw new Exception("SEPA_DESDE_TABL");
                    }

                    return CrazyGenie.DateHourCleaner(Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetBloqueoHabitacionesHabis(vid_thab, piso, vfecha_desde, vfecha_hasta, iden)));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutBloqueoHabitaciones(string id_ford, string id_habi, string fecha_desde, string fecha_hasta, string observaciones
            , string Eliminado, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    BloqueoHabitacion elemento = new BloqueoHabitacion();
                    try
                    {
                        elemento.id_ford = int.Parse(id_ford);
                    }
                    catch
                    {
                        elemento.id_ford = 0;
                    }
                    elemento.id_habi = int.Parse(id_habi);
                    elemento.fecha_desde = DateTime.Parse(fecha_desde);
                    elemento.fecha_hasta = DateTime.Parse(fecha_hasta);
                    elemento.observaciones = observaciones;

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutBloqueoHabitaciones(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutBloqueoHabitacionesMultiple(string elementos, string fecha_desde, string fecha_hasta, string observaciones
            , string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {

                    if (string.IsNullOrEmpty(observaciones))
                    {
                        throw new Exception("ERR_PUT_OHCHA_001");
                    }

                    DateTime vfecha_desde = DateTime.Parse(fecha_desde);
                    DateTime vfecha_hasta = DateTime.Parse(fecha_hasta);
                    DateTime fecha_hotelera = Logica.GetFechaHotelera(iden);

                    if (vfecha_desde.Date > vfecha_hasta.Date)
                    {
                        throw new Exception("ERR_PUT_OH_CARGAUT_001");
                    }

                    if (vfecha_desde.Date < fecha_hotelera.Date)
                    {
                        throw new Exception("SEPA_DESDE_TABL");
                    }

                    string[] habis = elementos.Split(',');

                    bool Correcto = true;

                    foreach (string habi in habis)
                    {

                        BloqueoHabitacion elemento = new BloqueoHabitacion();

                        elemento.id_ford = 0;
                        elemento.id_habi = int.Parse(habi);
                        elemento.fecha_desde = vfecha_desde;
                        elemento.fecha_hasta = vfecha_hasta;
                        elemento.observaciones = observaciones;

                        elemento.eliminado = false;

                        int res = -1;

                        res = Logica.PutBloqueoHabitaciones(elemento, iden);

                        if (res == -2147483647)
                        {
                            Correcto = false;
                        }
                    }
                    return Correcto ? L.LBL("LblGENMSG_DeletedData") : L.ERR("FORD_ERROR_MUL");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string DelBloqueoHabitaciones(string elementos, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    bool Correcto = true;

                    string[] fords = elementos.Replace("[", "").Replace("]", "").Replace("\"", "").Split(',');

                    foreach (string ford in fords)
                    {

                        BloqueoHabitacion elemento = new BloqueoHabitacion();
                        try
                        {
                            elemento.id_ford = int.Parse(ford);
                        }
                        catch
                        {
                            elemento.id_ford = 0;
                        }
                        elemento.id_habi = 0;
                        elemento.fecha_desde = DateTime.Now;
                        elemento.fecha_hasta = DateTime.Now;
                        elemento.observaciones = "";

                        elemento.eliminado = true;

                        int res = -1;

                        res = Logica.PutBloqueoHabitaciones(elemento, iden);

                        if (res == -2147483647)
                        {
                            Correcto = false;
                        }
                    }

                    return Correcto ? L.LBL("LblGENMSG_DeletedData") : L.ERR("FORD_ERROR_DEL");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Histórico de Folios

        [WebGet]
        [OperationContract]
        public string GetHistoricoFolios(string nro_folio, string empresa, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetHistoricoFolios(int.Parse(nro_folio), int.Parse(empresa) == 1 ? true : false, iden).Tables[0])
                        .Replace("LblGENNotaCredito", L.LBL("LblGENNotaCredito")).Replace("LblGENNotaDebito", L.LBL("LblGENNotaDebito"))
                        .Replace("LblGENNroAbbr", L.LBL("LblGENNroAbbr")).Replace("LblFDKHabAbbr", L.LBL("LblFDKHabAbbr")).Replace("LblFDKFEAbbr", L.LBL("LblFDKFEAbbr"));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutHistoricoFoliosCardex(string nro_folio, string id_cardex, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, Parametros.O104015_HF_CAMBIAR_PERFIL, D, I)))
                {
                    int res = -1;

                    res = Logica.PutHistoricoFoliosCardex(int.Parse(nro_folio), int.Parse(id_cardex), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.ERR("LblGENUserNotAuthorized"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Tipos de Habitaciones

        [WebGet]
        [OperationContract]
        public string GetTipoHabitacionesCodigoJQGrid(string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DataTable dt = Logica.GetTipoHabitacionesCombo(iden);
                    DataTable dt2 = new DataTable();
                    dt2.Columns.Add(new DataColumn("tipo_hab"));
                    foreach (DataRow dr in dt.Rows)
                    {
                        DataRow dr2 = dt2.NewRow();
                        dr2["tipo_hab"] = dr["tipo_hab"].ToString().Trim();
                        dt2.Rows.Add(dr2);
                    }
                    return jqGridGenie.DataTableToJQGridJSON(dt2);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetTipoHabitacionesIDCodigoJQGrid(string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DataTable dt = Logica.GetTipoHabitacionesCombo(iden);
                    DataTable dt2 = new DataTable();
                    dt2.Columns.Add(new DataColumn("id_thab"));
                    dt2.Columns.Add(new DataColumn("tipo_hab"));
                    foreach (DataRow dr in dt.Rows)
                    {
                        DataRow dr2 = dt2.NewRow();
                        dr2["id_thab"] = dr["id_thab"];
                        dr2["tipo_hab"] = dr["tipo_hab"].ToString().Trim();
                        dt2.Rows.Add(dr2);
                    }
                    return jqGridGenie.DataTableToJQGridJSON(dt2);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Folios Cuenta Casa

        [WebGet]
        [OperationContract]
        public string GetCuentaCasa(string Fil_id_tipo, string vFil_id_tipo, string Fil_nombre_titular, string vFil_nombre_titular
            , string Fil_num_tarj, string vFil_num_tarj, string Fil_fecha_emision, string Fil_fecha_emision_modo, string vFil_fecha_emision, string vFil_fecha_emision2
            , string Fil_fecha_vencim, string Fil_fecha_vencim_modo, string vFil_fecha_vencim, string vFil_fecha_vencim2
            , string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    CuentaCasaFiltro elemento2 = new CuentaCasaFiltro(false, 0, false, "", false, 0, false, 0, DateTime.Now, DateTime.Now, false, 0, DateTime.Now, DateTime.Now);
                    ///////////////////////////////////////////////
                    elemento2.Fil_id_tipo = false;
                    try
                    {
                        elemento2.Fil_id_tipo = int.Parse(Fil_id_tipo) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_tipo = int.Parse(vFil_id_tipo);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_nombre_titular = false;
                    try
                    {
                        elemento2.Fil_nombre_titular = int.Parse(Fil_nombre_titular) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_nombre_titular = vFil_nombre_titular;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_num_tarj = false;
                    try
                    {
                        elemento2.Fil_num_tarj = int.Parse(Fil_num_tarj) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_num_tarj = int.Parse(vFil_num_tarj);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_fecha_emision = false;
                    try
                    {
                        elemento2.Fil_fecha_emision = int.Parse(Fil_fecha_emision) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.Fil_fecha_emision_modo = int.Parse(Fil_fecha_emision_modo);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_fecha_emision = DateTime.Parse(vFil_fecha_emision);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_fecha_emision2 = DateTime.Parse(vFil_fecha_emision2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_fecha_vencim = false;
                    try
                    {
                        elemento2.Fil_fecha_vencim = int.Parse(Fil_fecha_vencim) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.Fil_fecha_vencim_modo = int.Parse(Fil_fecha_vencim_modo);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_fecha_vencim = DateTime.Parse(vFil_fecha_vencim);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_fecha_vencim2 = DateTime.Parse(vFil_fecha_vencim2);
                    }
                    catch { }

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetCuentaCasa(elemento2, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetCuentaCasaDetalle(string id_tarj, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return CrazyGenie.DateHourCleaner(Hiddens.CuentaCasaDetalle(int.Parse(id_tarj), iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Auditoría Nocturna

        [WebGet]
        [OperationContract]
        public string CIERAuditoriaNocturna(string id_oper, string id_datos, string desc_auto, string desc_habi, string abon_id_con0
            , string desc_modo, string desc_valor, string debug, string Eliminado
            , string s, string p, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    Cierre elemento = new Cierre(0, 0, false, "", 0, 0, 0, false);
                    try
                    {
                        elemento.desc_auto = int.Parse(desc_auto) == 1 ? true : false;
                    }
                    catch { }
                    elemento.desc_habi = desc_habi;
                    try
                    {
                        elemento.abon_id_con0 = int.Parse(abon_id_con0);
                    }
                    catch { }
                    try
                    {
                        elemento.desc_modo = int.Parse(desc_modo);
                    }
                    catch { }
                    try
                    {
                        elemento.desc_valor = float.Parse(desc_valor);
                    }
                    catch { }

                    DateTime fecha_hotelera = new DateTime(1900, 1, 1);

                    fecha_hotelera = Logica.CIERAuditoriaNocturna(elemento, int.Parse(s), p, iden);

                    return fecha_hotelera.Year != 1900 ?
                        "<input type=\"hidden\" id=\"HidCIEREstado\" value=\"1\" />" +
                        "<input type=\"hidden\" id=\"HidCIERFecha\" value=\"" + string.Format("{0:D}", fecha_hotelera) + "\" />" :
                        "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR("LblGENUserNotAuthorized") + "</p>"; ;
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }


        #endregion

        #region Auditoría Nocturna - Estadísticas Manuales

        [WebGet]
        [OperationContract]
        public string GetCIEREstadisticasManuales(string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetCIEREstadisticasManuales(iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutCIEREstadisticasManuales(string id_noex, string valor_fijo, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int res = -1;

                    res = Logica.PutCIEREstadisticasManuales(int.Parse(id_noex), float.Parse(valor_fijo), iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Auditoría Nocturna - Opciones del Cierre

        [WebGet]
        [OperationContract]
        public string GetCIEROpcionesCierre(string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetCIEROpcionesCierre(iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Auditoría Nocturna - Descuentos Generales

        [WebGet]
        [OperationContract]
        public string GetCIERDescuentoHabitaciones(string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetCIERDescuentoHabitaciones(iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Auditorías de Días Anteriores

        [WebGet]
        [OperationContract]
        public string GetHCIERAuditoriasAnteriores(string fecha, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DataTable datos = Logica.GetHCIERAuditoriasAnteriores(DateTime.Parse(fecha), iden);
                    string hiddata = "";
                    try
                    {
                        hiddata += "<input type=\"hidden\" id=\"hidHCIER_id_zeje\" value=\"" + datos.Rows[0]["id_zeje"].ToString() + "\" />";
                        hiddata += "<input type=\"hidden\" id=\"hidHCIER_consec_cierre\" value=\"" + datos.Rows[0]["consec_cierre"].ToString() + "\" />";
                        DateTime fec_ini = DateTime.Parse(datos.Rows[0]["fecha_fin"].ToString());
                        DateTime fec_fin = DateTime.Parse(datos.Rows[0]["fecha_inicio"].ToString());
                        hiddata += "<input type=\"hidden\" id=\"hidHCIER_fecha_inicio\" value=\"" + string.Format("{0:d}", fec_ini) + " " + string.Format("{0:HH:mm:ss}", fec_ini) + "\" />";
                        hiddata += "<input type=\"hidden\" id=\"hidHCIER_fecha_fin\" value=\"" + string.Format("{0:d}", fec_fin) + " " + string.Format("{0:HH:mm:ss}", fec_fin) + "\" />";
                        hiddata += "<input type=\"hidden\" id=\"hidHCIER_duracion\" value=\"" +
                            fec_ini.Subtract(fec_fin).ToString() + "\" />";
                        hiddata += "<input type=\"hidden\" id=\"hidHCIER_operador\" value=\"" + datos.Rows[0]["operador"].ToString() + "\" />";
                    }
                    catch { }
                    return hiddata;
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Auditorías de Días Anteriores - Detalle

        [WebGet]
        [OperationContract]
        public string GetHCIERAuditoriasAnterioresDet(string id_zeje, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    int vid_zeje = 0;
                    try
                    {
                        vid_zeje = int.Parse(id_zeje);
                    }
                    catch { }
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetHCIERAuditoriasAnterioresDet(vid_zeje, iden));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Histórico de Depósitos Adelantados

        [WebGet]
        [OperationContract]
        public string GetHistoricoDepositosAdelantados(string Fil_numero, string vFil_numero, string Fil_nombre, string vFil_nombre
            , string Fil_id_habi, string vFil_id_habi, string Fil_id_mone, string vFil_id_mone, string Fil_hora, string Fil_hora_modo
            , string vFil_hora, string vFil_hora2, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    HISTDAFiltro elemento2 = new HISTDAFiltro();
                    ///////////////////////////////////////////////
                    elemento2.Fil_numero = false;
                    try
                    {
                        elemento2.Fil_numero = int.Parse(Fil_numero) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_numero = int.Parse(vFil_numero);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_nombre = false;
                    try
                    {
                        elemento2.Fil_nombre = int.Parse(Fil_nombre) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_nombre = vFil_nombre;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_id_habi = false;
                    try
                    {
                        elemento2.Fil_id_habi = int.Parse(Fil_id_habi) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_habi = int.Parse(vFil_id_habi);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_id_mone = false;
                    try
                    {
                        elemento2.Fil_id_mone = int.Parse(Fil_id_mone) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_mone = int.Parse(vFil_id_mone);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_hora = false;
                    try
                    {
                        elemento2.Fil_hora = int.Parse(Fil_hora) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.Fil_hora_modo = int.Parse(Fil_hora_modo);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_hora = DateTime.Parse(vFil_hora);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_hora2 = DateTime.Parse(vFil_hora2);
                    }
                    catch { }

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetHistoricoDepositosAdelantados(elemento2, false, iden).Tables[0]);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Histórico de Canjes de Divisas

        [WebGet]
        [OperationContract]
        public string GetHistoricoCanjesDivisas(string Fil_numero, string vFil_numero, string Fil_nombre, string vFil_nombre
            , string Fil_id_habi, string vFil_id_habi, string Fil_id_mone, string vFil_id_mone, string vFil_id_mone2, string Fil_hora, string Fil_hora_modo
            , string vFil_hora, string vFil_hora2, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    HISTCDFiltro elemento2 = new HISTCDFiltro();
                    ///////////////////////////////////////////////
                    elemento2.Fil_numero = false;
                    try
                    {
                        elemento2.Fil_numero = int.Parse(Fil_numero) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_numero = int.Parse(vFil_numero);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_nombre = false;
                    try
                    {
                        elemento2.Fil_nombre = int.Parse(Fil_nombre) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_nombre = vFil_nombre;
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_id_habi = false;
                    try
                    {
                        elemento2.Fil_id_habi = int.Parse(Fil_id_habi) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_habi = int.Parse(vFil_id_habi);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_id_mone = false;
                    try
                    {
                        elemento2.Fil_id_mone = int.Parse(Fil_id_mone) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_mone = int.Parse(vFil_id_mone);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_id_mone2 = int.Parse(vFil_id_mone2);
                    }
                    catch { }
                    ///////////////////////////////////////////////
                    elemento2.Fil_hora = false;
                    try
                    {
                        elemento2.Fil_hora = int.Parse(Fil_hora) == 1 ? true : false;
                    }
                    catch { }
                    try
                    {
                        elemento2.Fil_hora_modo = int.Parse(Fil_hora_modo);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_hora = DateTime.Parse(vFil_hora);
                    }
                    catch { }
                    try
                    {
                        elemento2.vFil_hora2 = DateTime.Parse(vFil_hora2);
                    }
                    catch { }

                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetHistoricoCanjesDivisas(elemento2, false, iden).Tables[0]);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Combobox Dinámicos

        [WebGet]
        [OperationContract]
        public string GetDynamicCombobox(string id_combo, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return HTMLSelects.DynamicCombo(int.Parse(id_combo), iden);
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Mailing Services

        [WebGet]
        [OperationContract]
        public string SendReservas(string id_rese, string forzar, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);


                    bool Forzar = false;
                    if (int.Parse(forzar) == 1)
                    {
                        Forzar = true;
                    }
                    int res = -1;

                    res = Logica.SendReservas(int.Parse(id_rese), Forzar, iden);

                    return res.ToString();
                }
                else
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + "\n" + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string SendRoomings(string id_room, string forzar, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);


                    bool Forzar = false;
                    if (int.Parse(forzar) == 1)
                    {
                        Forzar = true;
                    }
                    int res = -1;

                    res = Logica.SendRoomings(int.Parse(id_room), Forzar, iden);

                    return res.ToString();
                }
                else
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + "\n" + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion

        #region Bitácora de Seguridad

        [WebGet]
        [OperationContract]
        public string GetAplicacionesCombo(string id_modulo, string I, string LangCode)
        {
            try
            {
                if (Seguridad.CargarConfiguracionManagement() == 1)
                {
                    return HTMLSelects.Aplicaciones(int.Parse(id_modulo));
                }
                else
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);
                    throw new Exception(L.ERR("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.ERR("LblGENWrongQuery") + ":</b></br> " + Memoria.Error + "\n" + ex.Message + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetDatosComboBS(string id_modulo, string I, string LangCode)
        {
            try
            {
                if (Seguridad.CargarConfiguracionManagement() == 1)
                {
                    return HTMLSelects.DatosLog(int.Parse(id_modulo));
                }
                else
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);
                    throw new Exception(L.ERR("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.ERR("LblGENWrongQuery") + ":</b></br> " + Memoria.Error + "\n" + ex.Message + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string GetOpcionesCombo(string id_app, string I, string LangCode)
        {
            try
            {
                if (Seguridad.CargarConfiguracionManagement() == 1)
                {
                    return HTMLSelects.Opciones(int.Parse(id_app));
                }
                else
                {
                    CultureInfo ciLocal = new CultureInfo(LangCode);
                    throw new Exception(L.ERR("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                CultureInfo ciLocal = new CultureInfo(LangCode);
                return "<p class=\"SevenMsgError\"><b>" + L.ERR("LblGENWrongQuery") + ":</b></br> " + Memoria.Error + "\n" + ex.Message + "</p>";
            }
        }

        #endregion

        #region Asignación de Habitaciones

        [WebGet]
        [OperationContract]
        public string GetReseRoomAsignacionHabi(string fec_ent_ini, string fec_ent_fin, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    DateTime fec_ini = DateTime.Today;
                    try
                    {
                        fec_ini = DateTime.Parse(fec_ent_ini);
                    }
                    catch { }
                    DateTime fec_fin = DateTime.Today;
                    try
                    {
                        fec_fin = DateTime.Parse(fec_ent_fin);
                    }
                    catch { }
                    return CrazyGenie.DateHourCleaner(Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetReseRoomAsignacionHabi(fec_ini, fec_fin, iden)));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutReseRoomAsignacionHabi(string tipo, string id_elem, string id_habi, string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    ReseRoomDetalle elemento = new ReseRoomDetalle();
                    try
                    {
                        elemento.tipo = int.Parse(tipo);
                    }
                    catch
                    {
                        elemento.tipo = 0;
                    }
                    try
                    {
                        elemento.id_elem = int.Parse(id_elem);
                    }
                    catch
                    {
                        elemento.id_elem = 0;
                    }
                    elemento.id_habi = 0;
                    try
                    {
                        elemento.id_habi = int.Parse(id_habi);
                    }
                    catch { }

                    int res = -1;

                    res = Logica.PutReseRoomAsignacionHabi(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                if (ex.Message.Contains("ERR_RESE_SOBREVENTA"))
                {
                    return -2147483648 + "|<p class=\"SevenMsgError\">"
                        + ex.Message.Replace("[", "").Replace("]", "")
                            .Replace("ERR_RESE_SOBREVENTA:", "<b>" + L.ERR("ERR_RESE_SOBREVENTA") + ":</b></br> ")
                            .Replace("LblGENUsoHab", L.LBL("LblGENUsoHab"))
                            .Replace("LblGENDate", L.LBL("LblGENDate"))
                            .Replace("LblGENRooms", L.LBL("LblGENRooms")) + "</p>";
                }
                else if (ex.Message.Contains("ROOM_RELEASE"))
                {
                    return -2147483649 + "|"
                        + "<p class=\"SevenMsgError\"><b>" + L.LBL("LblFDKSRelease") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
                }
                else
                {
                    return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
                }
            }
        }


        #endregion

        #region Impresión Directa de Documentos (IDD)

        [WebGet]
        [OperationContract]
        public string GetImpresoras(string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    return Globals.jqGridGenie.DataTableToJQGridJSON(Logica.GetImpresoras(iden))
                        .Replace("LblGENFactura", L.LBL("LblGENFactura"))
                        .Replace("LblGENRecibo", L.LBL("LblGENRecibo"))
                        .Replace("LblGENCheque", L.LBL("LblGENCheque"))
                        .Replace("LblREPPreimpresionFolio", L.REP("LblREPPreimpresionFolio"))
                        .Replace("LblFDKPCIERFacturasEmpresas", L.LBL("LblFDKPCIERFacturasEmpresas"))
                        .Replace("LblFDKProforma", L.LBL("LblFDKProforma"))
                        .Replace("LblREPDepAdelEF", L.REP("LblREPDepAdelEF"))
                        .Replace("LblREPDepAdelTarj", L.REP("LblREPDepAdelTarj"))
                        .Replace("OFCanje", L.TIT("OFCanje"))
                        .Replace("Prepagos", L.TIT("Prepagos"))
                        .Replace("Notas", L.TIT("Notas"))
                        .Replace("Reservas", L.TIT("Reservas"))
                        .Replace("RoomingList", L.TIT("RoomingList"))
                        .Replace("TarjetaRegistro", L.TIT("TarjetaRegistro"))
                        .Replace("LblGENDocumentos", L.LBL("LblGENDocumentos"));
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        [WebGet]
        [OperationContract]
        public string PutImpresoras(string id_repo, string descripcion, string tipo_impresora, string id_papel, string Eliminado
            , string U, string N, string D, string I, string LangCode)
        {
            try
            {
                Identidad iden = new Identidad(int.Parse(Enigma.Desencriptar(U)), Enigma.Desencriptar(N), int.Parse(Enigma.Desencriptar(D)), Enigma.Desencriptar(I));

                if ((Seguridad.CargarConfiguracionManagement() == 1) && (Seguridad.VerificarSesion(U, N, 1, D, I)))
                {
                    Impresora elemento = new Impresora();
                    try
                    {
                        elemento.id_repo = int.Parse(id_repo);
                    }
                    catch
                    {
                        elemento.id_repo = 0;
                    }
                    elemento.descripcion = descripcion;
                    elemento.tipo_impresora = int.Parse(tipo_impresora);
                    elemento.id_papel = int.Parse(id_papel);

                    elemento.eliminado = int.Parse(Eliminado) == 1 ? true : false;

                    int res = -1;

                    res = Logica.PutImpresoras(elemento, iden);

                    return res != -2147483647 ? res.ToString() : L.ERR("LblGENUserNotAuthorized");
                }
                else
                {
                    throw new Exception(L.LBL("LblGENWrongUserSession"));
                }
            }
            catch (Exception ex)
            {
                #region Manejo de Errores (Administrador)

                var metodo = MethodBase.GetCurrentMethod().Name;
                var msgError = string.Format(MssgTrace.Trace_Message_Error, metodo, ex);
                LogGenie.ErrorLogSave(ex.Message, 16, msgError, System.Diagnostics.TraceEventType.Error);

                #endregion

                #region Manejo de Errores (Base de Datos)

                try
                {
                    var xException = new Excepcion
                    {
                        EventID = 0,
                        Priority = 16,
                        Severity = TraceEventType.Error,
                        Title = ex.Message,
                        Timestamp = DateTime.Now,
                        MachineName = Environment.MachineName,
                        AppDomainName = Environment.UserDomainName,
                        ProcessID = string.Empty,
                        ProcessName = Environment.CommandLine,
                        ThreadName = string.Empty,
                        Message = ex.ToString()
                    };

                    Logica logica = new Logica();
                    logica.DataBaseLogError(xException);
                }
                catch
                {
                }

                #endregion

                return "<p class=\"SevenMsgError\"><b>" + L.LBL("LblGENWrongQuery") + ":</b></br> " + L.ERR(ex.Message).Replace("[", "").Replace("]", "") + "</p>";
            }
        }

        #endregion
    }
}

