using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Data;
using System.Configuration;
using System.Web.Security;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using Telerik.Web.UI;
using System.Globalization;

using BE;
using BL;
using Utilitaria;


public partial class List_PlanDeCuentas : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["Usuario"] == null)
        {
            Response.Redirect(Utilitaria.Cls_Enums.CerrarSesion.Salir);
        }

        if (!IsPostBack)
        {
            llenaCombo();
        }


    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        tk_Grid.Columns[0].CurrentFilterFunction = Telerik.Web.UI.GridKnownFunction.StartsWith;
        tk_Grid.Columns[2].CurrentFilterFunction = Telerik.Web.UI.GridKnownFunction.StartsWith;
        tk_Grid.Columns[3].CurrentFilterFunction = Telerik.Web.UI.GridKnownFunction.StartsWith;

    }

    private void listar(int tipo)
    {
        BEPlanDeCuentas objet_PlanDeCuentas = new BEPlanDeCuentas();
        BLPlanDeCuentas objlg_PlanDeCuentas = new BLPlanDeCuentas();
        string combo = this.ddlEstado.SelectedValue;
        if (combo == string.Empty)
        {
            combo = "0";
        }

        string strEstado = Utilitaria.Cls_Utilitaria.f_CadenaEstado(Convert.ToInt32(combo));

        if (combo == Utilitaria.Cls_Enums.EstadoModulos.Activo)
        {
            this.tk_Grid.Columns[13].Visible = false;
            this.tk_Grid.Columns[14].Visible = true;
        }
        else
        {
            this.tk_Grid.Columns[13].Visible = true;
            this.tk_Grid.Columns[14].Visible = false;
        }
 // del tipo 1 es para la lista de plan de cuentas
        if (tipo == 1)
        {
            tk_Grid.DataSource = objlg_PlanDeCuentas.fnSelPlanDeCuentasDin(strEstado + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim(), "CodigoPlanCuenta",0);
           
        }
        /*FRANCO*/
        /**
         * Cambios para los popup de planes de cuenta con solo 2 columnas.
         **/
        else if (tipo == 2)
        {
            //tk_Grid.DataSource = objlg_PlanDeCuentas.fnSelPlanDeCuentasDin(strEstado + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim(), "CodigoPlanCuenta", 0);
            tk_Grid.DataSource = objlg_PlanDeCuentas.fnSelPlanDeCuentasPopUp(strEstado + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim(), "CodigoPlanCuenta");
            tk_Grid.DataBind();
        }

        else if (tipo == 3)
        {
            //String CuentasSinAmarre = " and Left(PDC.CodigoPlanCuenta,1) in (1,2,3,4,5) and PDC.PlanCuentaID Not In (Select PlanCuentaID From PlanDeCuentasBalances )";
            String CuentasSinAmarre = "";// " and PDC.PlanCuentaID Not In (Select PlanCuentaID From PlanDeCuentasBalances )";
            //tk_Grid.DataSource = objlg_PlanDeCuentas.fnSelPlanDeCuentasDin(strEstado + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim() + CuentasSinAmarre, "CodigoPlanCuenta", 1);
            tk_Grid.DataSource = objlg_PlanDeCuentas.fnSelPlanDeCuentasPopUp(strEstado + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim() + CuentasSinAmarre, "CodigoPlanCuenta");
            tk_Grid.DataBind();
        }

        objet_PlanDeCuentas = null;
        objlg_PlanDeCuentas = null;

    }

    private void llenaCombo()
    {
        //this.ddlEstado.Items.Insert(0, "---Todos---");
        //this.ddlEstado.Items[0].Value = Utilitaria.Cls_Enums.EstadoModulos.Todos;

        this.ddlEstado.Items.Insert(0, new RadComboBoxItem("Activo"));
        this.ddlEstado.Items[0].Value = Utilitaria.Cls_Enums.EstadoModulos.Activo;

        this.ddlEstado.Items.Insert(1, new RadComboBoxItem("Inactivo"));
        this.ddlEstado.Items[1].Value = Utilitaria.Cls_Enums.EstadoModulos.Inactivo;

    }
  
    protected void ddlEstado_SelectedIndexChanged(object sender, EventArgs e)
    {

        if (this.ddlEstado.SelectedValue.ToString() != string.Empty)
        {
            CheckAmarres(cbCuentasSinAmarre); 
            //listar(2); 
        }
        else 
        { 
            listar(1); 
        }

    }

    protected void tk_Grid_ItemCommand(object source, GridCommandEventArgs e)
    {
        tk_Grid.ExportSettings.ExportOnlyData = true;
        tk_Grid.ExportSettings.IgnorePaging = true;
        tk_Grid.ExportSettings.OpenInNewWindow = false;
        tk_Grid.ExportSettings.FileName = "PlanDeCuentas"; //Diego 19/05/2014
        tk_Grid.ExportSettings.Excel.Format = Telerik.Web.UI.GridExcelExportFormat.Biff; //Diego 19/05/2014

        switch (e.CommandName)
        {
            case "ExportExcel":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    tk_Grid.MasterTableView.ExportToExcel();
                    listar(1);
                }
                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();
                    listar(1);
                }
                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();
                    listar(1);
                }
                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();
                    listar(1);
                }
                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());
                    listar(1);
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
        }
        
        
        if (e.CommandName == "activar")
        {

            Cls_Utilitaria.f_cambiaEstado_PlanDeCuentas(Convert.ToString(e.CommandArgument),
                                                            Convert.ToString(Cls_Enums.EstadoModulos.Activo),
                                                            Convert.ToInt32(Session["UsuarioID"]),
                                                            "",
                                                            0,
                                                            Cls_Enums.TablaMovimientos.PlanDeCuentas,
                                                            "",
                                                            "");
            CheckAmarres(cbCuentasSinAmarre);
            //this.tk_Grid.Rebind();
            
            
        }

        if (e.CommandName == "desactivar")
        {

            if (e.Item is GridDataItem)
            {
                Label lblPlanCuentaID = (Label)e.Item.FindControl("lblPlanCuentaID");
                GridDataItem dataItem = (GridDataItem)e.Item;
                if ((dataItem["PlanCuentaIDDebe"].Text.ToString().Trim() != "0" && dataItem["PlanCuentaIDDebe"].Text.ToString().Trim() != "") && (dataItem["PlanCuentaIDHaber"].Text.ToString().Trim() != "0" && dataItem["PlanCuentaIDHaber"].Text.ToString().Trim() != ""))
                {
                    showMessage("La Cuenta tiene amarres no es posible Desactivarlo.");
                    return;
                }

                //showMessage(lblPlanCuentaID.Text);

                BEPlanDeCuentas objet_PlanDeCuentas = new BEPlanDeCuentas();
                BLPlanDeCuentas objlg_PlanDeCuentas = new BLPlanDeCuentas();
                List<BEPlanDeCuentas> Datos;
                Datos = objlg_PlanDeCuentas.fnSelPlanDeCuentasDin("estado=0 and PlanCuentaIDDebe=" + Convert.ToString(lblPlanCuentaID.Text.ToString()).Trim(), "", 0);
                if (Datos.Count > 0 )
                {
                    showMessage("La Cuenta no puede ser Desactivada. Pertenece al amarre de las cuentas Debe");
                    return;
                }

                Datos = null;
                
                objet_PlanDeCuentas = new BEPlanDeCuentas();
                objlg_PlanDeCuentas = new BLPlanDeCuentas();
                Datos = objlg_PlanDeCuentas.fnSelPlanDeCuentasDin("estado=0 and PlanCuentaIDHaber=" + Convert.ToString(lblPlanCuentaID.Text.ToString()).Trim(), "", 0);
                if (Datos.Count > 0)
                {
                    showMessage("La Cuenta no puede ser Desactivada. Pertenece al amarre de las cuentas Haber");
                    return;
                }
                

          }



            Cls_Utilitaria.f_cambiaEstado_PlanDeCuentas(Convert.ToString(e.CommandArgument),
                                                            Convert.ToString(Cls_Enums.EstadoModulos.Inactivo),
                                                            Convert.ToInt32(Session["UsuarioID"]),
                                                            "",
                                                            0,
                                                            Cls_Enums.TablaMovimientos.PlanDeCuentas,
                                                            "",
                                                            "");
            CheckAmarres(cbCuentasSinAmarre);
            //this.tk_Grid.Rebind();
            
        }
        

    }

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


    }


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

    protected void tk_Grid_ItemCreated(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            HyperLink editLink = (HyperLink)e.Item.FindControl("EditLink");
            editLink.Attributes["href"] = "#";
            editLink.Attributes["onclick"] = String.Format("return ShowEditForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["PlanCuentaID"], e.Item.ItemIndex);
        }

    }
    private void tk_Grid_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            GridDataItem dataItem = e.Item as GridDataItem;
            string TipoCuenta = dataItem["BETipoCuenta.NombreTipoCuenta"].Text;
            if (TipoCuenta.Length > 15)
            {
                dataItem.Font.Bold = true;
            }
        }
    }
    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        if (e.Argument == "Rebind")
        {
            //tk_Grid.MasterTableView.SortExpressions.Clear(); //Anterior
            //tk_Grid.MasterTableView.GroupByExpressions.Clear(); //Anterior
            //CheckAmarres(cbCuentasSinAmarre); //Anterior
            tk_Grid.Rebind(); // Diego 03/04/2014

        }
        else if (e.Argument == "RebindAndNavigate")
        {
            tk_Grid.MasterTableView.SortExpressions.Clear();
            tk_Grid.MasterTableView.GroupByExpressions.Clear();
            tk_Grid.MasterTableView.CurrentPageIndex = tk_Grid.MasterTableView.PageCount - 1;
            tk_Grid.Rebind();
        }
    }


    protected void cbCuentasSinAmarre_CheckedChanged(object sender, EventArgs e)
    {
        CheckAmarres(cbCuentasSinAmarre);
    }

    private void CheckAmarres(CheckBox check)
    {
        if (check.Checked == true)
        {
            listar(3);
        }
        else
        {
            listar(2);
        }

    }


}
