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

using System.Data;
using System.Data.SqlClient;
using Telerik.Web.UI;
using System.Configuration;
using SHDocVw;
using System.Threading;
using System.Globalization;
using System.ComponentModel;
using System.Text;
using System.IO;

public partial class frmAnalisisPorCuenta : System.Web.UI.Page
{
    public DataTable dt = new DataTable();
    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);
        }

        ViewState["CodigoCuenta"] = Request.QueryString["CTAID"].ToString();

        if (!Page.IsPostBack)
        {

            ViewState["Click"] = "1";
            ViewState["CodigoCuenta2"] = Request.QueryString["CTAID2"].ToString();
            ViewState["Acumulado"] = Request.QueryString["ACUM"].ToString();
            
            ViewState["MonedaID"] = Request.QueryString["MON"].ToString();

            /////////////////////////// Inicio Parametros Cabecera 
            if (Session["Desde"] != null)
            {
                ViewState["FecDesde"] = Session["Desde"].ToString();
            }
            if (Session["Hasta"] != null)
            {
                ViewState["FecHasta"] = Session["Hasta"].ToString();
            }
            

            this.lblMoneda.Text = Utilitaria.Cls_Utilitaria.f_MostraNombreMoneda(Convert.ToInt32(ViewState["MonedaID"].ToString()), 3);
            if (ViewState["FecDesde"] == "" || ViewState["FecDesde"] == null || ViewState["FecHasta"] == "" || ViewState["FecHasta"] == null)
            {
                this.lblDesde.Text = "--/--/----";
                this.lblHasta.Text = "--/--/----";
                ViewState["FechaDesde"] = "";
                ViewState["FechaHasta"] = "";
            }
            else
            {
                if (Request.QueryString["FED"] != "" || Request.QueryString["FEH"] != "")
                {
                    ViewState["FechaDesde"] = String.Format("{0:dd/MM/yyyy}", Convert.ToDateTime(Request.QueryString["FED"].ToString()));
                    ViewState["FechaHasta"] = String.Format("{0:dd/MM/yyyy}", Convert.ToDateTime(Request.QueryString["FEH"].ToString()));
                    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"]));
                }
                else {
                    this.lblDesde.Text = "--/--/----";
                    this.lblHasta.Text = "--/--/----";
                    ViewState["FechaDesde"] = "";
                    ViewState["FechaHasta"] = "";
                }
            }
            /////////////////////////// Fin Parametros Cabecera 

            ViewState["Mes"] = Request.QueryString["Mes"].ToString();
            //lblPeriodo.Text = ViewState["Mes"].ToString();
            lblEjercicio.Text = Session["txtPeriodo"].ToString();

            ViewState["HotelID"] = Request.QueryString["HTL"].ToString();
            if (ViewState["HotelID"] == "") ViewState["HotelID"] = "0";
            if (ViewState["HotelID"].ToString() != "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"].ToString();
            if (ViewState["UnidadNegocioID"] == "") ViewState["UnidadNegocioID"] = "0";
            if (ViewState["UnidadNegocioID"].ToString() != "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();
            if (ViewState["AreaID"] == "") 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";
            }
            ViewState["SubDiarioID"] = Request.QueryString["SUD"].ToString();
        }
    }

    private void Listar()
    {
        if (ViewState["Click"] == "1")
        {
           BEAsientosContables objet_AsientosContables = new BEAsientosContables();
            BLAsientosContables objlg_AsientosContables = new BLAsientosContables();

            String _CodigoPlanCuenta1 = Request.QueryString["CTAID"].ToString();
            String _CodigoPlanCuenta2 = Request.QueryString["CTAID2"].ToString();


            String _Ejercicio = Session["txtperiodo"].ToString();
            Int32 _MesID = Convert.ToInt32(ViewState["Mes"].ToString());
            String _EstablecimientoID = Session["EmpresaID"].ToString();
            Int32 HotelID = Convert.ToInt32(ViewState["HotelID"]);
            DateTime? _FechaDesde = (ViewState["FechaDesde"].ToString() == "") ? (DateTime?)null : Convert.ToDateTime(ViewState["FechaDesde"].ToString());
            DateTime? _FechaHasta = (ViewState["FechaHasta"].ToString() == "") ? (DateTime?)null : Convert.ToDateTime(ViewState["FechaHasta"].ToString());
            Int32? AreaID = (ViewState["AreaID"].ToString() == "0") ? (Int32?)null : Convert.ToInt32(ViewState["AreaID"].ToString());
            Int32? UnidadNegocioID = (ViewState["UnidadNegocioID"].ToString() == "0") ? (Int32?)null : Convert.ToInt32(ViewState["UnidadNegocioID"].ToString());
            String SubDiarioID = (ViewState["SubDiarioID"].ToString() == "") ? "0" : ViewState["SubDiarioID"].ToString();
            Int32 MonedaID = Convert.ToInt32(ViewState["MonedaID"].ToString());
            Int32 _EmpresaID = Convert.ToInt32(Request.QueryString["EmpresaID"]); //Diego
            Int32 _TipoDoc = Convert.ToInt32(Request.QueryString["TipoDoc"]); //Diego

            Int32 intAnio = Convert.ToInt32(Session["txtperiodo"].ToString()); //DateTime.Now.Year; 
            String _Acumulado = (ViewState["Acumulado"].ToString() == "1") ? " and Month(ACD.Dia) <= '" + _MesID + "'" : " and Month(ACD.Dia) = '" + _MesID + "' and year(ACD.Dia)='" + intAnio + "'";

            if (_MesID == 0)
            {
                _MesID = 12;
                _Acumulado = (ViewState["Acumulado"].ToString() == "1") ? " and Month(ACD.Dia) <= '" + _MesID + "'" : " and Month(ACD.Dia) = '" + _MesID + "' and year(ACD.Dia)='" + (intAnio - 1) + "'";
            }


            String WhereCondition = "";
            //String WhereCondition = Request.QueryString["WHERE"].ToString();//DIEGO 08/10/2014
            if (_EmpresaID != 0)
            {
                WhereCondition = " AND EmpresaID = " + _EmpresaID;
            }
            if (_TipoDoc != 0)
            {
                WhereCondition = WhereCondition + " AND ACD.TipoDocumentoID = " + _TipoDoc;
            }
            if (_MesID != 99)
            {
                //WhereCondition = _Acumulado;
            }

            String OrderByExpression = " PC.CodigoPlanCuenta,SubDiarios.NombreSubDiario asc, ACC.Glosa ";

            try
            {
                ViewState["Parametros"] = "?et=" + _EstablecimientoID + "&ej=" + _Ejercicio + "Mes=99&CTAID=" + _CodigoPlanCuenta1 + "&CTAID2=" + _CodigoPlanCuenta2 + "&HTL=" + HotelID + "&ARA=" + AreaID + "&UNG=" + UnidadNegocioID + "&FED=" + _FechaDesde + "&FEH=" + _FechaHasta + "&SUD=" + SubDiarioID + "&MON=" + MonedaID + "&ACUM=0&Whr=" + WhereCondition + "&Ord=" + OrderByExpression;
                //WhereCondition.Trim(),
                if (_EmpresaID != 0)
                {
                    WhereCondition = " AND EmpresaID = " + _EmpresaID;
                }
                if (_TipoDoc != 0)
                {
                    WhereCondition = WhereCondition + " AND ACD.TipoDocumentoID = " + _TipoDoc;
                }
                Cls_Propiedades.TempAnalisisPorCuenta = objlg_AsientosContables.fnSelAnalisisPorCuenta(_EstablecimientoID, _Ejercicio, _CodigoPlanCuenta1, HotelID, _FechaDesde, _FechaHasta, _CodigoPlanCuenta2, AreaID, UnidadNegocioID, SubDiarioID.Trim(), MonedaID, WhereCondition, OrderByExpression.Trim(), Convert.ToInt32(Request.QueryString["Mes"].ToString()), Convert.ToInt32(Request.QueryString["ACUM"].ToString()));
            }
            catch (Exception ex)
            {
                showMessage(ex.Message);
            }
            objet_AsientosContables = null;
            objlg_AsientosContables = null;
        }
        

        tk_Grid.DataSource = Cls_Propiedades.TempAnalisisPorCuenta;
        ViewState["Click"] = "";
        
    }

    protected void tk_Grid_ItemCreated(object sender, GridItemEventArgs e)
    {
    }

    String _OrigenID = "";
    String _Origen = "";
    String currUrl;
    String GroupHeaderText;
    String SubGroupHeaderText;
    protected void tk_Grid_ItemDataBound(object sender, GridItemEventArgs e)
    {
        decimal Saldos = 0;

        if (e.Item is GridGroupHeaderItem)
        {
            GridGroupHeaderItem item = (GridGroupHeaderItem)e.Item;

            //if (item.GroupIndex.Length == 1)
            if (item.DataCell.Text.Substring(0,7) == "Cuenta:")
            {
                GroupHeaderText = item.DataCell.Text.Substring(item.DataCell.Text.IndexOf(':') + 1);

                DataRowView groupDataRow = (DataRowView)e.Item.DataItem;
                item.DataCell.Text = groupDataRow["BEPlanDeCuentas.CodigoPlanCuenta"].ToString() + " - " + groupDataRow["BEPlanDeCuentas.NombrePlanCuenta"].ToString() + "";
                //item.DataCell.Text = groupDataRow["BEPlanDeCuentas.CodigoPlanCuenta"].ToString();
                
                //item.DataCell.Text = GroupHeaderText;                
            }
            else
            {
                SubGroupHeaderText = item.DataCell.Text.Substring(item.DataCell.Text.IndexOf(':') + 1);
                item.DataCell.Text = SubGroupHeaderText;
            }
        }
        if (e.Item is GridDataItem) 
        {
            GridDataItem dataitem = (GridDataItem)e.Item;

            _OrigenID = dataitem["SubDiarioID"].Text;
            _Origen = dataitem["BESubDiarios.NombreSubDiario"].Text;
            
            //DateTime lol = ((DateTime)dataitem["Dia"].Text).ToShortDateString;
            dataitem["Dia"].Text = dataitem["Dia"].Text.Substring(0, 10);
            dataitem["BEAsientosContablesDetalle.FechaEmision"].Text = dataitem["BEAsientosContablesDetalle.FechaEmision"].Text.Substring(0, 10);
            if (dataitem["BEAsientosContablesDetalle.FechaEmision"].Text == "01/01/1900")
            {
                dataitem["BEAsientosContablesDetalle.FechaEmision"].Text = "";
            }

            HyperLink h0 = new HyperLink();
            currUrl = "frmAsientosDetalle.html?ID=" + dataitem["AsientoContableID"].Text.Trim() + "&USU=" + dataitem["NombreUsuario"].Text.ToString() + "&FEC=" + dataitem["FechaRegistro"].Text.ToString() + "&IDS=" + dataitem["SubDiarioID"].Text.Trim() + "&auxiliar=" + _Origen + "&Comprobante=" + dataitem["Comprobante"].Text.ToString();
            h0.NavigateUrl = "#";
            if (dataitem["Comprobante"].Text.Trim() == "0") 
                dataitem["Comprobante"].Text = "";
            h0.Text = dataitem["Comprobante"].Text;
            h0.CssClass = "linkblue";
            h0.ForeColor = System.Drawing.Color.Blue;
            h0.Attributes.Add("OnClick", "return AbreVentana('" + currUrl + "','DetalleAsiento');");
            dataitem["Comprobante"].Controls.Add(h0);


            //////////if (Int32.Parse(dataitem["BEAsientosContablesDetalle.MontoDebeDoble"].Text).Equals(0)) 
            //////////    dataitem["BEAsientosContablesDetalle.MontoDebeDoble"].Text = "";
            //////////if (Int32.Parse(dataitem["BEAsientosContablesDetalle.MontoHaberDoble"].Text).Equals(0)) 
            //////////    dataitem["BEAsientosContablesDetalle.MontoHaberDoble"].Text = "";
            
            //Saldos = double.Parse(dataitem["BEAsientosContablesDetalle.MontoHaberDoble"].Text)
            
         }
        if (e.Item is GridGroupFooterItem)
        {
            GridGroupFooterItem gridfooteritem = (GridGroupFooterItem)e.Item;
            //////////if (Convert.ToDecimal(gridfooteritem["BEAsientosContablesDetalle.MontoDebeDoble"].Text) == 0) gridfooteritem["BEAsientosContablesDetalle.MontoDebeDoble"].Text = "";
            //////////gridfooteritem["BEAsientosContablesDetalle.MontoDebeDoble"].CssClass = "gridtextbold";
            //gridfooteritem["BEAsientosContablesDetalle.MontoDebeDoble"].Font.Bold = true;
            //////////if (Convert.ToDecimal(gridfooteritem["BEAsientosContablesDetalle.MontoHaberDoble"].Text) == 0) gridfooteritem["BEAsientosContablesDetalle.MontoHaberDoble"].Text = "";
            //////////gridfooteritem["BEAsientosContablesDetalle.MontoHaberDoble"].CssClass = "gridtextbold";
            //////////if (Convert.ToDecimal(gridfooteritem["SaldoSoles"].Text) == 0) gridfooteritem["SaldoSoles"].Text = "";
            gridfooteritem["SaldoSoles"].CssClass = "gridtextbold";
            //gridfooteritem["BEAsientosContablesDetalle.MontoHaberDoble"].Font.Bold = true;


            string strtxt = gridfooteritem["BESubDiarios.NombreSubDiario"].Text.Substring(gridfooteritem["BESubDiarios.NombreSubDiario"].Text.IndexOf(':') + 1);

            if (gridfooteritem.GroupIndex.Length == 1)
            {
                if (SubGroupHeaderText != null) gridfooteritem["xGlosa"].Text = "Total " + GroupHeaderText + ":" + strtxt;
                gridfooteritem["xGlosa"].Style["color"] = "#000000";
                //gridfooteritem["NombreFormatoGanaciasPerdidas"].Style["font-weight"] = "bold";
            }
            else
            {
                if (SubGroupHeaderText != null) gridfooteritem["xGlosa"].Text = "SubTotal " + SubGroupHeaderText + ":" + strtxt;
                gridfooteritem["xGlosa"].Style["color"] = "#00156E";
            }

            gridfooteritem["xGlosa"].Style["font-style"] = "italic";
            gridfooteritem["xGlosa"].Style["text-align"] = "right";
        }
    }

    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>Analisis por cuenta<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 tk_Grid_ItemCommand(object source, GridCommandEventArgs e)
    {
        tk_Grid.ExportSettings.ExportOnlyData = true;
        tk_Grid.ExportSettings.IgnorePaging = true;
        tk_Grid.ExportSettings.OpenInNewWindow = true;

        switch (e.CommandName)
        {
            case "ExportExcel":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    //tk_Grid.MasterTableView.ExportToExcel();
                    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.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.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.MasterTableView.ExportToCSV();
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "Print":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Imprime == 1)
                {
                    Int32 _EmpresaID = Convert.ToInt32(Request.QueryString["EmpresaID"]); //Diego
                    Int32 _TipoDoc = Convert.ToInt32(Request.QueryString["TipoDoc"]); //Diego
                    Int32 _MesID = Convert.ToInt32(ViewState["Mes"].ToString());
                    Int32 intAnio = Convert.ToInt32(Session["txtperiodo"].ToString()); //DateTime.Now.Year; 
                    String _Acumulado = (ViewState["Acumulado"].ToString() == "1") ? " and Month(ACD.Dia) <= '" + _MesID + "'" : " and Month(ACD.Dia) = '" + _MesID + "' and year(ACD.Dia)='" + intAnio + "'";

                    if (_MesID == 0)
                    {
                        _MesID = 12;
                        _Acumulado = (ViewState["Acumulado"].ToString() == "1") ? " and Month(ACD.Dia) <= '" + _MesID + "'" : " and Month(ACD.Dia) = '" + _MesID + "' and year(ACD.Dia)='" + (intAnio - 1) + "'";
                    }


                    String WhereCondition = "";
                    //String WhereCondition = Request.QueryString["WHERE"].ToString();//DIEGO 08/10/2014
                    if (_EmpresaID != 0)
                    {
                        WhereCondition = " AND EmpresaID = " + _EmpresaID;
                    }
                    if (_TipoDoc != 0)
                    {
                        WhereCondition = WhereCondition + " AND ACD.TipoDocumentoID = " + _TipoDoc;
                    }
                    if (_MesID != 99)
                    {
                        //WhereCondition = WhereCondition + _Acumulado;
                    }

                    String OrderByExpression = " PC.CodigoPlanCuenta,SubDiarios.NombreSubDiario asc, ACC.Glosa ";
                    //Response.Write(Cls_Utilitaria.f_Imprime());
                    //Response.Write(Cls_Utilitaria.f_Show("rpt_AnalisisPorCuenta.aspx" + ViewState["Parametros"], "Reporte"));   
                    RadWindowManager windowManager = new RadWindowManager();
                    RadWindow widnow1 = new RadWindow();
                    // Set the window properties   ring
                    DateTime? FechaDesdeUrl = (ViewState["FechaDesde"].ToString() == "") ? (DateTime?)null : Convert.ToDateTime(ViewState["FechaDesde"].ToString());
                    DateTime? FechaHastaUrl = (ViewState["FechaHasta"].ToString() == "") ? (DateTime?)null : Convert.ToDateTime(ViewState["FechaHasta"].ToString());
                    Int32? AreaIDUrl = (ViewState["AreaID"].ToString() == "0") ? (Int32?)null : Convert.ToInt32(ViewState["AreaID"].ToString());
                    Int32? UnidadNegocioIDUrl = (ViewState["UnidadNegocioID"].ToString() == "0") ? (Int32?)null : Convert.ToInt32(ViewState["UnidadNegocioID"].ToString());
                    widnow1.NavigateUrl = "Frm_ReporteAnalisisPorCuenta.aspx?EstablecimientoID=" + Session["EmpresaID"].ToString() + "&Ejercicio=" + Session["txtperiodo"].ToString() + "&PlanCuentaID=" + Request.QueryString["CTAID"].ToString() + "&HotelID=" + Convert.ToInt32(ViewState["HotelID"]) + "&FechaDesde=" + FechaDesdeUrl + "&FechaHasta=" + FechaHastaUrl + "&PlanCuentaID2=" + Request.QueryString["CTAID2"].ToString() + "&AreaID=" + AreaIDUrl + "&UnidadNegocioID=" + UnidadNegocioIDUrl + "&SubDiarioID=" + ViewState["SubDiarioID"].ToString() + "&MonedaID=" + Convert.ToInt32(ViewState["MonedaID"].ToString()) + "&WhereCondition=" + WhereCondition.ToString() + "&OrderByExpression=" + OrderByExpression.ToString() + "&Texto1=ANALISIS POR CUENTA&Texto2=A%C3%B1o:%20" + Convert.ToInt32(Session["txtperiodo"].ToString()) + " &Texto3=&Periodo=" + Convert.ToInt32(ViewState["Mes"].ToString());
                    widnow1.ID = "RadWindow1";
                    widnow1.Width = 500;
                    widnow1.Height = 500;
                    widnow1.Skin = "Office2007";
                    widnow1.VisibleOnPageLoad = true; // Set this property to True for showing window from code   
                    windowManager.Windows.Add(widnow1);
                    this.form2.Controls.Add(widnow1);
                    tk_Grid.Rebind();
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
        }
        Listar();
    }

    protected void showMessage(string strMessage)
    {
        //ClientScript.RegisterStartupScript(this.GetType(), "Application", string.Format("alert('{0}');", HttpUtility.HtmlDecode(strMessage)), true);
        ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "alert('" + strMessage + "');", true);
    }

    protected void tk_Grid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
    {
        Listar();
    }

    private void OpenBrowser(string url)
    {
        object o = null;
        SHDocVw.InternetExplorer ie = new
        SHDocVw.InternetExplorerClass();
        IWebBrowserApp wb = (IWebBrowserApp)ie;
        wb.Visible = true;
        //Do anything else with the window here that you wish
        wb.Navigate(url, ref o, ref o, ref o, ref o);
    }

    

    private static string GetConnectionString()
    {
        return ConfigurationManager.ConnectionStrings["SHIOL_CONTA_BTHConnectionString"].ConnectionString;
    }

 

    public void ExportToExcel()
    {
        String _CodigoPlanCuenta1 = Request.QueryString["CTAID"].ToString();
        String _CodigoPlanCuenta2 = Request.QueryString["CTAID2"].ToString();


        String _Ejercicio = Session["txtperiodo"].ToString();
        Int32 _MesID = Convert.ToInt32(ViewState["Mes"].ToString());
        String _EstablecimientoID = Session["EmpresaID"].ToString();
        Int32 HotelID = Convert.ToInt32(ViewState["HotelID"]);
        DateTime? _FechaDesde = (ViewState["FechaDesde"].ToString() == "") ? (DateTime?)null : Convert.ToDateTime(ViewState["FechaDesde"].ToString());
        DateTime? _FechaHasta = (ViewState["FechaHasta"].ToString() == "") ? (DateTime?)null : Convert.ToDateTime(ViewState["FechaHasta"].ToString());
        Int32? AreaID = (ViewState["AreaID"].ToString() == "0") ? (Int32?)null : Convert.ToInt32(ViewState["AreaID"].ToString());
        Int32? UnidadNegocioID = (ViewState["UnidadNegocioID"].ToString() == "0") ? (Int32?)null : Convert.ToInt32(ViewState["UnidadNegocioID"].ToString());
        String SubDiarioID = (ViewState["SubDiarioID"].ToString() == "") ? "0" : ViewState["SubDiarioID"].ToString();
        Int32 MonedaID = Convert.ToInt32(ViewState["MonedaID"].ToString());
        Int32 _EmpresaID = Convert.ToInt32(Request.QueryString["EmpresaID"]); //Diego
        Int32 _TipoDoc = Convert.ToInt32(Request.QueryString["TipoDoc"]); //Diego

        Int32 intAnio = Convert.ToInt32(Session["txtperiodo"].ToString()); //DateTime.Now.Year; 
        String _Acumulado = (ViewState["Acumulado"].ToString() == "1") ? " AND Month(ACD.Dia) <= '" + _MesID + "'" : " AND Month(ACD.Dia) = '" + _MesID + "' and year(ACD.Dia)='" + intAnio + "'";

        if (_MesID == 0)
        {
            _MesID = 12;
            _Acumulado = (ViewState["Acumulado"].ToString() == "1") ? " AND Month(ACD.Dia) <= '" + _MesID + "'" : " AND Month(ACD.Dia) = '" + _MesID + "' and year(ACD.Dia)='" + (intAnio - 1) + "'";
        }


        String WhereCondition = "";
        //String WhereCondition = Request.QueryString["WHERE"].ToString();//DIEGO 08/10/2014
        if (_EmpresaID != 0)
        {
            WhereCondition = " AND EmpresaID = " + _EmpresaID;
        }
        if (_TipoDoc != 0)
        {
            WhereCondition = WhereCondition + " AND ACD.TipoDocumentoID = " + _TipoDoc;
        }
        if (_MesID != 99)
        {
            //WhereCondition = WhereCondition + _Acumulado;
        }

        String OrderByExpression = " PC.CodigoPlanCuenta,SubDiarios.NombreSubDiario asc, ACC.Glosa ";

        SqlConnection sqlConnection1 = new SqlConnection(GetConnectionString());
        SqlCommand cmd = new SqlCommand();
        SqlDataReader reader;

        cmd.CommandText = "UCO_AnalisisPorCuentaAnual_Select";
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter EstablecimientoID_p = cmd.Parameters.Add("@EstablecimientoID", SqlDbType.VarChar);
        SqlParameter Ejercicio_p = cmd.Parameters.Add("@Ejercicio", SqlDbType.VarChar);
        SqlParameter PlanCuentaID_p = cmd.Parameters.Add("@PlanCuentaID", SqlDbType.VarChar);
        SqlParameter HotelID_p = cmd.Parameters.Add("@HotelID", SqlDbType.Int);
        SqlParameter FechaDesde_p = cmd.Parameters.Add("@FechaDesde", SqlDbType.DateTime);
        SqlParameter FechaHasta_p = cmd.Parameters.Add("@FechaHasta", SqlDbType.DateTime);
        SqlParameter PlanCuentaID2_p = cmd.Parameters.Add("@PlanCuentaID2", SqlDbType.VarChar);
        SqlParameter AreaID_p = cmd.Parameters.Add("@AreaID", SqlDbType.Int);
        SqlParameter UnidadNegocioID_p = cmd.Parameters.Add("@UnidadNegocioID", SqlDbType.Int);
        SqlParameter SubDiarioID_p = cmd.Parameters.Add("@SubDiarioID", SqlDbType.VarChar);
        SqlParameter MonedaID_p = cmd.Parameters.Add("@MonedaID", SqlDbType.Int);
        SqlParameter WhereCondition_p = cmd.Parameters.Add("@WhereCondition", SqlDbType.NVarChar);
        SqlParameter OrderByExpression_p = cmd.Parameters.Add("@OrderByExpression", SqlDbType.Char);
        SqlParameter PeriodoID_p = cmd.Parameters.Add("@PeriodoID", SqlDbType.Int);
        SqlParameter Acumulado_p = cmd.Parameters.Add("@Acumulado", SqlDbType.Int);

        EstablecimientoID_p.Value = _EstablecimientoID;
        Ejercicio_p.Value = _Ejercicio;
        PlanCuentaID_p.Value = _CodigoPlanCuenta1;
        HotelID_p.Value = HotelID;
        FechaDesde_p.Value = _FechaDesde;
        FechaHasta_p.Value = _FechaHasta;
        PlanCuentaID2_p.Value = _CodigoPlanCuenta2;
        AreaID_p.Value = AreaID;
        UnidadNegocioID_p.Value = UnidadNegocioID;
        SubDiarioID_p.Value = SubDiarioID;
        MonedaID_p.Value = MonedaID;
        WhereCondition_p.Value = WhereCondition;
        OrderByExpression_p.Value = OrderByExpression;
        PeriodoID_p.Value = Convert.ToInt32(Request.QueryString["Mes"].ToString());
        Acumulado_p.Value = Convert.ToInt32(Request.QueryString["ACUM"].ToString());


        cmd.Connection = sqlConnection1;
        sqlConnection1.Open();
        reader = cmd.ExecuteReader();

        dt.Columns.Add("Dia", typeof(string));
        dt.Load(reader);
        dt.Columns.Remove("SubDiarioID");
        dt.Columns.Remove("TipoDocumentoID");
        dt.Columns.Remove("PlanCuentaID");
        dt.Columns.Remove("AntMontoDebe");
        dt.Columns.Remove("AntMontoHaber");
        dt.Columns.Remove("AntSaldo");
        //dt.Columns.Remove("TipoCambio");
        dt.Columns.Remove("MedioPago");
        dt.Columns.Remove("NroOperacion");
        dt.Columns.Remove("Area");
        dt.Columns.Remove("RucEmpresa");
        dt.Columns.Remove("AsientoContableID");

        dt.Columns["Mes"].SetOrdinal(0);
        dt.Columns["Comprobante"].SetOrdinal(1);
        dt.Columns["NombreSubDiario"].SetOrdinal(2);
        dt.Columns["NombrePlanCuenta"].SetOrdinal(3);
        dt.Columns["CodigoPlanCuenta"].SetOrdinal(4);
        dt.Columns["Dia"].SetOrdinal(5);
        dt.Columns["TipoCambio"].SetOrdinal(6);
        dt.Columns["Glosa"].SetOrdinal(7);
        dt.Columns["Referencia"].SetOrdinal(8);
        dt.Columns["NombreDocumento"].SetOrdinal(9);
        dt.Columns["Serie"].SetOrdinal(10);
        dt.Columns["NumeroDocumento"].SetOrdinal(11);
        dt.Columns["FechaEmision"].SetOrdinal(12);
        dt.Columns["Nomenclatura"].SetOrdinal(13);
        dt.Columns["MontoDebe"].SetOrdinal(14);
        dt.Columns["MontoHaber"].SetOrdinal(15);
        dt.Columns["Saldo"].SetOrdinal(16);

        //int ix = 0;
        //string d = "";
        //foreach (DataRow dr in dt.Rows)
        //{
        //    d = ((DateTime)dr["Dia"]).ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
        //    dt.Rows[ix]["Dia"] = d;
        //    ix++;
        //}

        //for (int i = 0; i < dt.Rows.Count; i++)
        //{
        //    dt.ImportRow(dt.Rows[i]);
        //    dt.Rows[i]["Dia"] = Convert.ToDateTime(dt.Rows[i]["Dia"]).ToString("dd/MM/yyyy");
        //}

        if (dt.Rows.Count > 0)
        {
           //GridView dgGrid = new GridView();
           DataGrid dgGrid = new DataGrid();
           dgGrid.DataSource = dt;
           dgGrid.DataBind();
           dgGrid.Font.Size = 7;

           string attachment = "attachment; filename=AnalisisPorCuenta.xls";
           Response.ClearContent();
           Response.AddHeader("content-disposition", attachment);
           Response.ContentType = "application/ms-excel";
           Response.ContentType.ToString();
           StringWriter sw = new StringWriter();
           HtmlTextWriter htw = new HtmlTextWriter(sw);
           //for (int i = 0; i < dgGrid.Rows.Count; i++)
           //{
           //    GridViewRow row = dgGrid.Rows[i];
           //    //Apply text style to each Row
           //    row.Attributes.Add("style", "textmode");
           //}
           foreach (DataGridItem itm in dgGrid.Items)
           {
               // foreach (TableCell tc in itm.Cells)
               for (int i = 0; i < itm.Cells.Count; i++)
               {
                   TableCell tc = itm.Cells[i];
                   switch (dt.Columns[i].ColumnName.ToString().ToLower().Trim())
                   {
                       case "montodebe":
                           tc.Attributes.Add("class", "numeric");
                           tc.Attributes.Add("Format","#,##");
                           break;

                       case "montohaber":
                           tc.Attributes.Add("class", "numeric");
                           break;

                       case "saldo":
                           tc.Attributes.Add("class", "numeric");
                           
                           break;

                       case "tipocambio":
                           tc.Attributes.Add("class", "numeric");
                           break;

                       case "fechaemision":
                           if (tc.Text == "01/01/1900 12:00:00 a.m."){
                               tc.Text = "";
                           }
                           break;
                       default:
                           tc.Attributes.Add("class", "text");
                           break;
                   }
               }
           }
           //foreach (DataGridItem i in dgGrid.Items)
           //{
               
           //    foreach (TableCell tc in i.Cells)
           //    {
                   
           //        //tc.Attributes.Add("class", "text");
           //    }
                   
           //}
           dgGrid.RenderControl(htw);
           //format the excel cells to text format
           string style = @"<style> .text { mso-number-format:\@; } </style> ";
           string customHTML = "<table><tr><td colspan=\"5\"><b>" + Establecimientos(Session["EmpresaID"].ToString().Trim()) + "</b><br><b>Analisis por cuenta<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>";
           Response.Write (customHTML);
           var isoEncoding = Encoding.GetEncoding("iso-8859-1");
           Response.Charset = isoEncoding.WebName;
           Response.ContentEncoding = isoEncoding;
           Response.Write(style);
           Response.ContentType = "application/text";
           Response.Write(sw.ToString());
           Response.End();
            //string filename = "AnalisisPorCuenta.xls";
            //System.IO.StringWriter tw = new System.IO.StringWriter();
            //System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
            //GridView dgGrid = new GridView();
 
            //dgGrid.DataSource = dt;
            //dgGrid.DataBind();
            //dgGrid.Font.Size = 7;

            ////Get the HTML for the control.
            //dgGrid.RenderControl(hw);
            ////Write the HTML back to the browser.
            ////Response.ContentType = application/vnd.ms-excel;
            //Response.ContentType = "application/ms-excel";

            //for (int i = 0; i < dgGrid.Rows.Count; i++)
            //{
            //    GridViewRow row = dgGrid.Rows[i];
            //    //Apply text style to each Row
            //    row.Attributes.Add("class", "textmode");
            //}
            
            //var isoEncoding = Encoding.GetEncoding("iso-8859-1");
            //Response.Charset = isoEncoding.WebName;
            //Response.ContentEncoding = isoEncoding;
            //string style = @"<style> .textmode { mso-number-format:\@; } </style>";

            //Response.Write(style);
            //Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
            //this.EnableViewState = false;
            //Response.Write(tw.ToString());
            //Response.End();
        }
    }


}
