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 System.Threading;
using System.Globalization;

public partial class frmAnexoBalance : System.Web.UI.Page
{
    String _Periodo;

    protected void Page_Load(object sender, EventArgs e)
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo("es-PE");
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-PE");

        label_desde_html.Visible = false;
        label_hasta_html.Visible = false;
        lblDesde.Visible = false;
        lblHasta.Visible = false;

        if (Session["Usuario"] == null)
        {
            Response.Redirect(Utilitaria.Cls_Enums.CerrarSesion.Salir);
        }


        if (!IsPostBack)
        {
            ViewState["Click"] = "1";
            Cls_Propiedades.TempAnexoMesAcumulado.Clear();
            /////////////////////////// Inicio Parametros Cabecera 
            ViewState["FecDesde"] = Session["Desde"];
            ViewState["FecHasta"] = Session["Hasta"];
            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 = "--/--/----";
            }
            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"]));
            }
            /////////////////////////// Fin Parametros Cabecera 


            ViewState["TipoFormatoGGPPID"] = Request.QueryString["TFGPID"];
            ViewState["MonedaID"] = Request.QueryString["MON"].ToString();
            ViewState["FormatoBalanceID"] = Request.QueryString["FBID"].ToString(); 
            ViewState["TipoCuentaID"] = Request.QueryString["TCTAID"].ToString(); 

            ViewState["Mes"] = Request.QueryString["Mes"].ToString();
            switch (Convert.ToInt32(ViewState["Mes"]))
            {
                case 1: lblMes.Text = "Enero";
                    break;
                case 2: lblMes.Text = "Febrero";
                    break;
                case 3: lblMes.Text = "Marzo";
                    break;
                case 4: lblMes.Text = "Abril";
                    break;
                case 5: lblMes.Text = "Mayo";
                    break;
                case 6: lblMes.Text = "Junio";
                    break;
                case 7: lblMes.Text = "Julio";
                    break;
                case 8: lblMes.Text = "Agosto";
                    break;
                case 9: lblMes.Text = "Septiembre";
                    break;
                case 10: lblMes.Text = "Octubre";
                    break;
                case 11: lblMes.Text = "Noviembre";
                    break;
                case 12: lblMes.Text = "Diciembre";
                    break;

            }


            ViewState["FormatoGananciaPerdidaID"] = Request.QueryString["FGPID"].ToString();
            ViewState["Acumulado"] = Request.QueryString["ACUM"].ToString();
            if (ViewState["Acumulado"].ToString() == "0")
            {
                lblAcumulado.Text = "Del";
            }
            else
            {
                lblAcumulado.Text = "Al";
                // Diego 06/01/2014 //
                lblDesde.Visible = false;
                label_desde_html.Visible = false;
                // Diego 06/01/2014 //
            }

            ViewState["HotelID"] = Request.QueryString["HTL"].ToString();
            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";
            }

            _Periodo = Request.QueryString["ANIO"];
            
            lblEjercicio.Text = Session["txtperiodo"].ToString();

            if (ViewState["MonedaID"].ToString() == "1")
            {
                lblMonedaNombre.Text = "SOLES";
            }
            else
            {
                lblMonedaNombre.Text = "DOLARES";
            }       

            ViewState["UnidadNegocioID"] = Request.QueryString["UNG"].ToString();
            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"].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";
            }


            Listar();
        }
    }

    private void Listar() 
    {
        if (ViewState["Click"] == "1" && Cls_Propiedades.TempAnexoMesAcumulado.Count == 0)
        {
            BEMayorizados objet_Mayorizados = new BEMayorizados();
            BLMayorizados objlg_Mayorizados = new BLMayorizados();

            string psWhere = "";
            String _TipoFormatoGGPPID = ViewState["TipoFormatoGGPPID"].ToString();
            String _TipoCuentaID = ViewState["TipoCuentaID"].ToString();
            Int32 _Ejercicio = Convert.ToInt32(Session["txtperiodo"].ToString());
            Int32 _MonedaID = Convert.ToInt32(ViewState["MonedaID"].ToString());
            Int32 _PeriodoID = Convert.ToInt32(ViewState["Mes"].ToString());
            Int32 _FormatoGananciaPerdidaID = Convert.ToInt32(ViewState["FormatoGananciaPerdidaID"].ToString());
            Int32 _FormatoBalanceID = Convert.ToInt32(ViewState["FormatoBalanceID"].ToString());
            Int32 HotelID = Convert.ToInt32(ViewState["HotelID"]);
            Int32 EstablecimientoID = Convert.ToInt32(Session["EmpresaID"]);
            Int32 _Acumulado = Convert.ToInt32(ViewState["Acumulado"].ToString().Trim());

            if (Convert.ToInt32(_TipoCuentaID) != 0) _TipoCuentaID = Request.QueryString["TCTAID"].ToString();
            String RangoPeriodo = "";
            if (ViewState["Acumulado"].ToString() == "0")
            {
                int MonthRange0;
                int MonthRange1 = Convert.ToInt32(ViewState["Mes"].ToString());
                if (MonthRange1 > 0)
                {
                    RangoPeriodo = "(" + (MonthRange1 - 1).ToString() + "," + MonthRange1.ToString() + ")";
                    psWhere += "PeriodoID in" + RangoPeriodo;// ViewState["Mes"].ToString();
                    //psWhere += "PeriodoID in (1)" ;// ViewState["Mes"].ToString();
                }
                else
                {
                    psWhere += "PeriodoID =" + ViewState["Mes"].ToString();
                }

                Cls_Propiedades.TempAnexoMesAcumulado = objlg_Mayorizados.fnSelAnexoMesDin(_TipoFormatoGGPPID, _TipoCuentaID, _Ejercicio, _MonedaID, _PeriodoID, _FormatoGananciaPerdidaID, _FormatoBalanceID, HotelID, EstablecimientoID, _Acumulado, psWhere, "1 asc");
            }
            else
            {
                psWhere += "PeriodoID<=" + ViewState["Mes"].ToString();
                Cls_Propiedades.TempAnexoMesAcumulado = objlg_Mayorizados.fnSelAnexoMesAcumuladoDin(_TipoFormatoGGPPID, _TipoCuentaID, _Ejercicio, _MonedaID, _PeriodoID, _FormatoGananciaPerdidaID, _FormatoBalanceID, HotelID, EstablecimientoID, _Acumulado, psWhere, "1 asc");
            }


            objet_Mayorizados = null;
            objlg_Mayorizados = null;
        }
        ViewState["Click"] = "";
        tk_Grid.DataSource = Cls_Propiedades.TempAnexoMesAcumulado;
    }

    String currUrl;
    String headertext;
    protected void tk_Grid_ItemDataBound(object sender, GridItemEventArgs e)
    {

        if (e.Item is GridGroupHeaderItem)
        {
            GridGroupHeaderItem item = (GridGroupHeaderItem)e.Item;
            headertext = item.DataCell.Text.Substring(item.DataCell.Text.IndexOf(':') + 1);
            item.DataCell.Text = item.DataCell.Text.Substring(item.DataCell.Text.IndexOf(':') + 1);
        }
        if (e.Item is GridDataItem)
        {
            GridDataItem dataItem = (GridDataItem)e.Item;

            if (double.Parse(dataItem["SaldoAnterior"].Text) == 0) dataItem["SaldoAnterior"].Text = "";
            dataItem["SaldoAnterior"].Text = dataItem["SaldoAnterior"].Text;
            dataItem["SaldoAnterior"].CssClass = "gridtext";            
            
            HyperLink h0 = new HyperLink();
            currUrl = "frmAnalisisPorCuenta.aspx?Periodo=" + _Periodo + "&Mes=" + ViewState["Mes"].ToString().Trim() + "&FED=&FEH=&CTAID2=&CTAID=" + dataItem["CodigoPlanCuenta"].Text.Trim() + "&HTL=" + ViewState["HotelID"] + "&ARA=" + ViewState["AreaID"] + "&UNG=" + ViewState["UnidadNegocioID"] + "&SUD=0&ACUM=" + ViewState["Acumulado"] + "&MON=" + ViewState["MonedaID"].ToString();
            h0.NavigateUrl = "#";            
            h0.Text = dataItem["CodigoPlanCuenta"].Text;
            h0.CssClass = "gridtext";
            h0.Attributes.Add("OnClick", "return AbreVentana('" + currUrl + "','SGH');");
            dataItem["CodigoPlanCuenta"].Controls.Add(h0);

            HyperLink h1 = new HyperLink();
            currUrl = "frmAnalisisPorCuenta.aspx?Periodo=" + _Periodo + "&Mes=" + ViewState["Mes"].ToString().Trim() + "&FED=&FEH=&CTAID2=&CTAID=" + dataItem["CodigoPlanCuenta"].Text.Trim() + "&HTL=" + ViewState["HotelID"] + "&ARA=" + ViewState["AreaID"] + "&UNG=" + ViewState["UnidadNegocioID"] + "&SUD=0&ACUM=" + ViewState["Acumulado"] + "&MON=" + ViewState["MonedaID"].ToString();
            h1.NavigateUrl = "#";
            if (double.Parse(dataItem["totalDebe"].Text) == 0) dataItem["totalDebe"].Text = "";
            h1.Text = dataItem["totalDebe"].Text;
            h1.CssClass = "gridtext";
            h1.Attributes.Add("OnClick", "return AbreVentana('" + currUrl + "','SGH');");
            dataItem["totalDebe"].Controls.Add(h1);

            HyperLink h2 = new HyperLink();
            currUrl = "frmAnalisisPorCuenta.aspx?Periodo=" + _Periodo + "&Mes=" + ViewState["Mes"].ToString().Trim() + "&FED=&FEH=&CTAID2=&CTAID=" + dataItem["CodigoPlanCuenta"].Text.Trim() + "&HTL=" + ViewState["HotelID"] + "&ARA=" + ViewState["AreaID"] + "&UNG=" + ViewState["UnidadNegocioID"] + "&SUD=0&ACUM=" + ViewState["Acumulado"] + "&MON=" + ViewState["MonedaID"].ToString();
            h2.NavigateUrl = "#";
            if (double.Parse(dataItem["totalHaber"].Text) == 0) dataItem["totalHaber"].Text = "";
            h2.Text = dataItem["totalHaber"].Text;
            h2.CssClass = "gridtext";
            h2.Attributes.Add("OnClick", "return AbreVentana('" + currUrl + "','SGH');");
            dataItem["totalHaber"].Controls.Add(h2);


            if (double.Parse(dataItem["SaldoActual"].Text) == 0) dataItem["SaldoActual"].Text = "";
        }

        else if (e.Item is GridGroupFooterItem)
        {

            GridGroupFooterItem gridfooteritem = e.Item as GridGroupFooterItem;

            if (double.Parse(gridfooteritem["SaldoAnterior"].Text) == 0) gridfooteritem["SaldoAnterior"].Text = "";
            gridfooteritem["SaldoAnterior"].Text = gridfooteritem["SaldoAnterior"].Text;
            //gridfooteritem["SaldoAnterior"].Font.Bold = true;
            //gridfooteritem["SaldoAnterior"].CssClass = "linkstotal";
            
            
            HyperLink hg0 = new HyperLink();
            currUrl = "#";
            hg0.NavigateUrl = "#";
            if (double.Parse(gridfooteritem["totalDebe"].Text) == 0) gridfooteritem["totalDebe"].Text = "";
            hg0.Text = gridfooteritem["totalDebe"].Text.Trim();
            hg0.CssClass = "linkstotal";
            hg0.Attributes.Add("OnClick", "return AbreVentana('" + currUrl + "','SGH');");
            gridfooteritem["totalDebe"].Controls.Add(hg0);

            HyperLink hg1 = new HyperLink();
            currUrl = "#";
            hg1.NavigateUrl = "#";
            if (double.Parse(gridfooteritem["totalHaber"].Text) == 0) gridfooteritem["totalHaber"].Text = "";
            hg1.Text = gridfooteritem["totalHaber"].Text.Trim();
            hg1.CssClass = "linkstotal";
            hg1.Attributes.Add("OnClick", "return AbreVentana('" + currUrl + "','SGH Perú');");
            gridfooteritem["totalHaber"].Controls.Add(hg1);

            HyperLink hg2 = new HyperLink();
            currUrl = "#";
            hg2.NavigateUrl = "#";
            if (double.Parse(gridfooteritem["SaldoActual"].Text) == 0) gridfooteritem["totalHaber"].Text = "";
            hg2.Text = gridfooteritem["SaldoActual"].Text.Trim();
            hg2.CssClass = "linkstotal";
            hg2.Attributes.Add("OnClick", "return AbreVentana('" + currUrl + "','SGH Perú');");
            gridfooteritem["SaldoActual"].Controls.Add(hg2);

            if (double.Parse(gridfooteritem["SaldoActual"].Text) == 0) gridfooteritem["SaldoActual"].Text = "";

            string strtxt = gridfooteritem["NombreFormatoGanaciasPerdidas"].Text.Substring(gridfooteritem["NombreFormatoGanaciasPerdidas"].Text.IndexOf(':') + 1);
            if (headertext != null)
            gridfooteritem["NombrePlanCuenta"].Text = headertext + ":" + strtxt;
            gridfooteritem["NombrePlanCuenta"].Style["color"] = "#006400";
            //gridfooteritem["NombrePlanCuenta"].Style["font-weight"] = "bold";
            gridfooteritem["NombrePlanCuenta"].Style["font-style"] = "italic";
            gridfooteritem["NombrePlanCuenta"].Style["text-align"] = "right";
        }

        else if (e.Item is GridFooterItem)
        {
            if (tk_Grid.Items.Count == 0) return;

            GridFooterItem footer = (GridFooterItem)e.Item;

            if (double.Parse(footer["SaldoAnterior"].Text) == 0) footer["SaldoAnterior"].Text = "";
            footer["SaldoAnterior"].Text = footer["SaldoAnterior"].Text;
            footer["SaldoAnterior"].CssClass = "gridtext";

            HyperLink hf0 = new HyperLink();
            currUrl = "#";
            hf0.NavigateUrl = "#";
            if (double.Parse(footer["totalDebe"].Text) == 0) footer["totalDebe"].Text = "";
            hf0.Text = footer["totalDebe"].Text.Trim();
            hf0.CssClass = "linkstotal";
            hf0.Attributes.Add("OnClick", "return AbreVentana('" + currUrl + "','SGH Perú');");
            footer["totalDebe"].Controls.Add(hf0);

            HyperLink hf1 = new HyperLink();
            currUrl = "#";
            hf1.NavigateUrl = "#";
            if (double.Parse(footer["totalHaber"].Text) == 0) footer["totalHaber"].Text = "";
            hf1.Text = footer["totalHaber"].Text.Trim();
            hf1.CssClass = "linkstotal";
            hf1.Attributes.Add("OnClick", "return AbreVentana('" + currUrl + "','SGH Perú');");
            footer["totalHaber"].Controls.Add(hf1);


            HyperLink hf2 = new HyperLink();
            currUrl = "#";
            hf2.NavigateUrl = "#";
            if (double.Parse(footer["SaldoActual"].Text) == 0) footer["SaldoActual"].Text = "";
            hf2.Text = footer["SaldoActual"].Text.Trim();
            hf2.CssClass = "linkstotal";
            hf2.Attributes.Add("OnClick", "return AbreVentana('" + currUrl + "','SGH Perú');");
            footer["SaldoActual"].Controls.Add(hf2);
            //if (double.Parse(footer["SaldoActual"].Text) == 0) footer["SaldoActual"].Text = "";

        }

    }
    protected void tk_Grid_ItemCommand(object source, GridCommandEventArgs e)
    {
        tk_Grid.ExportSettings.ExportOnlyData = true;
        tk_Grid.ExportSettings.IgnorePaging = true;
        tk_Grid.ExportSettings.OpenInNewWindow = false;

        switch (e.CommandName)
        {
            case "ExportExcel":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    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.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)
                {
                    Response.Write(Cls_Utilitaria.f_Imprime());
                }
                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);
        RadScriptManager.RegisterStartupScript(this, this.GetType(), "Application", "alert('" + strMessage + "');", true);
    }
    protected void tk_Grid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
    {
        ViewState["Click"] = "1";
        Cls_Propiedades.TempAnexoMesAcumulado.Clear();
        Listar();
    }
}

