using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BE;
using BL;
using Utilitaria;
using Telerik.Web.UI;
using System.Web.UI.HtmlControls;

using System.Globalization;
using System.Threading;
using System.Data.SqlClient;
using System.Configuration;

public partial class frmListaAsientos : 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");
        if (Session["Usuario"] == null)
        {
            Response.Redirect(Utilitaria.Cls_Enums.CerrarSesion.Salir);
        }
        this.Titulo.Text = Session["Titulo"].ToString().Trim();

        if (!Page.IsPostBack)
        {
           
            ViewState["Click"] = "1";
            Cls_Propiedades.TempAsientosContables.Clear();

            

            //this.imgLogo.ImageUrl = Session["imgLogoSGH"].ToString();
            //this.imgLogoEmpresa.ImageUrl = Session["imgLogoEmpresa"].ToString();

            //ViewState["FecDesde"] = Request.QueryString["FD"];
            //ViewState["FecHasta"] = Request.QueryString["FH"];
            ViewState["CtaInicio"] = Request.QueryString["CI"];
            ViewState["CtaFin"] = Request.QueryString["CF"];

            ViewState["FecDesde"] = Session["desde"];
            ViewState["FecHasta"] = Session["hasta"];


            /////////////////////////// Inicio Parametros Cabecera 
            this.lblMoneda.Text = Utilitaria.Cls_Utilitaria.f_MostraNombreMoneda(Convert.ToInt32(Session["MonedaID"].ToString()), 3);
            if (ViewState["FecDesde"]== "" || ViewState["FecDesde"] == null || ViewState["FecHasta"] == "" || ViewState["FecHasta"] == null)
            {
                this.lblDesde.Text = "--/--/----";
                this.lblHasta.Text = "--/--/----";
                ViewState["FecDesde"] = "";
                ViewState["FecHasta"] = "";

            }
            else 
            {
                this.lblDesde.Text = String.Format("{0:dd/MM/yyyy}", Convert.ToDateTime(ViewState["FecDesde"]));
                this.lblHasta.Text = String.Format("{0:dd/MM/yyyy}", Convert.ToDateTime(ViewState["FecHasta"]));
                ViewState["FecDesde"] = Request.QueryString["FD"];
                ViewState["FecHasta"] = Request.QueryString["FH"];
            }

            if (ViewState["CtaInicio"] == "" || ViewState["CtaInicio"] == null || ViewState["CtaFin"] == "" || ViewState["CtaFin"] == null)
            {
                ViewState["CtaInicio"] = "";
                ViewState["CtaFin"] = "";

            }
            else
            {
                ViewState["CtaInicio"] = Request.QueryString["CI"];
                ViewState["CtaFin"] = Request.QueryString["CF"];
            }
            
            /////////////////////////// Fin Parametros Cabecera 

            Nombre_SubDiario(Request.QueryString["ID"]);            
            ViewState["SubDiarioID"] = Request.QueryString["ID"];

            if (ViewState["SubDiarioID"] == "0")
            {
                
            }

            ViewState["HotelID"] = Request.QueryString["HTL"].ToString().Trim();

            if (ViewState["HotelID"] == "" || Convert.ToInt32(ViewState["HotelID"].ToString()) == 0)
            { ViewState["HotelID"] = Session["HotelID"].ToString().Trim(); }
            if (ViewState["HotelID"].ToString().Trim() != "0")
            {
                BLHoteles oBLHoteles = new BLHoteles();
                List<BEHoteles> loHoteles;
                loHoteles = oBLHoteles.fnSelHotelesDin("Where HotelID=" + ViewState["HotelID"].ToString().Trim(), "");
                lblSucursal.Text = loHoteles[0].NombreHotel;
            }
            else
            {
                lblSucursal.Text = "Todas";
            }

            ViewState["UnidadNegocioID"] = Request.QueryString["UNG"];
            if (ViewState["UnidadNegocioID"] == "") ViewState["UnidadNegocioID"] = "0";
            if (ViewState["UnidadNegocioID"] != "0")
            {
                BLUnidadesDeNegocio oBLUnidadesDeNegocio = new BLUnidadesDeNegocio();
                BEUnidadesDeNegocio oBEUnidadesDeNegocio = new BEUnidadesDeNegocio();
                oBEUnidadesDeNegocio.EstablecimientoID = Convert.ToInt32(Session["EmpresaID"].ToString());
                List<BEUnidadesDeNegocio> loUnidadesDeNegocio;
                loUnidadesDeNegocio = oBLUnidadesDeNegocio.fnSelUnidadesDeNegocioDin(oBEUnidadesDeNegocio,"and UnidadNegocioID=" + ViewState["UnidadNegocioID"].ToString().Trim(), "");
                lblUnidadNegocio.Text = loUnidadesDeNegocio[0].NombreUnidadNegocio;
            }
            else
            {
                lblUnidadNegocio.Text = "Todas";
            }

            ViewState["AreaID"] = Request.QueryString["ARA"].ToString().Trim();
            if (ViewState["AreaID"].ToString() == "") ViewState["AreaID"] = "0";
            if (ViewState["AreaID"].ToString() != "0")
            {
                BLAreas oBLAreas = new BLAreas();
                List<BEAreas> loAreas;
                loAreas = oBLAreas.fnSelAreasDin("AreaID=" + ViewState["AreaID"].ToString().Trim(), "");
                lblArea.Text = loAreas[0].NombreArea;
            }
            else
            {
                lblArea.Text = "Todas";
            }


            this.btnEliminar.Attributes.Add("onclick", "javascript :if(confirm('¿Desea eliminar los asientos?')== false) return false;");

            if (ViewState["SubDiarioID"].ToString() == "0")
            {
                 this.btnNuevo.Visible = false;
            }
            DateTime fechaDesde;
            if (ViewState["FecDesde"].Equals(""))
                fechaDesde = Convert.ToDateTime(null);
            else
                fechaDesde = Convert.ToDateTime(ViewState["FecDesde"]);
            SubDiarioBloqueo(Convert.ToInt32(Session["EmpresaID"].ToString()),Convert.ToInt32(ViewState["HotelID"]), ViewState["SubDiarioID"].ToString(), fechaDesde, Convert.ToInt32(Session["txtPeriodo"].ToString()));

        }
   }

    override protected void OnInit(EventArgs e)
    {
        //
        // CODEGEN: This call is required by the ASP.NET Web Form Designer.
        //
        InitializeComponent();
        base.OnInit(e);
    }

    private void InitializeComponent()
    {
       // this.Load += new System.EventHandler(this.Page_Load);
    }

    private void SubDiarioBloqueo(Int32 EstablecimientoID, Int32 HotelID, String SubDiarioID, DateTime FecDesde, Int32 Ejercicio)
    { 
        //Session["txtPeriodo"].ToString();
        //txtDesde.DbSelectedDate.ToString().Substring(3, 2).Trim()
        Int32 ValorRetorno=0;
        BLSubDiarios objlg_SubDiarios = new BLSubDiarios();
        ValorRetorno = objlg_SubDiarios.fnSelSubDiariosBloqueados(EstablecimientoID, HotelID, SubDiarioID, FecDesde, Ejercicio);
        if (ValorRetorno > 0)
        {
            this.btnEliminar.Visible=false;
            //nbernuy 090216
            this.btnNuevo.Visible = false;
        }
        else
        {
            this.btnEliminar.Visible = true;
            this.btnNuevo.Visible = true;
        }


    }

    private void listar(String SubDiarioID)
    {
        DataTable tabla;
        if (ViewState["Click"] == "1" && Cls_Propiedades.TempAsientosContables.Count==0)
        {
            BEAsientosContables objet_AsientosContables = new BEAsientosContables();
            BLAsientosContables objlg_AsientosContables = new BLAsientosContables();

            objet_AsientosContables.Cabecera = Cls_Enums.TablasAsientosDetalle.Cabecera;
            objet_AsientosContables.Detallecabecera = Cls_Enums.TablasAsientosDetalle.Detallecabecera;
            objet_AsientosContables.Empresa = Session["EmpresaID"].ToString();
            objet_AsientosContables.Anio = Session["txtPeriodo"].ToString();
            objet_AsientosContables.SubDiarioID = SubDiarioID;
            objet_AsientosContables.HotelID = Convert.ToInt32(ViewState["HotelID"]);
            DateTime? FechaDesde;
            DateTime? FechaHasta;
            try
            {
                FechaDesde = (ViewState["FecDesde"].ToString() == "") ? (DateTime?)null : Convert.ToDateTime(ViewState["FecDesde"]);
            }
            catch { FechaDesde = (DateTime?)null; }
            try
            {
                FechaHasta = (ViewState["FecHasta"].ToString() == "") ? (DateTime?)null : Convert.ToDateTime(ViewState["FecHasta"]);
            }
            catch { FechaHasta = (DateTime?)null; }

            objet_AsientosContables.WhereCondition = " and acd.areaid=" + ViewState["AreaID"]; // + SubDiarioID; 

            if (ViewState["AreaID"].Equals("0"))
            {
                objet_AsientosContables.WhereCondition = "";
            }

            if (!ViewState["AreaID"].Equals("0") && !ViewState["UnidadNegocioID"].Equals("0"))
            {
                objet_AsientosContables.WhereCondition = " and acd.areaid=" + ViewState["AreaID"] + " and  acd.areaid=(select top 1 unidadNegocioID  from areas where unidadNegocioID=" + ViewState["UnidadNegocioID"] + ")";
            }

            if (chkImporteCuadra.Checked == true)
            {
                //objet_AsientosContables.HavingCondition = " Having Sum(Case When MontoDebe != 0 Then ImporteSoles Else 0 End - Case When MontoHaber != 0 Then ImporteSoles Else 0 End)=0 and Sum(Case When MontoDebe != 0 Then ImporteDolares Else 0 End - Case When MontoHaber != 0 Then ImporteDolares Else 0 End)=0";
                //DIEGO Nueva Condicion Cuadrados y No Cuadrados
                objet_AsientosContables.Cuadrados = "1";
                //FIN DIEGO Nueva Condicion Cuadrados y No Cuadrados
            }
            else
            {
                //DIEGO Nueva Condicion Cuadrados y No Cuadrados
                objet_AsientosContables.Cuadrados = "0";
                //FIN DIEGO Nueva Condicion Cuadrados y No Cuadrados
            }

            if (chkImporteNoCuadra.Checked == true)
            {
                //objet_AsientosContables.HavingCondition = " Having Sum(Case When MontoDebe != 0 Then ImporteSoles Else 0 End - Case When MontoHaber != 0 Then ImporteSoles Else 0 End)!=0 or Sum(Case When MontoDebe != 0 Then ImporteDolares Else 0 End - Case When MontoHaber != 0 Then ImporteDolares Else 0 End)!=0";
                //DIEGO Nueva Condicion Cuadrados y No Cuadrados
                objet_AsientosContables.NoCuadrados = "1";
                //FIN DIEGO Nueva Condicion Cuadrados y No Cuadrados
            }
            else
            {
                //DIEGO Nueva Condicion Cuadrados y No Cuadrados
                objet_AsientosContables.NoCuadrados = "0";
                //FIN DIEGO Nueva Condicion Cuadrados y No Cuadrados
            }
            if (chkImporteCuadra.Checked == true && chkImporteNoCuadra.Checked == true)
            {
                //objet_AsientosContables.HavingCondition = null; //DIEGO Nueva Condicion Cuadrados y No Cuadrados
            }
            if (chkImporteCuadra.Checked == false && chkImporteNoCuadra.Checked == false)
            {
                objet_AsientosContables.WhereCondition = " and ACC.asientocontableID='@@'";
            }
            if (ViewState["CtaInicio"] == null || ViewState["CtaFin"] == null)
            {
                ViewState["CtaInicio"] = "";
                ViewState["CtaFin"] = "";
            }

            try
            {
                Session["tablatemporal"] = objlg_AsientosContables.fnSelAsientosContablesDin(objet_AsientosContables, FechaDesde, FechaHasta, ViewState["CtaInicio"].ToString().Trim(), ViewState["CtaFin"].ToString().Trim(), this.cbxFiltro.SelectedValue.Trim());
                
            }
            catch (Exception ex)
            {
                showMessage(ex.ToString());
            }

            if (objet_AsientosContables.HavingCondition == null)
            {
                objet_AsientosContables.HavingCondition = "";
            }
            ReporteBoton.Attributes.Add("onClick", "NewWindow('frm_ReporteListaAsientos.aspx?NomCabecera=" + objet_AsientosContables.Cabecera.ToString() + "&NomCabeceraDetalle=" + objet_AsientosContables.Detallecabecera.ToString() + "&Empresa=" + objet_AsientosContables.Empresa.ToString() + "&anio=" + objet_AsientosContables.Anio.ToString() + "&FechaDesde=" + FechaDesde + "&FechaHasta=" + FechaHasta + "&PlanCuentaID=" + ViewState["CtaInicio"].ToString().Trim() + "&PlanCuentaID2=" + ViewState["CtaFin"].ToString().Trim() + "&SubDiarioID=" + objet_AsientosContables.SubDiarioID.ToString() + "&HotelID=" + objet_AsientosContables.HotelID.ToString() + "&WhereCondition=" + objet_AsientosContables.WhereCondition.ToString() + "&HavingCondition=" + objet_AsientosContables.HavingCondition.ToString() + "&TiposCuadre=" + this.cbxFiltro.SelectedValue.Trim() + "')");

            objet_AsientosContables = null;
            objlg_AsientosContables = null;

        }
        //tk_Grid2.DataSource = Cls_Propiedades.TempAsientosContables;
        //tk_Grid2.DataBind();
        
        //tk_Grid.DataSource = Cls_Propiedades.TempAsientosContables;
        tk_Grid.DataSource = Session["tablatemporal"];
        //tk_Grid.ClientSettings.DataBinding.EnableCaching = true;

        ViewState["Click"] = "";

        

    }
    private void Nombre_SubDiario(String SubDiarioID)
    {
        BESubDiarios objet_SubDiarios = new BESubDiarios();
        BLSubDiarios objlg_SubDiarios = new BLSubDiarios();
        List<BESubDiarios> Col_SubDiarios;

        if (SubDiarioID != "0")
        {
            Col_SubDiarios = objlg_SubDiarios.fnSelSubDiariosDin("SubDiarioID=" + SubDiarioID.Trim(), "");
            this.lblDiarioAuxiliar.Text = Col_SubDiarios[0].CodigoSubDiario + " / " + Col_SubDiarios[0].NombreSubDiario;

            objet_SubDiarios = null;
            objlg_SubDiarios = null;
        }
    }
    private string  Nombre_SubDiario2(String SubDiarioID)
    {
        string nom = "";
        BESubDiarios objet_SubDiarios = new BESubDiarios();
        BLSubDiarios objlg_SubDiarios = new BLSubDiarios();
        List<BESubDiarios> Col_SubDiarios;

        if (SubDiarioID != "0")
        {
            Col_SubDiarios = objlg_SubDiarios.fnSelSubDiariosDin("SubDiarioID=" + SubDiarioID.Trim(), "");
            nom = Col_SubDiarios[0].CodigoSubDiario + " / " + Col_SubDiarios[0].NombreSubDiario;

            objet_SubDiarios = null;
            objlg_SubDiarios = null;
        }
        return nom;
    }
    protected void btn_Actualizar_Click(object sender, ImageClickEventArgs e)
    {
        tk_Grid.Rebind();

    }
    
    private void EliminarAsiento(String AsientoContableID,Int32 HotelID)
    {
        BEAsientosContables objet_AsientosContables = new BEAsientosContables();
        BLAsientosContables objlg_AsientosContables = new BLAsientosContables();

        objet_AsientosContables.Detallecabecera = Cls_Enums.TablasAsientosDetalle.Detallecabecera;
        objet_AsientosContables.Empresa = Session["EmpresaID"].ToString();
        objet_AsientosContables.Anio = Session["txtPeriodo"].ToString();
        objet_AsientosContables.AsientoContableID = AsientoContableID;

        ////////// Inicio Campos Auditores. //////////
        objet_AsientosContables.BEAuditores.UsuarioID = Convert.ToInt32(Session["UsuarioID"]);
        objet_AsientosContables.BEAuditores.UsuarioIdAutorizado = 0;
        objet_AsientosContables.BEAuditores.IPEquipo = Cls_Enums.f_DatosPC.IPPC;
        objet_AsientosContables.BEAuditores.UsuarioActualEquipo = Cls_Enums.f_DatosPC.UsuarioPC;
        objet_AsientosContables.BEAuditores.NombreEquipo = Cls_Enums.f_DatosPC.NombrePC;
        objet_AsientosContables.BEAuditores.TablaMovimientoID = Cls_Enums.TablaMovimientos.Asientos;
        ////////// Fin Campos Auditores. //////////
        objet_AsientosContables.HotelID = HotelID;

        try
        {
            int intRetorno = objlg_AsientosContables.fnEliminaAsientosContables(objet_AsientosContables);
            showMessage("Se Elimino con Exito");
        }
        catch (Exception ex)
        {
            showMessage(ex.ToString());
        }
        objet_AsientosContables = null;
        objlg_AsientosContables = null;


    }
    protected void showMessage(string strMessage)
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "alert('" + strMessage + "');", true);
    }
    protected void tk_Grid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
    {
        listar(ViewState["SubDiarioID"].ToString());
    }
    String currUrl="";
    protected void tk_Grid_ItemDataBound(object sender, GridItemEventArgs e)
    {
       
        String CurrUrl;
        if (e.Item is GridGroupHeaderItem)
        {
            GridGroupHeaderItem item = (GridGroupHeaderItem)e.Item;
            //LinkButton hyperlnk = new LinkButton();
            HyperLink hyperlnk = new HyperLink();
            System.Data.DataRowView groupDataRow = (System.Data.DataRowView)e.Item.DataItem;
            
           
            hyperlnk.Text = item.DataCell.Text.Substring(8, item.DataCell.Text.Length - 8); //groupDataRow["SubDiarioID"].ToString();
            hyperlnk.CssClass = "gridtextbold";

            ViewState["FecDesde"] = Request.QueryString["FD"];
            ViewState["FecHasta"] = Request.QueryString["FH"];
            ViewState["CtaInicio"] = Request.QueryString["CI"];
            ViewState["CtaFin"] = Request.QueryString["CF"];

            CurrUrl = "ConsolidadoDiarioAuxiliar.aspx?DRO=" + groupDataRow["SubDiarioID"].ToString().Trim() + "&HTL=" + ViewState["HotelID"].ToString().Trim() + "&UNG=" + ViewState["UnidadNegocioID"].ToString().Trim() + "&ARA=" + ViewState["AreaID"].ToString().Trim() + "&FD=" + ViewState["FecDesde"] + "&FH=" + ViewState["FecHasta"] + "&CPC1=" + ViewState["CtaInicio"] + "&CPC2=" + ViewState["CtaFin"];
            hyperlnk.NavigateUrl = "#";
            hyperlnk.Attributes.Add("OnClick", "NewWindow('" + CurrUrl + "','ConsolidadoDiarioAuxiliar');");
            //hyperlnk.NavigateUrl= CurrUrl ;
            //hyperlnk.Target = "blank";
            item.DataCell.Controls.Clear();
            item.DataCell.Controls.Add(hyperlnk);

        }
        if (e.Item is GridFooterItem)
        {
            GridFooterItem item = (GridFooterItem)e.Item;

            if (item["SaldoSoles"].Text.Trim() == "0.00")
            {
                item["SaldoSoles"].Text = "";
            }
            if (item["SaldoDolares"].Text.Trim() == "0.00")
            {
                item["SaldoDolares"].Text = "";
            }

        }

        if (e.Item is GridGroupFooterItem)
        {
            GridGroupFooterItem item = (GridGroupFooterItem)e.Item;
            item["DebeSoles"].CssClass = "arial10bold";
            item["HaberSoles"].CssClass = "arial10bold";
            item["SaldoSoles"].CssClass = "arial10bold";
            item["DebeDolares"].CssClass = "arial10bold";
            item["HaberDolares"].CssClass = "arial10bold";
            item["SaldoDolares"].CssClass = "arial10bold";


            item["DebeSoles"].Style["border-top"] = "1px solid #000000";
            item["HaberSoles"].Style["border-top"] = "1px solid #000000";
            item["SaldoSoles"].Style["border-top"] = "1px solid #000000";
            item["DebeDolares"].Style["border-top"] = "1px solid #000000";
            item["HaberDolares"].Style["border-top"] = "1px solid #000000";
            item["SaldoDolares"].Style["border-top"] = "1px solid #000000";

            if (item["SaldoSoles"].Text.Trim() == "0.00")
            {
                item["SaldoSoles"].Text = "";
            }
            if (item["SaldoDolares"].Text.Trim() == "0.00")
            {
                item["SaldoDolares"].Text = "";
            }

        }

        if (e.Item is GridDataItem)
        {
            GridDataItem dataItem = (GridDataItem)e.Item;

            if (dataItem["SaldoSoles"].Text.Trim() == "0.00")
            {
                dataItem["SaldoSoles"].Text = "";
            }

            if (dataItem["SaldoDolares"].Text.Trim() == "0.00")
            {
                dataItem["SaldoDolares"].Text = "";
            }

            if(Mostrar0() == 0)
            {
                if (dataItem["DebeSoles"].Text.Trim() == "0.00")
                {
                    dataItem["DebeSoles"].Text = "";
                }
                if (dataItem["HaberSoles"].Text.Trim() == "0.00")
                {
                    dataItem["HaberSoles"].Text = "";
                }
                if (dataItem["DebeDolares"].Text.Trim() == "0.00")
                {
                    dataItem["DebeDolares"].Text = "";
                }
                if (dataItem["HaberDolares"].Text.Trim() == "0.00")
                {
                    dataItem["HaberDolares"].Text = "";
                }
            }
            HyperLink ArchivoLink = (HyperLink)e.Item.FindControl("ArchivoLink");
            //Int32 NumArchivo = Convert.ToInt32(dataItem["NunArchivos"].Text);
            Int32 NumArchivo = 0;
           
            ArchivoLink.Attributes["href"] = "#";
            ArchivoLink.Text = NumArchivo.ToString();
            //ArchivoLink.Attributes["href"] = String.Format("return ShowEditForm('{0}','{1}','{2}');", e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["AsientoContableID"], e.Item.ItemIndex, dataItem["SubDiarioID"].Text.Trim());
            ArchivoLink.Attributes["onclick"] = String.Format("return ShowEditForm('{0}','{1}','{2}');", e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["AsientoContableID"], e.Item.ItemIndex, dataItem["SubDiarioID"].Text.Trim());

            if (NumArchivo > 0)
            {
                ArchivoLink.ImageUrl = "~/images/botones/attachFolfer.gif";
            }

            //HyperLink Locked = (HyperLink)e.Item.FindControl("Locked");
            //Locked.Attributes["href"] = "#";
            //if (dataItem["Bloqueado"].Text == "0")
            //{
            //    Locked.ImageUrl = "~/images/unlock.PNG";
            //}
            ImageButton img = (ImageButton)e.Item.FindControl("btnLock");
            img.Attributes["href"] = "#";
            //Diego 11/08/2015 // Problemas imprimir
            img.CommandArgument = dataItem["AsientoContableID"].ToString();
            Image imgEditar = (Image)e.Item.FindControl("btnEditar");
        

            string sd = (e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["SubDiarioID"].ToString());
            string nomauxi = Nombre_SubDiario2(sd);
            imgEditar.Attributes.Add("onClick", "javascript: NewWindow('frmAsientosDetalle.html?ID=" + e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["AsientoContableID"] + "&emp=" + Session["EmpresaID"].ToString() + "&USU=" + dataItem["NombreUsuario"].Text.ToString() + "&FEC=" + dataItem["FechaRegistro"].Text.ToString() + "&IDS=" + sd + "&auxiliar=" + nomauxi + "&Comprobante=" + dataItem["Comprobante"].Text.ToString() + "','CreaEditaAsientoDetalle','screen.width','screen.height','yes');");
            ImageButton imgAuditoria = (ImageButton)e.Item.FindControl("btnAuditoria");
            imgAuditoria.Attributes.Add("onClick", "javascript: NewWindow('List_Auditoria.aspx?ACCID=" + e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["AsientoContableID"] + "','SGH Perú - Historico','840','500','yes','no');");
            //

            switch(dataItem["Bloqueado"].Text)
            {
                case "0":
                    img.ImageUrl = "~/images/unlock.PNG";
                    img.Attributes.Add("onclick", "javascript :if(confirm('¿Desea bloquear el asiento?')== false) return false;");
                    img.ToolTip = "Bloquear";
                    break;
                case "1":
                    img.Attributes.Add("onclick", "javascript :if(confirm('¿Desea desbloquear el asiento?')== false) return false;");
                    img.ToolTip = "Desbloquear";
                    break;
                case "2":
                    img.ImageUrl = "~/images/lockdisable.PNG";
                    //img.Attributes.Add("onclick", "javascript :if(confirm('¿Desea bloquear el asiento?')== false) return false;");
                    img.ToolTip = "Bloqueado por Transferencia";
                    break;
            }

        }

        
        

    }

    protected void tk_Grid_ItemCreated(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridPagerItem)
        {
            var dropDown = (RadComboBox)e.Item.FindControl("PageSizeComboBox");
            var totalCount = ((GridPagerItem)e.Item).Paging.DataSourceCount;
            var sizes = new Dictionary<string, string>()
                {
            {"10", "10"},
            {"20", "20"},
            {"50", "50"}
                };

            if (totalCount > 100)
            {
                sizes.Add("100", "100");
            }
            if (totalCount > 200)
            {
                sizes.Add("200", "200");
            }
            if (totalCount > 500)
            {
                sizes.Add("500", "500");
            }
            sizes.Add("All", totalCount.ToString());

            if (sizes.Where(x => x.Key == e.Item.OwnerTableView.PageSize.ToString()).FirstOrDefault().Value == null)
            {
                sizes.Add(e.Item.OwnerTableView.PageSize.ToString(), e.Item.OwnerTableView.PageSize.ToString());
            }

            dropDown.Items.Clear();
            foreach (var size in sizes)
            {
                var cboItem = new RadComboBoxItem() { Text = size.Key, Value = size.Value };
                cboItem.Attributes.Add("ownerTableViewId", e.Item.OwnerTableView.ClientID);
                dropDown.Items.Add(cboItem);
            }

            dropDown.FindItemByValue(e.Item.OwnerTableView.PageSize.ToString()).Selected = true;
        }
    }

    protected void tk_Grid_ItemCommand(object source, GridCommandEventArgs e)
    {
         
        if (e.CommandName == "Bloquear")
        {
            if (Cls_Propiedades.PrivilegiosUsuario[0].ModificaAsiento == 1)
            {
                BLAsientosContables objBLAsientosContables = new BLAsientosContables();
                String AsientoContableID = e.CommandArgument.ToString().Trim();
                BEAsientosContables objBEAsientosContables = objBLAsientosContables.fnSelAsientosContables(Cls_Enums.TablasAsientosDetalle.Cabecera, Session["EmpresaID"].ToString(), Session["txtPeriodo"].ToString(), AsientoContableID)[0];
                objBEAsientosContables.AsientoContableID = objBEAsientosContables.AsientoContableID.Trim();
                objBEAsientosContables.Cabecera = Cls_Enums.TablasAsientosDetalle.Cabecera;
                objBEAsientosContables.Empresa = Session["EmpresaID"].ToString();
                objBEAsientosContables.Anio = Session["txtPeriodo"].ToString();

                BLSubDiariosBloqueo objBLSubDiariosBloqueo = new BLSubDiariosBloqueo();
                String Where = "SubDiarioID=" + objBEAsientosContables.SubDiarioID.Trim();
                Where += " AND Mes=" + objBEAsientosContables.Dia.Value.Month;
                Where += " AND Ejercicio=" + objBEAsientosContables.Dia.Value.Year;
                Where += " AND EstablecimientoID=" + Session["EmpresaID"].ToString();

                List<BESubDiariosBloqueo> lstBESubDiariosBloqueo = objBLSubDiariosBloqueo.fnSelSubDiariosBloqueoDin(Where, "");

                if (lstBESubDiariosBloqueo.Count != 0)
                {
                    foreach (BESubDiariosBloqueo SubDiariosBloqueo in lstBESubDiariosBloqueo)
                    {
                        if (SubDiariosBloqueo.Bloqueado == 1)
                        {
                            showMessage("No se puede modificar el asiento, se encuentra bloqueado");
                            return;
                        }
                    }
                }

                GridDataItem dataItem = (GridDataItem)e.Item;
                ImageButton img = (ImageButton)e.Item.FindControl("btnLock");
                img.Attributes["href"] = "#";
                switch (dataItem["Bloqueado"].Text)
                { 
                    case "0":
                        img.ImageUrl = "~/images/lock.GIF";
                        objBEAsientosContables.Bloqueado = 1;
                        objBLAsientosContables.fnInsUpdAsientosContables(objBEAsientosContables);
                        img.Attributes.Add("onclick", "javascript :if(confirm('¿Desea desbloquear el asiento?')== false) return false;");
                        break;
                    case "1":
                        img.ImageUrl = "~/images/unlock.PNG";
                        objBEAsientosContables.Bloqueado = 0;
                        objBLAsientosContables.fnInsUpdAsientosContables(objBEAsientosContables);
                        img.Attributes.Add("onclick", "javascript :if(confirm('¿Desea bloquear el asiento?')== false) return false;");
                        break;
                    case "2":
                        img.ImageUrl = "~/images/lockdisable.PNG";
                        showMessage("Imposible Modificar el Asiento");
                        //img.Attributes.Add("onclick", "javascript :if(confirm('¿Desea bloquear el asiento?')== false) return false;");
                        break;
                }
                
                tk_Grid.Rebind();
            }
            else
            {
                showMessage("No posee los privilegios necesario para completar la operación");
            }
        }

        listar(ViewState["SubDiarioID"].ToString());

    }
    protected void btnEliminar_Click(object sender, EventArgs e)
    {
        ViewState["Click"] = "1";
        Cls_Propiedades.TempAsientosContables.Clear();
        String AsientoContableID = "";
        Int32 HotelID ;
        Int32 Bloqueado;
        Mensaje.Visible = false;

        Int32 Cant = tk_Grid.SelectedItems.Count;
        ////showMessage(tk_Grid.SelectedItems[0].OwnerTableView.DataKeyValues[tk_Grid.SelectedItems[0].ItemIndex]["AsientoContableID"].ToString());
        try
        {
        //    for (Int32 i = 0; i < Cant; i++)
        //    {

                BLAsientosContables objBLAsientosContables = new BLAsientosContables();
                BEAsientosContables objBEAsientosContables = new BEAsientosContables();

                for (int j = 0; j < tk_Grid.SelectedItems.Count; j++)
                {
                    AsientoContableID = tk_Grid.SelectedItems[j].OwnerTableView.DataKeyValues[tk_Grid.SelectedItems[j].ItemIndex]["AsientoContableID"].ToString();
                    HotelID = Convert.ToInt32(tk_Grid.SelectedItems[j].OwnerTableView.DataKeyValues[tk_Grid.SelectedItems[j].ItemIndex]["HotelID"].ToString().Trim());
                    Bloqueado = Convert.ToInt32(tk_Grid.SelectedItems[j].OwnerTableView.DataKeyValues[tk_Grid.SelectedItems[j].ItemIndex]["Bloqueado"].ToString());
                  //if (tk_Grid.Items[j]["AsientoContableID"].Text == AsientoContableID)
                    //if (tk_Grid.SelectedItems[j].OwnerTableView.DataKeyValues[tk_Grid.SelectedItems[j].ItemIndex]["AsientoContableID"].ToString() == AsientoContableID)
                    //{
                        if (Bloqueado  == 1)
                        {
                            showMessage("No se pueden eliminar asientos bloqueados.");
                            tk_Grid.Rebind();
                            return;
                        }
                        else
                        {
                            if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                            {
                                if (Cant > 1)
                                {
                                    if (Bloqueado == 2)
                                    {
                                        EliminarAsiento(AsientoContableID, HotelID);
                                    }
                                    else
                                    {
                                        //ViewState["NoElimar"] = "\\n* Si los asientos no se eliminaron es porque \\nno está permitida su eliminación en Grupo.";
                                        Mensaje.Visible = true;
                                    }
                                }
                                else
                                {
                                    EliminarAsiento(AsientoContableID, HotelID);
                                }
                            }
                            else
                            {
                                showMessage("No posee los privilegios necesario para completar la operación");
                            }
                        }
                    //}
                }

            //}
        }
        catch (Exception ex)
        {
            showMessage(ex.Message);
        }

        tk_Grid.Rebind();
    }

    private static string GetConnectionString()
    {
        return ConfigurationManager.ConnectionStrings["SHIOL_CONTA_BTHConnectionString"].ConnectionString;
    }
    protected void btnEliminarTodo_Click(object sender, EventArgs e)
    {
        SqlConnection sqlConnection1 = new SqlConnection(GetConnectionString());
        SqlCommand cmd = new SqlCommand();
        SqlDataReader reader;

        cmd.CommandText = "UCO_AsientoContable_EliminaTodos_No_Bloqueados";
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter Desde = cmd.Parameters.Add("@Desde", SqlDbType.Date);
        SqlParameter Hasta = cmd.Parameters.Add("@Hasta", SqlDbType.Date);
        SqlParameter EstablecimientoID = cmd.Parameters.Add("@EstablecimientoID", SqlDbType.Int);
        SqlParameter Periodo = cmd.Parameters.Add("@Periodo", SqlDbType.Int);
        SqlParameter SubDiarioId = cmd.Parameters.Add("@SubDiarioId", SqlDbType.Int);

        Desde.Value = ViewState["FecDesde"];
        Hasta.Value = ViewState["FecHasta"];
        EstablecimientoID.Value = Convert.ToInt32(Session["EmpresaID"].ToString());
        Periodo.Value = Convert.ToInt32(Session["txtPeriodo"].ToString());
        SubDiarioId.Value = ViewState["SubDiarioID"];

        cmd.Connection = sqlConnection1;

        sqlConnection1.Open();

        cmd.ExecuteReader();

        tk_Grid.Rebind();
    }
    
    protected void btnActualizar_Click(object sender, EventArgs e)
    {
        ViewState["Click"] = "1";
        Cls_Propiedades.TempAsientosContables.Clear();
        Mensaje.Visible = false;
        tk_Grid.Rebind();
    }

    protected void chkImporteCuadra_CheckedChanged(object sender, EventArgs e)
    {
        ViewState["Click"] = "1";
        Cls_Propiedades.TempAsientosContables.Clear();
        tk_Grid.Rebind();
    }
    protected void chkImporteNoCuadra_CheckedChanged(object sender, EventArgs e)
    {
        ViewState["Click"] = "1";
        tk_Grid.Rebind();
    }

    protected void RadGrid1_GridExporting(object source, GridExportingArgs e)
    {
        if (e.ExportType == ExportType.Excel)
        {
            //string customText = "<h2>" + Establecimientos(Session["EmpresaID"].ToString().Trim()) + "</h2>";
            //e.ExportOutput = e.ExportOutput.Replace("<body>", "<body>" + customText);
            //string customHTML = "<div width=\"100%\" style=\"clear:both;text-align:center;font-size:14px;font-family:Verdana;\">" + "Lista de asientos: " + this.lblDiarioAuxiliar.Text + "</div>";
            //string customHTML = "<table width=\"100%\"><tr><td width=\"33%\">1</td><td width=\"33%\">2</td><td width=\"33%\">3</td></tr></table>";
            //e.ExportOutput = e.ExportOutput.Replace("<body>", String.Format("<body>{0}", customHTML));
            string customHTML = "<table><tr><td colspan=\"5\"><b>" + Establecimientos(Session["EmpresaID"].ToString().Trim()) + "</b><br><b>Lista Asientos:" + this.lblDiarioAuxiliar.Text + "<b><br><b>Desde: " + lblDesde.Text + " Hasta: " + lblHasta.Text + " Moneda: " + lblMoneda.Text + "</b></td><td colspan=\"5\"></td><td><b>" + DateTime.Now.ToShortDateString() + "</b><br><b>" + DateTime.Now.ToShortTimeString() + "</b><br><b>" + Convert.ToString(Session["Usuario"]) + "</b></td></tr><table><hr>";
            e.ExportOutput = e.ExportOutput.Replace("<body>", String.Format("<body>{0}", customHTML));
        }
    }

    private String Establecimientos(String EstablecimientoId)
    {
        BEEstablecimientos objet_Establecimientos = new BEEstablecimientos();
        BLEstablecimientos objlg_Establecimientos = new BLEstablecimientos();
        List<BEEstablecimientos> Col_Establecimientos;
        String strRetorno = String.Empty;

        Col_Establecimientos = objlg_Establecimientos.fnSelEstablecimientosDin("where EstablecimientoId=" + EstablecimientoId, "");

        if (Col_Establecimientos.Count > 0)
        {
            strRetorno = Col_Establecimientos[0].NombreEstablecimiento.Trim();
        }

        objet_Establecimientos = null;
        objlg_Establecimientos = null;

        return strRetorno;

    }

    protected void Exportar_Data(object sender, EventArgs e)
    {
        //if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
        //{
        //    tk_Grid.ExportSettings.ExportOnlyData = true;
        //    tk_Grid.ExportSettings.IgnorePaging = true;
        //    tk_Grid.ExportSettings.OpenInNewWindow = false;
        //    tk_Grid.MasterTableView.ExportToExcel();
        //}
        //else
        //{
        //    showMessage("No posee los privilegios necesario para completar la operación");
        //}

        tk_Grid.ExportSettings.ExportOnlyData = true;
        tk_Grid.ExportSettings.IgnorePaging = true;
        tk_Grid.ExportSettings.OpenInNewWindow = true;
        tk_Grid.ExportSettings.FileName = "Lista Asientos:" + this.lblDiarioAuxiliar.Text;

        switch ((sender as ImageButton).CommandName)
        {
            case "ExportExcel":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    tk_Grid.Columns[0].Visible = false;
                    tk_Grid.Columns[15].Visible = false; 
                    tk_Grid.Columns[16].Visible = false;
                    tk_Grid.Columns[17].Visible = false;

                    tk_Grid.MasterTableView.ExportToExcel();
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "ExportPDF":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    tk_Grid.Columns[0].Visible = false;
                    tk_Grid.Columns[15].Visible = false;
                    tk_Grid.Columns[16].Visible = false;
                    tk_Grid.Columns[17].Visible = false;
                    tk_Grid.MasterTableView.ExportToPdf();
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "ExportWord":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    tk_Grid.Columns[0].Visible = false;
                    tk_Grid.Columns[15].Visible = false;
                    tk_Grid.Columns[16].Visible = false;
                    tk_Grid.Columns[17].Visible = false;
                    tk_Grid.MasterTableView.ExportToWord();
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "ExportCSV":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    tk_Grid.Columns[0].Visible = false;
                    tk_Grid.Columns[15].Visible = false;
                    tk_Grid.Columns[16].Visible = false;
                    tk_Grid.Columns[17].Visible = false;
                    tk_Grid.MasterTableView.ExportToCSV();
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "Print":

                if (Cls_Propiedades.PrivilegiosUsuario[0].Imprime == 1)
                {
                    Response.Write(Cls_Utilitaria.f_Imprime());
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
        }



    }

    private Int32 Mostrar0()
    {
        BEParametrosGenerales objBEParametrosGenerales = new BEParametrosGenerales();
        BLParametrosGenerales objBLParametrosGenerales = new BLParametrosGenerales();
        objBEParametrosGenerales.ParametroGeneralID = 641;
        List<BEParametrosGenerales> lstBEParametrosGenerales = objBLParametrosGenerales.fnSelParametrosGenerales(objBEParametrosGenerales);
        return Convert.ToInt32(lstBEParametrosGenerales[0].Valor);
    }


}
