using BE;
using BL;
using DL;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using Utilitaria;

public partial class PrAsientosDetalle : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo("es-PE");
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-PE");
    }

    [WebMethod]
    [ScriptMethod]
    public static List<BEMonedas> ListarMonedas()
    {
         BLMonedas objMonedas = new BLMonedas();
         List<BEMonedas> ListaMonedas = new List<BEMonedas>();
         ListaMonedas = objMonedas.fnSelMonedasAll();
         return ListaMonedas;
    }


    [WebMethod]
    [ScriptMethod]
    public static List<string> ListarSelectTipoConversion()
    {
        BETipoDeConversionesMoneda objet_TipoDeConversionesMoneda = new BETipoDeConversionesMoneda();
        BLTipoDeConversionesMoneda objlg_TipoDeConversionesMoneda = new BLTipoDeConversionesMoneda();
        List<BETipoDeConversionesMoneda> Col_TipoDeConversionesMoneda;

        Col_TipoDeConversionesMoneda = objlg_TipoDeConversionesMoneda.fnSelTipoDeConversionesMonedaDin("estado = 0", "[CodigoTipoConversionMoneda]");

        List<string> listaNueva = new List<string>();
        foreach (var item in Col_TipoDeConversionesMoneda)
        {
            listaNueva.Add(item.TipoConversionMonedaID + "* " + item.NombreTipoConversionMoneda);
        }
        return listaNueva;
    }



    [WebMethod]
    [ScriptMethod]
    public static List<string> DevolverTipoConversion(string tipoConversion, string fecha)
    {
        List<BETiposDeCambio> listaTipoCambio = new List<BETiposDeCambio>();
        DLTiposDeCambio loDLTiposDeCambio = new DLTiposDeCambio();
        listaTipoCambio = loDLTiposDeCambio.fnSelTiposDeCambioDin("monedaID=" + tipoConversion, string.Empty, fecha);
        List<string> listaNueva = new List<string>();
        foreach (var item in listaTipoCambio)
        {
            listaNueva.Add(item.Compra + "* " + item.Venta);
        }
        return listaNueva;
    }

    [WebMethod]
    [ScriptMethod]
    public static List<string> DevolverPlanCuenta(string establecimiento, string planDeCuenta = "", string nombrePlanCuenta = "")
    {
        List<string> listaAreas = new List<string>();
        listaAreas = BLAreas.Instance.DevolverPlanCuenta(planDeCuenta, establecimiento, nombrePlanCuenta);
        return listaAreas;
    }

    [WebMethod]
    [ScriptMethod]
    public static List<BEPais> ListarPais()
    {
        List<BEPais> loList = new List<BEPais>();
        DLPais DLPais = new DLPais();
        try
        {
            loList = DLPais.ListarPais();
        }
        catch (Exception e)
        {
            throw e;
        }
        finally
        {

        }
        return loList;
    }

    // Campos Requiere //
    [WebMethod]
    [ScriptMethod]
    public static List<string> ListarCamposRequiere(string CodigoPlanCuenta, int EstablecimientoID)
    {
        List<string> listaCamposRequiere = new List<string>();
        listaCamposRequiere = BLAreas.Instance.ListarCamposRequiere(CodigoPlanCuenta,EstablecimientoID);
        return listaCamposRequiere;
    }

    //Listar Areas//
    [WebMethod]
    [ScriptMethod]
    public static List<string> ListarAreas()
    {
        List<string> listaAreas = new List<string>();
        listaAreas = BLAreas.Instance.ListarAreas();
        return listaAreas;
    }
    
    //Listar Distribucion Areas//
    [WebMethod]
    [ScriptMethod]
    public static List<string> ListarDistribucionAreas(string EstablecimientoID, string Hotel, string AreaID, string Periodo)
    {
        List<string> listaDistribucion = new List<string>();
        listaDistribucion = BLAreas.Instance.ListarDistribucionAreas(EstablecimientoID, Hotel, AreaID, Periodo);
        return listaDistribucion;
    }

    //Listar Sessiones//
   
    [WebMethod]
    [ScriptMethod]
    public static List<string> ListarSessiones()
    {
        List<string> listaCampos = new List<string>();
        listaCampos.Add("HotelID|" + HttpContext.Current.Session["HotelID"]);
        listaCampos.Add("Periodo|" + HttpContext.Current.Session["txtperiodo"]);
        listaCampos.Add("Establecimiento|" + HttpContext.Current.Session["EmpresaID"]);
        return listaCampos;
    }

    [WebMethod]
    [ScriptMethod]
    public static List<string> ListarFlujoCaja()
    {
        List<BEFlujoCaja> listaFlujoCaja = new List<BEFlujoCaja>();
        BLFlujoCaja loDLFlujoCaja = new BLFlujoCaja();
        listaFlujoCaja = loDLFlujoCaja.fnSelFlujoCajaDin("Estado=0", "NombreFlujoCaja");
        List<string> listaNueva = new List<string>();
        foreach (var item in listaFlujoCaja)
        {
            listaNueva.Add(item.FlujoCajaID + "* " + item.NombreFlujoCaja);
        }
        return listaNueva;
    }

    [WebMethod]
    [ScriptMethod]
    public static List<string> ListarMedioPago()
    {
        List<BEMedioPagos> listaFlujoCaja = new List<BEMedioPagos>();
        BLMedioPagos loMedioPago = new BLMedioPagos();
        listaFlujoCaja = loMedioPago.ListarMedioPagos();
        List<string> listaNueva = new List<string>();
        foreach (var item in listaFlujoCaja)
        {
            listaNueva.Add(item.MedioPagoID + "* " + item.NombreMedioPago);
        }
        return listaNueva;
    }

    [WebMethod]
    [ScriptMethod]
    public static List<string> ListarTiposDocumentos()
    {
        List<BETipoDocumentos> listaTipoDocumento = new List<BETipoDocumentos>();
        BLTipoDocumentos blTipoDocumento = new BLTipoDocumentos();
        //return blTipoDocumento.fnSelTipoDocumentosDin("", "NombreDocumento");

        listaTipoDocumento = blTipoDocumento.fnSelTipoDocumentosDin("", "NombreDocumento");
        List<string> listaNueva = new List<string>();
        foreach (var item in listaTipoDocumento)
        {
            listaNueva.Add(item.TipoDocumentoID + "*** " + item.NombreDocumento);
        }
        return listaNueva;

    }

    [WebMethod]
    [ScriptMethod]
    public static List<string> VerificarDiaCerrado(string vEstablecimientoID, string vHotelID, string vEjercicio)
    {
        List<string> listaCampos = new List<string>();
        SqlConnection sqlConnection1 = new SqlConnection(GetConnectionString());
        SqlCommand cmd = new SqlCommand();
        SqlDataReader reader;

        cmd.CommandText = "UCO_SubDiarioBloqueo_Select";
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter EstablecimientoID = cmd.Parameters.Add("@EstablecimientoID", SqlDbType.Int);
        SqlParameter HotelID = cmd.Parameters.Add("@HotelID", SqlDbType.Int);
        SqlParameter Ejercicio = cmd.Parameters.Add("Ejercicio", SqlDbType.Int);

        EstablecimientoID.Value = vEstablecimientoID;
        HotelID.Value = vHotelID;
        Ejercicio.Value = vEjercicio;

        cmd.Connection = sqlConnection1;

        sqlConnection1.Open();

        reader = cmd.ExecuteReader();
        // Data is accessible through the DataReader object here.
        List<string> lista2 = new List<string>();
        while (reader.Read())
        {
            lista2.Add(reader["SubDiarioID"].ToString().Trim() + "|" + reader["Enero"].ToString().Trim() + "|" + reader["Febrero"].ToString().Trim() + "|" + reader["Marzo"].ToString().Trim() + "|" + reader["Abril"].ToString().Trim() + "|" + reader["Mayo"].ToString().Trim() + "|" + reader["Junio"].ToString().Trim() + "|" + reader["Julio"].ToString().Trim() + "|" + reader["Agosto"].ToString().Trim() + "|" + reader["Septiembre"].ToString().Trim() + "|" + reader["Noviembre"].ToString().Trim() + "|" + reader["Diciembre"].ToString().Trim());
        }

        listaCampos = lista2;
        sqlConnection1.Close();
        //close DataReader
        reader.Close();
        return listaCampos;

    }

    [WebMethod]
    [ScriptMethod]
    public static List<string> DevolverEmpresas(string ruc = "", string empresa = "")
    {
        string WhereRUC = "";
        string WhereEmpresa = "";
        WhereRUC = "Ruc LIKE '" + ruc + "%' ";
        WhereEmpresa = "razonsocial LIKE '" + empresa + "%'";
        List<BEEmpresas> listaEmpresas = new List<BEEmpresas>();
        BLEmpresas loEmpresas = new BLEmpresas();
        if (ruc != string.Empty)
        {
            listaEmpresas = loEmpresas.fnSelEmpresasDinPopUp(WhereRUC, "razonsocial"); ;
        }
        if (empresa != string.Empty)
        {
            listaEmpresas = loEmpresas.fnSelEmpresasDinPopUp(WhereEmpresa, "razonsocial"); ;
        }

        
        List<string> listaNueva = new List<string>();
        foreach (var item in listaEmpresas)
        {
            listaNueva.Add(item.EmpresaID + "*** " + item.Ruc.Trim() + "***" + item.Razonsocial.Trim());
        }
        return listaNueva;
    }
    private static string GetConnectionString()
    {
        return ConfigurationManager.ConnectionStrings["SHIOL_CONTA_BTHConnectionString"].ConnectionString;
    }

    [WebMethod]
    [ScriptMethod]
    public static List<string> DevolverPaquetes(string paquete)
    {
        List<string> listaCampos = new List<string>();
        listaCampos = BLPaquetes.Instance.ListarPaquetes(paquete);
        return listaCampos;
    }

    [WebMethod]
    [ScriptMethod]
    public static int GuardarAsiento(Object poBEAsientosContables)
    {
        int Orden = 0;
        int AsientoContableID = 0;
        Object lines = poBEAsientosContables;
        BEAsientosContables asientos = new BEAsientosContables();
        BEAsientosContablesDetalle asientosDetalle = new BEAsientosContablesDetalle();
        //DLAsientosContables loDLAsientosContables = new DLAsientosContables();
        BLAsientosContables loDLAsientosContables = new BLAsientosContables();
        List<BEAsientosContablesDetalle> listaDetalleAsiento = new List<BEAsientosContablesDetalle>();
        List<object> list = new List<object>();
        string establecimientoID = string.Empty;
        BLAsientosContablesDetalle loDLAsientosContablesDetalle = new BLAsientosContablesDetalle();

        if (typeof(IDictionary).IsAssignableFrom(lines.GetType()))
        {
            IDictionary idict = (IDictionary)lines;

            Dictionary<string, string> newDict = new Dictionary<string, string>();
            foreach (object key in idict.Keys)
            {
                string[] seperador = new string[] { "|" };
                var result = idict[key].ToString().Split(seperador, StringSplitOptions.None);
                Int32? HotelID = string.IsNullOrEmpty(result[103].Trim()) ? (Int32?)null : Int32.Parse(result[103].Trim());
                Int32? MonedaID = string.IsNullOrEmpty(result[43]) ? (Int32?)null : Int32.Parse(result[43]);
                asientos.Cabecera = result[98].Trim();
                asientos.Empresa = result[99].Trim();
                asientos.Anio = HttpContext.Current.Session["txtPeriodo"].ToString();
                asientos.AsientoContableID = result[5].Trim();
                asientos.SubDiarioID = result[102].Trim();
                asientos.HotelID = Convert.ToInt32(HotelID);
                asientos.Glosa = result[104].Trim();
                asientos.Comprobante = "";
                asientos.Dia = Convert.ToDateTime(result[105]);
                asientos.MonedaID = Convert.ToInt32(MonedaID);
                asientos.TipoCambio = result[106].Trim();
                establecimientoID = result[99].Trim();
                asientos.ReferenciaSHIOL = string.Empty;
                asientos.BEAuditores.UsuarioID = Convert.ToInt32(HttpContext.Current.Session["UsuarioID"]);
                asientos.BEAuditores.UsuarioIdAutorizado = 0;
                asientos.BEAuditores.IPEquipo = Cls_Enums.f_DatosPC.IPPC;
                asientos.BEAuditores.UsuarioActualEquipo = Cls_Enums.f_DatosPC.UsuarioPC;
                asientos.BEAuditores.NombreEquipo = Cls_Enums.f_DatosPC.NombrePC;
                asientos.BEAuditores.TablaMovimientoID = string.Empty;
                break;
            }
         
                AsientoContableID = loDLAsientosContables.fnInsUpdAsientosContables(asientos);
    
            foreach (object key in idict.Keys)
            {
                string[] seperador = new string[] { "|" };
                var result = idict[key].ToString().Split(seperador, StringSplitOptions.None);
                if (AsientoContableID.ToString() == "")
                {
                    AsientoContableID = Convert.ToInt32(result[5]);
                }

               
                DateTime? FechaEmision = string.IsNullOrEmpty(result[15].Replace("null","")) ? (DateTime?)null : DateTime.Parse(result[15]);
                DateTime? FechaVencimiento = string.IsNullOrEmpty(result[16].Replace("null", "")) ? (DateTime?)null : DateTime.Parse(result[16]);
                Int32? EmpresaID = string.IsNullOrEmpty(result[10]) ? (Int32?)null : Int32.Parse(result[10]);
                Int32? TipoDocumentoID = string.IsNullOrEmpty(result[81]) ? (Int32?)null : Int32.Parse(result[81]);
                Int32? ProyectoID = string.IsNullOrEmpty(result[74].Replace("null","")) ? (Int32?)null : Int32.Parse(result[74]);
                Int32? AreaID = string.IsNullOrEmpty(result[0]) ? (Int32?)null : Int32.Parse(result[0]);
                Int32? FlujoCajaID = string.IsNullOrEmpty(result[17]) ? (Int32?)null : Int32.Parse(result[17]);
                Decimal? TipoCambio = string.IsNullOrEmpty(result[79]) ? (Decimal?)null : Decimal.Parse(result[79]);
                Int32? SegmentoID = string.IsNullOrEmpty(result[77].Replace("null","")) ? (Int32?)null : Int32.Parse(result[77]);
                Int32? PaisID = string.IsNullOrEmpty(result[56]) ? (Int32?)null : Int32.Parse(result[56]);
                Int32? MedioPagoID = string.IsNullOrEmpty(result[41]) ? (Int32?)null : Int32.Parse(result[41]);
                Int32? MonedaID = string.IsNullOrEmpty(result[43]) ? (Int32?)null : Int32.Parse(result[43]);

                asientosDetalle.PeriodoID = asientos.Dia.Value.Month.ToString();
                asientosDetalle.AsientoContableDetalleID = result[2].Trim();
                asientosDetalle.AsientoContableID = Convert.ToString(AsientoContableID).Trim();
                asientosDetalle.MontoDebe = Convert.ToDecimal(result[44]);
                asientosDetalle.MontoDebeDolares = Convert.ToDecimal(result[45]);
                asientosDetalle.MontoHaber = Convert.ToDecimal(result[46]);
                asientosDetalle.MontoHaberDolares = Convert.ToDecimal(result[47]);
                asientosDetalle.CanalContableID = result[6].Trim();
                asientosDetalle.EmpresaID = Convert.ToInt32(EmpresaID);
                asientosDetalle.TipoDocumentoID = Convert.ToInt32(TipoDocumentoID);
                asientosDetalle.ProyectoID = Convert.ToInt32(ProyectoID);
                asientosDetalle.Dia = Convert.ToDateTime(result[8]);
                asientosDetalle.Referencia = result[76].Trim();
                asientosDetalle.FechaEmision = FechaEmision;
                asientosDetalle.FechaVencimiento = FechaVencimiento;
                asientosDetalle.AreaID = Convert.ToInt32(AreaID);
             //   System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE=""JavaScript"">alert("Hello this is an Alert")</SCRIPT>")
                //cambios
                String[] doc= result[55].Trim().Split('-');
                asientosDetalle.NumeroDocumento = doc[1];
                asientosDetalle.SerieDocumento = doc[0];
                asientosDetalle.TransaccionDocumentoID = result[83].Trim();
                asientosDetalle.FlujoCajaID = Convert.ToInt32(FlujoCajaID);
                asientosDetalle.PlanCuentaID = result[71].Trim();
                asientosDetalle.ImporteSoles = (Convert.ToDecimal(result[44]) > 0 ? Convert.ToDecimal(result[44]) : Convert.ToDecimal(result[46]));// Convert.ToDecimal(result[30]);
                asientosDetalle.ImporteDolares = (Convert.ToDecimal(result[45]) > 0 ? Convert.ToDecimal(result[44]) : Convert.ToDecimal(result[47])); //Convert.ToDecimal(result[19]);
                asientosDetalle.AsientoContableDetalleIDTransferencia = "";
                asientosDetalle.TipoCambio = Convert.ToDecimal(TipoCambio);
                asientosDetalle.SegmentoID = Convert.ToInt32(SegmentoID);
                asientosDetalle.PaisID = Convert.ToInt32(PaisID);
                asientosDetalle.PaqueteTOID = result[57];
                asientosDetalle.PeriodoGPA = result[69];
                asientosDetalle.MedioPagoID = Convert.ToInt32(MedioPagoID);
                asientosDetalle.NroOperacion = result[54];
                asientosDetalle.TipoConversionMonedaID = result[80];
                asientosDetalle.MonedaID = Convert.ToInt32(MonedaID);
                Int32? updetalle = string.IsNullOrEmpty(result[97]) ? (Int32?)null : Int32.Parse(result[97]);
                asientosDetalle.UpdDetalleAsiento = Convert.ToInt32(updetalle);

                asientosDetalle.ImporteDolares = (Convert.ToDecimal(result[45]) > 0 ? Convert.ToDecimal(result[45]) : Convert.ToDecimal(result[47])); //Convert.ToDecimal((asientosDetalle.MontoDebeDolares>0?asientosDetalle.MontoDebeDolares:asientosDetalle.MontoHaberDolares));
                if(result[20]!="undefined"){
                    asientosDetalle.ImporteDolares_1 = Convert.ToDecimal(result[20]);
                }                
                asientosDetalle.ImporteDolares_10 = Convert.ToDecimal(result[21]);
                asientosDetalle.ImporteDolares_2 = Convert.ToDecimal(result[22]);
                asientosDetalle.ImporteDolares_3 = Convert.ToDecimal(result[23]); 
                asientosDetalle.ImporteDolares_4 = Convert.ToDecimal(result[24]); 
                asientosDetalle.ImporteDolares_5 = Convert.ToDecimal(result[25]);
                asientosDetalle.ImporteDolares_6 = Convert.ToDecimal(result[26]); 
                asientosDetalle.ImporteDolares_7 = Convert.ToDecimal(result[27]);
                asientosDetalle.ImporteDolares_8 = Convert.ToDecimal(result[28]);
                asientosDetalle.ImporteDolares_9 = Convert.ToDecimal(result[29]);
                asientosDetalle.ImporteSoles = (Convert.ToDecimal(result[44]) > 0 ? Convert.ToDecimal(result[44]) : Convert.ToDecimal(result[46]));// Convert.ToDecimal((asientosDetalle.MontoDebe > 0 ? asientosDetalle.MontoDebe : asientosDetalle.MontoHaber));
                asientosDetalle.ImporteSoles_1 = Convert.ToDecimal(result[31]);
                asientosDetalle.ImporteSoles_10 = Convert.ToDecimal(result[32]);
                asientosDetalle.ImporteSoles_2 = Convert.ToDecimal(result[33]); 
                asientosDetalle.ImporteSoles_3 = Convert.ToDecimal(result[34]);
                asientosDetalle.ImporteSoles_4 = Convert.ToDecimal(result[35]);
                asientosDetalle.ImporteSoles_5 = Convert.ToDecimal(result[36]);
                asientosDetalle.ImporteSoles_6 = Convert.ToDecimal(result[37]);
                asientosDetalle.ImporteSoles_7 = Convert.ToDecimal(result[38]);
                asientosDetalle.ImporteSoles_8 = Convert.ToDecimal(result[39]);
                asientosDetalle.ImporteSoles_9 = Convert.ToDecimal(result[40]);
                
                asientosDetalle.Unidades = Convert.ToInt32(result[85]);
                asientosDetalle.UnidadNegocioID = Convert.ToInt32(result[86]); 
                asientosDetalle.UnidadNegocioID_1 = Convert.ToInt32(result[87]);
                asientosDetalle.UnidadNegocioID_10 = Convert.ToInt32(result[88]); 
                asientosDetalle.UnidadNegocioID_2 = Convert.ToInt32(result[89]);
                asientosDetalle.UnidadNegocioID_3 = Convert.ToInt32(result[90]);
                asientosDetalle.UnidadNegocioID_4 = Convert.ToInt32(result[91]);
                asientosDetalle.UnidadNegocioID_5 = Convert.ToInt32(result[92]);
                asientosDetalle.UnidadNegocioID_6 = Convert.ToInt32(result[93]);
                asientosDetalle.UnidadNegocioID_7 = Convert.ToInt32(result[94]);
                asientosDetalle.UnidadNegocioID_8 = Convert.ToInt32(result[95]);
                asientosDetalle.UnidadNegocioID_9 = Convert.ToInt32(result[96]);

                if (result[4].Trim() == "0")
                {
                    listaDetalleAsiento.Add(asientosDetalle);
                    int detalle = loDLAsientosContablesDetalle.fnInsUpdAsientosContablesDetalle(listaDetalleAsiento, establecimientoID, asientos.Anio, string.Empty, 0);
                    listaDetalleAsiento.Clear();
                }

                
            }
           
        }      
        
        return Orden;
    }

    [WebMethod]
    [ScriptMethod]
    public static List<string> BuscarAsientosContables(string pxNomCabecera, string pxEmpresa, string pxAnio, string pxAsientoContableID)
    {
        List<BEAsientosContables> listaAsientoContable = new List<BEAsientosContables>();
        DLAsientosContables loDLAsientosContables = new DLAsientosContables();
        listaAsientoContable = loDLAsientosContables.fnSelAsientosContables(pxNomCabecera, pxEmpresa, pxAnio, pxAsientoContableID);
        List<string> listaNueva = new List<string>();
        foreach (var item in listaAsientoContable)
        {
            listaNueva.Add(item.Glosa + "***" + item.Dia + "***" + item.Bloqueado);
        }
        return listaNueva;
    }

    [WebMethod]
    [ScriptMethod]
    public static List<string> BuscarAsientosContablesDetalle(string AsientoContableID)
    {
        BEAsientosContablesDetalle objet_AsientosContablesDetalle = new BEAsientosContablesDetalle();
        List<BEAsientosContablesDetalle> listaDetalle = new List<BEAsientosContablesDetalle>();
        DLAsientosContablesDetalle loDLAsientosContablesDetalle = new DLAsientosContablesDetalle();
        objet_AsientosContablesDetalle.BEAsientosContables.Detallecabecera = Cls_Enums.TablasAsientosDetalle.Detallecabecera;
       
        objet_AsientosContablesDetalle.BEAsientosContables.Empresa = HttpContext.Current.Session["EmpresaID"].ToString();
        objet_AsientosContablesDetalle.BEAsientosContables.Anio = HttpContext.Current.Session["txtPeriodo"].ToString();
        objet_AsientosContablesDetalle.AsientoContableID = AsientoContableID.Trim();
        objet_AsientosContablesDetalle.AsientoContableDetalleID = "";
        listaDetalle = loDLAsientosContablesDetalle.fnSelAsientosContablesDetalleDin(objet_AsientosContablesDetalle);
         List<string> listaNueva = new List<string>();
         foreach (var item in listaDetalle)
        {
            //console.log(item.Referencia);
            listaNueva.Add(item.AreaID + "|" + item.AreaIDNombre + "|" + item.AsientoContableDetalleID + "|" + item.AsientoContableDetalleIDTemp + "|" + 
             item.AsientoContableDetalleIDTransferencia + "|" + item.AsientoContableID + "|" + item.CanalContableID + "|" + item.CanalContableIDNombre + "|" + 
             item.Dia + "|" + item.Discrepancia + "|" + item.EmpresaID + "|" + item.EmpresaIDNombre + "|" + item.EmpresaIDRuc + "|" + 
             item.Estado + "|" + item.EstadoRegTemp + "|" + item.FechaEmision + "|" + item.FechaVencimiento + "|" + item.FlujoCajaID + "|" + //18
             item.FlujoCajaIDNombre + "|" + item.ImporteDolares + "|" + item.ImporteDolares_1 + "|" + item.ImporteDolares_10 + "|" + 
             item.ImporteDolares_2 + "|" + item.ImporteDolares_3 + "|" + item.ImporteDolares_4 + "|" + item.ImporteDolares_5 + "|" + //26
             item.ImporteDolares_6 + "|" + item.ImporteDolares_7 + "|" + item.ImporteDolares_8 + "|" + item.ImporteDolares_9 + "|" + item.ImporteSoles + "|" + 
             item.ImporteSoles_1 + "|" + item.ImporteSoles_10 + "|" + item.ImporteSoles_2 + "|" + item.ImporteSoles_3 + "|" + item.ImporteSoles_4 + "|" + //36
             item.ImporteSoles_5 + "|" + item.ImporteSoles_6 + "|" + item.ImporteSoles_7 + "|" + item.ImporteSoles_8 + "|" + item.ImporteSoles_9 + "|" + //41
             item.MedioPagoID + "|" + item.Mensaje + "|" + item.MonedaID + "|" + item.MontoDebe + "|" + item.MontoDebeDolares + "|" + item.MontoHaber + "|" + //47
             item.MontoHaberDolares + "|" + item.NombreMedioPago + "|" + item.NombrePlanCuenta + "|" + item.NombrePlanCuentaCaja + "|" + item.NombreRazonSocial + "|" + //52
             item.NombreUnidadNegocio_1 + "|" + item.NombreUnidadNegocio_2 + "|" + item.NroOperacion + "|" + item.SerieDocumento+'-'+ item.NumeroDocumento + "|" + item.PaisID + "|" + //58
             item.PaqueteTOID + "|" + item.Participacion + "|" + item.Participacion_1 + "|" + item.Participacion_10 + "|" + item.Participacion_2 + "|" + //63
             item.Participacion_3 + "|" + item.Participacion_4 + "|" + item.Participacion_5 + "|" + item.Participacion_6 + "|" + item.Participacion_7 + "|" + //68
             item.Participacion_8 + "|" + item.Participacion_9 + "|" + item.PeriodoGPA + "|" + item.PeriodoID + "|" + item.PlanCuentaID + "|" + item.PlanCuentaIDCaja + "|" + //74
             item.PlanCuentaIDNombre + "|" + item.ProyectoID + "|" + item.ProyectoIDNombre + "|" + item.Referencia + "|" + item.SegmentoID + "|" + item.Temp + "|" + //80
             item.TipoCambio + "|" + item.TipoConversionMonedaID + "|" + item.TipoDocumentoID + "|" + item.SerieDocumento + "-" + item.TipoDocumentoIDNombre + "|" + item.TransaccionDocumentoID + "|" + //85
             item.Transferencia + "|" + item.Unidades + "|" + item.UnidadNegocioID + "|" + item.UnidadNegocioID_1 + "|" + //89
             item.UnidadNegocioID_10 + "|" + item.UnidadNegocioID_2 + "|" + item.UnidadNegocioID_3 + "|" + item.UnidadNegocioID_4 + "|" + item.UnidadNegocioID_5 + "|" + //94
             item.UnidadNegocioID_6 + "|" + item.UnidadNegocioID_7 + "|" + item.UnidadNegocioID_8 + "|" + item.UnidadNegocioID_9 + "|" + item.UpdDetalleAsiento+"|"+item.RequiereArea);//100
        }
        return listaNueva;
    }

    [WebMethod]
    [ScriptMethod]
    public static bool eliminarDetalle(string idDetalle, string anio, string hotelID)
    {
        bool valor;
        BLAsientosContablesDetalle objlg_AsientosContablesDetalle = new BLAsientosContablesDetalle();
        BEAsientosContablesDetalle asientosDetalle = new BEAsientosContablesDetalle();
        asientosDetalle.AsientoContableDetalleID = idDetalle;
        asientosDetalle.BEAsientosContables.Detallecabecera = Cls_Enums.TablasAsientosDetalle.Detallecabecera;
        asientosDetalle.BEAsientosContables.Empresa = HttpContext.Current.Session["EmpresaID"].ToString();
        asientosDetalle.BEAsientosContables.Anio = anio;
        asientosDetalle.AsientoContableDetalleID = idDetalle;

        asientosDetalle.BEAuditores.UsuarioID = Convert.ToInt32(HttpContext.Current.Session["UsuarioID"]);
        asientosDetalle.BEAuditores.UsuarioIdAutorizado = 0;
        asientosDetalle.BEAuditores.IPEquipo = Cls_Enums.f_DatosPC.IPPC;
        asientosDetalle.BEAuditores.UsuarioActualEquipo = Cls_Enums.f_DatosPC.UsuarioPC;
        asientosDetalle.BEAuditores.NombreEquipo = Cls_Enums.f_DatosPC.NombrePC;
        asientosDetalle.BEAuditores.TablaMovimientoID = string.Empty;
        int? hotelIDF = string.IsNullOrEmpty(hotelID.Trim()) ? (Int32?)null : Int32.Parse(hotelID.Trim());
        asientosDetalle.BEAsientosContables.HotelID = Convert.ToInt32(hotelIDF);
        valor = objlg_AsientosContablesDetalle.fnSelAsientosContablesDetalleEliminar(asientosDetalle);

        return valor;
    }

    [WebMethod]
    [ScriptMethod]
    public static string ActivarUnidadNegocio()
    {
        string variable;
        BEParametrosGenerales objBEParametrosGenerales = new BEParametrosGenerales();
        BLParametrosGenerales objBLParametrosGenerales = new BLParametrosGenerales();
        objBEParametrosGenerales.ParametroGeneralID = 10153;
        List<BEParametrosGenerales> lstBEParametrosGenerales = objBLParametrosGenerales.fnSelParametrosGenerales(objBEParametrosGenerales);
        variable = lstBEParametrosGenerales[0].Valor;
        return variable;
    }

    [WebMethod]
    [ScriptMethod]
    public static List<string> TraerUnidadNegocio(string idDetalleAsiento)
    {
        BEUnidadesDeNegocio objet_AsientosContablesDetalle = new BEUnidadesDeNegocio();
        List<BEUnidadesDeNegocio> listaDetalle = new List<BEUnidadesDeNegocio>();
        DLAsientosContables loDLAsientosContables = new DLAsientosContables();
        string establecimiento = HttpContext.Current.Session["EmpresaID"].ToString();
        string periodo = HttpContext.Current.Session["txtPeriodo"].ToString();
        List<string> listaNueva = new List<string>();
        listaDetalle = loDLAsientosContables.TraerUnidadNegocio(establecimiento, periodo, idDetalleAsiento);
        foreach (var item in listaDetalle)
        {
            listaNueva.Add(item.UnidadNegocioID + "|" + item.importeSoles + "|" + item.importeDolares);
        }
        return listaNueva;
    }

}