using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;

using Telerik.Web.UI;

using BE;
using BL;
using Utilitaria;


public partial class InstUpd_TipoCuenta : System.Web.UI.Page
{
   short tabindex_s = 17;
    protected void Page_Load(object sender, EventArgs e)
    
   

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

        if(IsPostBack)
        {
            this.txtNombrePlanCuenta.Focus();
        }
        if (Request.QueryString["PlanCuentaID"] == null)
        {
            this.btnGuardar.Text = "  Crear  ";
        }
        else
        {
            this.btnGuardar.Text = "Actualizar";
            ViewState["PlanCuentaID"] = Request.QueryString["PlanCuentaID"].ToString().Trim();
        }
        if (!IsPostBack)
        {
            this.txtCodigoPlanCuenta.Focus(); // focus solo en el load
            llenaCombo();
            Combo_PlanCuenta();
            Combo_NivelSaldo();
            Combo_TipoCuenta();
            Combo_EstadoCuenta();
            //Combo_FormatoGananciaPerdidas();
            Combo_FormatosBalance();
            Combo_Categoria();
            //Combo_Establecimientos();
            Combo_Areas();
            Combo_Moneda();
            //llena_GridPlanCuentaBlances("");

            this.ddlAreaID.Enabled = true; // Diego - 09/07/2013

            //this.ddlCategoriaID.Enabled = false;

            if (ViewState["PlanCuentaID"] != null) {
                BuscaRegistro();
                this.txtCodigoPlanCuenta.ReadOnly = true;
            } else {
                this.txtCodigoPlanCuenta.ReadOnly = false;
                this.ddlEstado2.SelectedValue = Utilitaria.Cls_Enums.EstadoModulos.Activo;
            }
        }

        //ddlTipoFormatoGGPP.Filter = (RadComboBoxFilter)Convert.ToInt32(2);
    }


    //protected override void OnInit(EventArgs e)
    //{
    //    base.OnInit(e);

    //    if (Request.QueryString["PlanCuentaID"] == null)
    //    {
    //        this.btnGuardar.Text = "  Crear  "; 
    //    }
    //    else
    //    {
    //        this.btnGuardar.Text = "Actualizar";
    //        ViewState["PlanCuentaID"] = Request.QueryString["PlanCuentaID"].ToString().Trim();
    //    }
    //}

    //DIEGO 28/04/2014 Se Comento Para eliminar El cuadro
    //private void llena_GridPlanCuentaBlances(String PlanCuentaID, String CodigoPlanCuenta)
    //{
    //    BEPlandeCuentasBalances objet_PlandeCuentasBalances = new BEPlandeCuentasBalances();
    //    BLPlandeCuentasBalances objlg_PlandeCuentasBalances = new BLPlandeCuentasBalances();
    //    List<BEPlandeCuentasBalances> Col_BEPlandeCuentasBalances;

    //    Col_BEPlandeCuentasBalances = objlg_PlandeCuentasBalances.fnSelPlanDeCuentasAll(PlanCuentaID, CodigoPlanCuenta,  Convert.ToInt32(Session["EmpresaID"]));
    //    GridPlanCuentaBalances.DataSource = Col_BEPlandeCuentasBalances;
    //    GridPlanCuentaBalances.DataBind();

    //    //ViewState["PlandeCuentaID"]

    //    objet_PlandeCuentasBalances = null;
    //    objlg_PlandeCuentasBalances = null;
    //}
    //FIN DIEGO 28/04/2014

    private void Combo_PlanCuenta()
    {
        BEPlanDeCuentas objet_PlanDeCuentas = new BEPlanDeCuentas();
        BLPlanDeCuentas objlg_PlanDeCuentas = new BLPlanDeCuentas();
        List<BEPlanDeCuentas> Col_PlanCuta;
        Col_PlanCuta = objlg_PlanDeCuentas.fnSelPlanDeCuentasDin("Estado=0" + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim(), "codigoplancuenta asc, NombrePlanCuenta asc",0);

        //RadComboBoxItem item2 = new RadComboBoxItem();
        //item2.Text = "Seleccione";
        //item2.Value = Utilitaria.Cls_Enums.EstadoModulos.Todos;
        //item2.Attributes.Add("CodigoPlanCuenta", "Seleccion");
        //ddlPlanCuentaIDDebe.Items.Add(item2);
        //item2 = new RadComboBoxItem();
        //item2.Text = "Seleccione";
        //item2.Value = Utilitaria.Cls_Enums.EstadoModulos.Todos;
        //item2.Attributes.Add("CodigoPlanCuenta", "Seleccion");
        //ddlPlanCuentaIDHaber.Items.Add(item2);

        ddlPlanCuentaIDDebe.Items.Insert(0,new RadComboBoxItem("Seleccione..."));
        ddlPlanCuentaIDDebe.Items[0].Value = "";

        ddlPlanCuentaIDHaber.Items.Insert(0, new RadComboBoxItem("Seleccione..."));
        ddlPlanCuentaIDHaber.Items[0].Value = "";

        //foreach (BEPlanDeCuentas PlanDeCuentas in Col_PlanCuta)
        //{
        //    RadComboBoxItem item = new RadComboBoxItem();

        //    item.Text = PlanDeCuentas.CodigoPlanCuenta.Trim();//+ " -> " + PlanDeCuentas.NombrePlanCuenta.Trim();
        //    item.Value = PlanDeCuentas.PlanCuentaID.Trim();

        //    String Codigo = PlanDeCuentas.CodigoPlanCuenta;
        //    String Nombre = PlanDeCuentas.NombrePlanCuenta;

        //    item.Attributes.Add("CodigoPlanCuenta", Codigo);
        //    item.Attributes.Add("NombrePlanCuenta", Nombre);

        //    ddlPlanCuentaIDDebe.Items.Add(item);

        //    item.DataBind();
        //}

        for (Int32  i = 0; i < Col_PlanCuta.Count; i++)
        {
            this.ddlPlanCuentaIDDebe.Items.Insert(i+1, new RadComboBoxItem(Col_PlanCuta[i].CodigoPlanCuenta.Trim() + " -> " + Col_PlanCuta[i].NombrePlanCuenta.Trim()));
            this.ddlPlanCuentaIDDebe.Items[i + 1].Value = Col_PlanCuta[i].PlanCuentaID.Trim();
        }

        //foreach (BEPlanDeCuentas PlanDeCuentas in Col_PlanCuta)
        //{
        //    RadComboBoxItem item = new RadComboBoxItem();

        //    item.Text = PlanDeCuentas.CodigoPlanCuenta.Trim(); //+ " -> " + PlanDeCuentas.NombrePlanCuenta.Trim();
        //    item.Value = PlanDeCuentas.PlanCuentaID.Trim();

        //    String Codigo = PlanDeCuentas.CodigoPlanCuenta;
        //    String Nombre = PlanDeCuentas.NombrePlanCuenta;

        //    item.Attributes.Add("CodigoPlanCuenta", Codigo);
        //    item.Attributes.Add("NombrePlanCuenta", Nombre);
            
        //    ddlPlanCuentaIDHaber.Items.Add(item);

        //    item.DataBind();
        //}


        for (Int32  i = 0; i < Col_PlanCuta.Count; i++)
        {
            this.ddlPlanCuentaIDHaber.Items.Insert(i + 1, new RadComboBoxItem(Col_PlanCuta[i].CodigoPlanCuenta.Trim() + " -> " + Col_PlanCuta[i].NombrePlanCuenta.Trim()));
            this.ddlPlanCuentaIDHaber.Items[i + 1].Value = Col_PlanCuta[i].PlanCuentaID.Trim();
        }



        objet_PlanDeCuentas = null;
        objlg_PlanDeCuentas = null;

    }
    private void Combo_NivelSaldo()
    {
        BENivelSaldo objet_NivelSaldo = new BENivelSaldo();
        BLNivelSaldo objlg_NivelSaldo = new BLNivelSaldo();
        List<BENivelSaldo> Col_NivelSaldo;

        Col_NivelSaldo = objlg_NivelSaldo.fnSelNivelSaldoDin("Estado=0", "CodigoNivelSaldo");

        //RadComboBoxItem item2 = new RadComboBoxItem();
        //item2.Text = "Seleccione";
        //item2.Value = Utilitaria.Cls_Enums.EstadoModulos.Todos;
        //ddlNivelSaldoID.Items.Add(item2);

        //foreach (BENivelSaldo NivelSaldo in Col_NivelSaldo)
        //{
        //    RadComboBoxItem item = new RadComboBoxItem();

        //    item.Text = NivelSaldo.CodigoNivelSaldo;//+ " -> " + NivelSaldo.NombreNivelSaldo.Trim();
        //    item.Value = NivelSaldo.NivelSaldoID.Trim();

        //    String Codigo = NivelSaldo.CodigoNivelSaldo;
        //    String Nombre = NivelSaldo.NombreNivelSaldo;

        //    item.Attributes.Add("CodigoNivelSaldo", Codigo);
        //    item.Attributes.Add("NombreNivelSaldo", Nombre);

        //    ddlNivelSaldoID.Items.Add(item);

        //    item.DataBind();
        //}

        for (Int32  i = 0; i < Col_NivelSaldo.Count; i++)
        {
            this.ddlNivelSaldoID.Items.Insert(i, new RadComboBoxItem(Col_NivelSaldo[i].CodigoNivelSaldo.Trim() + " -> " + Col_NivelSaldo[i].NombreNivelSaldo.Trim()));
            this.ddlNivelSaldoID.Items[i].Value = Col_NivelSaldo[i].NivelSaldoID.Trim();
        }


        objet_NivelSaldo = null;
        objlg_NivelSaldo = null;
    }
    private void Combo_TipoCuenta()
    {
        BETipoCuenta objet_TipoCuenta = new BETipoCuenta();
        BLTipoCuenta objlg_TipoCuenta = new BLTipoCuenta();
        List<BETipoCuenta> Col_TipoCuenta;
       

        Col_TipoCuenta = objlg_TipoCuenta.fnSelTipoCuentaDin("Estado=0", "CodigoTipoCuenta");
       
        for (Int32  i = 0; i < Col_TipoCuenta.Count; i++)
        {
            this.ddlTipoCuentaID.Items.Insert(i, new RadComboBoxItem(Col_TipoCuenta[i].CodigoTipoCuenta.Trim() + " -> " + Col_TipoCuenta[i].NombreTipoCuenta.Trim()));
            this.ddlTipoCuentaID.Items[i].Value = Col_TipoCuenta[i].TipoCuentaID.Trim();
        }


        objet_TipoCuenta = null;
        objlg_TipoCuenta = null;
    }
    private void Combo_EstadoCuenta()
    {
        BEEstadoCuenta objet_EstadoCuenta = new BEEstadoCuenta();
        BLEstadoCuenta objlg_EstadoCuenta = new BLEstadoCuenta();
        List<BEEstadoCuenta> Col_EstadoCuenta;

        Col_EstadoCuenta = objlg_EstadoCuenta.fnSelEstadoCuentaDin("Estado=0", "CodigoEstadoCuenta");

        //this.ddlEstadoCuentaID.Items.Insert(0, new RadComboBoxItem("Seleccione..."));
        //this.ddlEstadoCuentaID.Items[0].Value = "";

        for (Int32  i = 0; i < Col_EstadoCuenta.Count; i++)
        {
            this.ddlEstadoCuentaID.Items.Insert(i , new RadComboBoxItem(Col_EstadoCuenta[i].CodigoEstadoCuenta.Trim() + " -> " + Col_EstadoCuenta[i].NombreEstadoCuenta.Trim()));
            this.ddlEstadoCuentaID.Items[i].Value = Col_EstadoCuenta[i].EstadoCuentaID.Trim();
        }


        objet_EstadoCuenta = null;
        objlg_EstadoCuenta = null;
    }
    private void Combo_FormatosBalance()
    {
        BEFormatosBalance objet_FormatosBalance = new BEFormatosBalance();
        BLFormatosBalance objlg_FormatosBalance = new BLFormatosBalance();
        List<BEFormatosBalance> Col_FormatosBalance;
        //Int32 i = 0;

        Col_FormatosBalance = objlg_FormatosBalance.fnSelFormatosBalanceDin("Estado=0", "NombreFormatoBalance");
        

        //RadComboBoxItem item2 = new RadComboBoxItem();
        //item2.Text = "Seleccione";
        //item2.Value = Utilitaria.Cls_Enums.EstadoModulos.Todos;
        //item2.Attributes.Add("NombreFormatoBalance", "Seleccione");
        //ddlFormatoBalanceID.Items.Add(item2);

        foreach (BEFormatosBalance FormatosBalance in Col_FormatosBalance)
        {
            RadComboBoxItem item = new RadComboBoxItem();

            item.Text = FormatosBalance.NombreFormatoBalance.Trim();
            item.Value = FormatosBalance.FormatoBalanceID.Trim();

            String Nombre = FormatosBalance.NombreFormatoBalance;

            item.Attributes.Add("NombreFormatoBalance", Nombre);

            ddlFormatoBalanceID.Items.Add(item);

            item.DataBind();
        }

        objet_FormatosBalance = null;
        objlg_FormatosBalance = null;
    }
    private void Combo_Categoria()
    {
        BECategoria objet_Categoria = new BECategoria();
        BLCategoria objlg_Categoria = new BLCategoria();
        List<BECategoria> Col_Categoria;
        //Int32 i = 0;

        Col_Categoria = objlg_Categoria.fnSelCategoriaDin("", "");

        RadComboBoxItem item2 = new RadComboBoxItem();
        item2.Text = "";
        item2.Value = "";
        ddlCategoriaID.Items.Add(item2);

        foreach (BECategoria Categoria in Col_Categoria)
        {
            RadComboBoxItem item = new RadComboBoxItem();

            item.Text = Categoria.NombreCategoria;// +" -> " + Categoria.NombreCategoria.Trim();
            item.Value = Categoria.CategoriaID.ToString().Trim();

            String Nombre = Categoria.NombreCategoria;

            item.Attributes.Add("NombreCategoria", Nombre);

            ddlCategoriaID.Items.Add(item);

            item.DataBind();
        }

        objet_Categoria = null;
        objlg_Categoria = null;
    }
    
    private void Combo_Moneda()
    {
        BEMonedas objet_Monedas = new BEMonedas();
        BLMonedas objlg_Monedas = new BLMonedas();
        List<BEMonedas> Col_Monedas;
        //Int32  i = 0;

        Col_Monedas = objlg_Monedas.fnSelMonedasAll();

        //RadComboBoxItem item2 = new RadComboBoxItem();
        //item2.Text = "Seleccione";
        //item2.Value = Utilitaria.Cls_Enums.EstadoModulos.Todos;
        //ddlMonedaID.Items.Add(item2);

        foreach (BEMonedas Monedas in Col_Monedas)
        {
            RadComboBoxItem item = new RadComboBoxItem();

            item.Text = Monedas.Nombre;
            item.Value = Monedas.MonedaID.ToString().Trim();

            String Nombre = Monedas.Nombre;

            item.Attributes.Add("Nombre", Nombre);

            ddlMonedaID.Items.Add(item);

            item.DataBind();
        }

        objet_Monedas = null;
        objlg_Monedas = null;
    }
    private void Combo_Areas()
    {
        BEAreas objet_Areas = new BEAreas();
        BLAreas objlg_Areas = new BLAreas();
        List<BEAreas> Col_Areas;
//        Int32  i = 0;

        Col_Areas = objlg_Areas.fnSelAreasDin("Estado=0", "NombreArea");

        RadComboBoxItem item2 = new RadComboBoxItem();
        item2.Text = "Seleccione";
        item2.Value = Utilitaria.Cls_Enums.EstadoModulos.Todos;
        ddlAreaID.Items.Add(item2);

        foreach (BEAreas Areas in Col_Areas)
        {
            RadComboBoxItem item = new RadComboBoxItem();

            item.Text = Areas.NombreArea;
            item.Value = Areas.AreaId.ToString().Trim();

            String Nombre = Areas.NombreArea;

            item.Attributes.Add("NombreArea", Nombre);

            ddlAreaID.Items.Add(item);

            item.DataBind();
        }

        objet_Areas = null;
        objlg_Areas = null;
    }


    private void llenaCombo()
    {
        this.ddlEstado2.Items.Insert(0, new RadComboBoxItem("Activo"));
        this.ddlEstado2.Items[0].Value = Utilitaria.Cls_Enums.EstadoModulos.Activo;

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

    private void limpiarCampos()
    {
        ViewState["PlanCuentaID"] = "";
        this.txtCodigoPlanCuenta.Text = "";
        this.txtNombrePlanCuenta.Text = "";
        this.cbRequiereDocumento.Checked = false;
        this.cbRequiereFechaVencimiento.Checked = false;
        this.cbRequiereArea.Checked = false;
        this.cbRequiereProyecto.Checked = false;
        this.cbRequiereCanal.Checked = false;
        this.ddlPlanCuentaIDDebe.SelectedValue = ""; // Utilitaria.Cls_Enums.EstadoModulos.Todos;
        this.ddlPlanCuentaIDHaber.SelectedValue = ""; //Utilitaria.Cls_Enums.EstadoModulos.Todos;
        this.ddlNivelSaldoID.SelectedValue = "";
        this.ddlMonedaID.SelectedValue = "";
        this.ddlTipoCuentaID.SelectedValue = "";
        this.ddlEstadoCuentaID.SelectedValue = "";
        //this.ddlFormatoGananciaPerdidaID.SelectedValue = Utilitaria.Cls_Enums.EstadoModulos.Todos;
        this.ddlFormatoBalanceID.SelectedValue = "";
        this.ddlCategoriaID.SelectedValue = "";
        //this.ddlEstablecimientoID.SelectedValue = Utilitaria.Cls_Enums.EstadoModulos.Todos;
        this.ddlEstado2.SelectedValue = "0";
        this.ddlAreaID.SelectedValue = "";
        //Diego
        this.cbPreferenciaCC.Checked = false;
        this.cbSegmento.Checked = false;
        this.cbGPA.Checked = false;
        this.cbPaquete.Checked = false;
        this.cbPais.Checked = false;

        ViewState["New_CodigoPlanCuenta"] = null;
        ViewState["New_NombrePlanCuenta"] = null;
        ViewState["New_RequiereDocumento"] = null;
        ViewState["New_RequiereFechaVencimiento"] = null;
        ViewState["New_RequiereArea"] = null;
        ViewState["New_RequiereHotel"] = null;
        ViewState["New_RequiereProyecto"] = null;
        ViewState["New_RequiereCanal"] = null;
        ViewState["New_PlanCuentaIDDebe"] = null;
        ViewState["New_PlanCuentaIDHaber"] = null;
        ViewState["New_NivelSaldoID"] = null;
        ViewState["New_MonedaID"] = null;
        ViewState["New_TipoCuentaID"] = null;
        ViewState["New_EstadoCuentaID"] = null;
        ViewState["New_FormatoGananciaPerdidaID"] = null;
        ViewState["New_FormatoBalanceID"] = null;
        ViewState["New_CategoriaID"] = null;
        ViewState["New_EstablecimientoID"] = null;
        ViewState["New_Estado"] = null;
        ViewState["New_AreaId"] = null;


        ViewState["PlanCuentaID"] = null;
        ViewState["CodigoPlanCuenta"] = null;
        ViewState["NombrePlanCuenta"] = null;
        ViewState["RequiereDocumento"] = null;
        ViewState["RequiereFechaVencimiento"] = null;
        ViewState["RequiereArea"] = null;
        ViewState["RequiereProyecto"] = null;
        ViewState["RequiereCanal"] = null;
        ViewState["PlanCuentaIDDebe"] = null;
        ViewState["PlanCuentaIDHaber"] = null;
        ViewState["NivelSaldoID"] = null;
        ViewState["MonedaID"] = null;
        ViewState["TipoCuentaID"] = null;
        ViewState["EstadoCuentaID"] = null;
        ViewState["FormatoGananciaPerdidaID"] = null;
        ViewState["FormatoBalanceID"] = null;
        ViewState["CategoriaID"] = null;
        ViewState["EstablecimientoID"] = null;
        ViewState["Estado"] = null;
        ViewState["AreaID"] = null;
        //DIEGO
        ViewState["PreferenciaCC"] = null;
        ViewState["Segmento"] = null;
        ViewState["GPA"] = null;
        ViewState["Paquete"] = null;
        ViewState["Pais"] = null;
    }

    protected void cbRequiereArea_CheckedChanged(object sender, EventArgs e)
    {
       // if (cbRequiereArea.Checked == true)
        //{
          //  this.ddlAreaID.Enabled = true;
        //}
        //else
        //{
         //   this.ddlAreaID.SelectedValue = "";
          //  this.ddlAreaID.Text = "";
         //   this.ddlAreaID.Enabled = false;
       // }
    }

    private void BuscaRegistro()
    {

        BEPlanDeCuentas objet_PlanDeCuentas = new BEPlanDeCuentas();
        BLPlanDeCuentas objlg_PlanDeCuentas = new BLPlanDeCuentas();
        List<BEPlanDeCuentas> Datos;
        //Datos = objlg_PlanDeCuentas.fnSelPlanDeCuentasDin("PlanCuentaID=" + Convert.ToString(ViewState["PlanCuentaID"]).Trim(), "");
        Datos = objlg_PlanDeCuentas.fnSelPlanDeCuentasDin("PlanCuentaID=" + Convert.ToString(ViewState["PlanCuentaID"]).Trim() + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim(), "", 0);


        // Inicio Variables auditoras ///
        ViewState["PlanCuentaID"] = Datos[0].PlanCuentaID;
        ViewState["CodigoPlanCuenta"] = Datos[0].CodigoPlanCuenta;
        ViewState["NombrePlanCuenta"] = Datos[0].NombrePlanCuenta.Trim();
        ViewState["RequiereDocumento"] = Datos[0].RequiereDocumento;
        ViewState["RequiereFechaVencimiento"] = Datos[0].RequiereFechaVencimiento;
        ViewState["RequiereHotel"] = Datos[0].RequiereHotel;
        ViewState["RequiereArea"] = Datos[0].RequiereArea;
        if (Datos[0].RequiereArea == true)
        {
            ddlAreaID.Enabled = true;
        }

        if (Datos[0].RequiereDocumento == true)
        {
            ddlCategoriaID.Enabled = true;
        }

        ViewState["RequiereProyecto"] = Datos[0].RequiereProyecto;
        ViewState["RequiereCanal"] = Datos[0].RequiereCanal;
        //DIEGO
        ViewState["PreferenciaCC"] = Datos[0].PreferenciaCC;
        ViewState["Segmento"] = Datos[0].RequiereSegmento;
        ViewState["GPA"] = Datos[0].RequiereGPA;
        ViewState["Paquete"] = Datos[0].RequierePaquete;
        ViewState["Pais"] = Datos[0].RequierePais;

        if (Datos[0].BEAreas.AreaId == 0) { ViewState["AreaID"] = ""; } else { ViewState["AreaID"] = Datos[0].BEAreas.AreaId; };
        // DIEGO 29/11/2013 - Se comento por que generaba error al editar
        if (Datos[0].PlanCuentaIDDebe.ToString().Trim() == "0") { ViewState["PlanCuentaIDDebe"] = ""; } else { ViewState["PlanCuentaIDDebe"] = Datos[0].PlanCuentaIDDebe.Trim(); };
        if (Datos[0].PlanCuentaIDHaber.ToString().Trim() == "0") { ViewState["PlanCuentaIDHaber"] = ""; } else { ViewState["PlanCuentaIDHaber"] = Datos[0].PlanCuentaIDHaber.Trim(); };
        // FIN DIEGO 29/11/2013
        ViewState["NivelSaldoID"] = Datos[0].NivelSaldoID.Trim();
        ViewState["MonedaID"] = Datos[0].MonedaID;
        ViewState["TipoCuentaID"] = Datos[0].TipoCuentaID.Trim();
        ViewState["EstadoCuentaID"] = Datos[0].EstadoCuentaID;
        //ViewState["FormatoGananciaPerdidaID"] = Datos[0].FormatoGananciaPerdidaID.Trim();
        ViewState["FormatoBalanceID"] = Datos[0].FormatoBalanceID.Trim();
        ViewState["CategoriaID"] = Datos[0].CategoriaID;
        ViewState["EstablecimientoID"] = Datos[0].EstablecimientoID;
        ViewState["Estado"] = Datos[0].Estado;

        ///////FIN//////////

        this.txtCodigoPlanCuenta.Text = Convert.ToString(ViewState["CodigoPlanCuenta"]).Trim();
        this.txtNombrePlanCuenta.Text = Convert.ToString(ViewState["NombrePlanCuenta"]).Trim();
        this.cbRequiereDocumento.Checked = Convert.ToBoolean(ViewState["RequiereDocumento"]);
        this.cbRequiereFechaVencimiento.Checked = Convert.ToBoolean(ViewState["RequiereFechaVencimiento"]);
        this.cbRequiereArea.Checked = Convert.ToBoolean(ViewState["RequiereArea"]);
        this.cbRequiereHotel.Checked = Convert.ToBoolean(ViewState["RequiereHotel"]);
        this.cbRequiereProyecto.Checked = Convert.ToBoolean(ViewState["RequiereProyecto"]);
        this.cbRequiereCanal.Checked = Convert.ToBoolean(ViewState["RequiereCanal"]);
        //Diego
        this.cbPreferenciaCC.Checked = Convert.ToBoolean(ViewState["PreferenciaCC"]);
        this.cbSegmento.Checked = Convert.ToBoolean(ViewState["Segmento"]);
        this.cbGPA.Checked = Convert.ToBoolean(ViewState["GPA"]);
        this.cbPaquete.Checked = Convert.ToBoolean(ViewState["Paquete"]);
        this.cbPais.Checked = Convert.ToBoolean(ViewState["Pais"]);
        this.ddlAreaID.SelectedValue = Convert.ToString(ViewState["AreaID"]).Trim();

        // DIEGO 29/11/2013
        this.ddlPlanCuentaIDDebe.SelectedValue = Convert.ToString(ViewState["PlanCuentaIDDebe"]).Trim();
        this.ddlPlanCuentaIDHaber.SelectedValue = Convert.ToString(ViewState["PlanCuentaIDHaber"]).Trim();
        // FIN DIEGO 29/11/2013
        this.ddlNivelSaldoID.SelectedValue = Convert.ToString(ViewState["NivelSaldoID"]).Trim();
        this.ddlMonedaID.SelectedValue = Convert.ToString(ViewState["MonedaID"]).Trim();
        this.ddlTipoCuentaID.SelectedValue = Convert.ToString(ViewState["TipoCuentaID"]).Trim();
        this.ddlEstadoCuentaID.SelectedValue = Convert.ToString(ViewState["EstadoCuentaID"]).Trim();
        //this.ddlFormatoGananciaPerdidaID.SelectedValue = Convert.ToString(ViewState["FormatoGananciaPerdidaID"]).Trim();
        this.ddlFormatoBalanceID.SelectedValue = Convert.ToString(ViewState["FormatoBalanceID"]).Trim();
        this.ddlCategoriaID.SelectedValue = Convert.ToString(ViewState["CategoriaID"]).Trim();
        //this.ddlEstablecimientoID.SelectedValue = Session["EmpresaID"];
        this.ddlEstado2.SelectedValue = Convert.ToString(ViewState["Estado"]).Trim();

        objet_PlanDeCuentas = null;
        objlg_PlanDeCuentas = null;
        Datos = null;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //BLPlandeCuentasBalances oBLPlandeCuentasBalances = new BLPlandeCuentasBalances();
        //List<BEPlandeCuentasBalances> loPlandeCuentasBalances;

        //loPlandeCuentasBalances = oBLPlandeCuentasBalances.fnSelPlanDeCuentasAll(ViewState["PlanCuentaID"].ToString());
        String PlanCuentaID;
        try
        {
            PlanCuentaID = Convert.ToString(ViewState["PlanCuentaID"]).Trim();
        }
        catch
        {
            PlanCuentaID = "";
        }
        
        //llena_GridPlanCuentaBlances(PlanCuentaID, ViewState["CodigoPlanCuenta"].ToString()); //Diego 28/04/2014

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    }

    BEFormatoDeGananciasPerdidas oBEFormatoDeGananciasPerdidas = new BEFormatoDeGananciasPerdidas();
    BLFormatoDeGananciasPerdidas oBLFormatoDeGananciasPerdidas = new BLFormatoDeGananciasPerdidas();
    List<BEFormatoDeGananciasPerdidas> oList;


    protected void GridPlanCuentaBalances_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            GridDataItem item = (GridDataItem)e.Item;

            DropDownList dropdown = (DropDownList)item.FindControl("DropDownList1");
            oList = oBLFormatoDeGananciasPerdidas.fnSelFormatoDeGananciasPerdidasDin(" Where FDGP.TipoFormatoGGPPID=" + item["TipoFormatoGGPPID"].Text.Trim(), "");

            Label lbl = (Label)item.FindControl("label1");
            lbl.Text = item["PlandeCuentasBalanceID"].Text;

            //dropdown.DataSource = oList;
            //dropdown.DataTextField = "NombreFormatoGanaciasPerdidas";
            //dropdown.DataValueField = "FormatoGananciaPerdidaID";
            //dropdown.DataBind();

            dropdown.Items.Insert(0, "--Seleccione--");
            dropdown.Items[0].Value = "0";

            for (Int32  i = 0; i < oList.Count; i++)
            {
                dropdown.Items.Insert(i + 1, oList[i].NombreFormatoGanaciasPerdidas.ToString());
                dropdown.Items[i + 1].Value = oList[i].FormatoGananciaPerdidaID.Trim();
            }
            dropdown.DataBind();
            dropdown.SelectedValue = item["FormatoGananciaPerdidaID"].Text;
            dropdown.TabIndex = tabindex_s;
            tabindex_s++;
            
        }
        
    }

    protected void btnGuardar_Click(object sender, EventArgs e)
    {

        //if (cbRequiereDocumento.Checked == true && ddlCategoriaID.SelectedValue=="")
        //{
        //    showMessage("- Seleccione la Categoria.");
        //    return;
        //}

        if (this.ddlPlanCuentaIDDebe.SelectedValue == "" && this.ddlPlanCuentaIDHaber.SelectedValue != "")
        {
            showMessage("Seleccione la Cuenta Debe");
            //this.ddlPlanCuentaIDDebe.Focus();
            return;
        }

        if (this.ddlPlanCuentaIDDebe.SelectedValue != "" && this.ddlPlanCuentaIDHaber.SelectedValue == "")
        {
            showMessage("Seleccione la Cuenta Haber");
            //this.ddlPlanCuentaIDHaber.Focus();
            return;
        }

        BEPlanDeCuentas objet_PlanDeCuentas = new BEPlanDeCuentas();
        BLPlanDeCuentas objlg_PlanDeCuentas = new BLPlanDeCuentas();

        String strPlanCuentaID = Convert.ToString(ViewState["PlanCuentaID"]);
        String strRegistro;
        String strActualiza;


        ViewState["New_CodigoPlanCuenta"] = txtCodigoPlanCuenta.Text;
        ViewState["New_NombrePlanCuenta"] = txtNombrePlanCuenta.Text;
        ViewState["New_RequiereDocumento"] = cbRequiereDocumento.Checked;
        ViewState["New_RequiereFechaVencimiento"] = cbRequiereFechaVencimiento.Checked;
        ViewState["New_RequiereArea"] = cbRequiereArea.Checked;
        ViewState["New_RequiereHotel"] = cbRequiereHotel.Checked;
        ViewState["New_RequiereProyecto"] = cbRequiereProyecto.Checked;
        ViewState["New_RequiereCanal"] = cbRequiereCanal.Checked;
        ViewState["New_PlanCuentaIDDebe"] = ddlPlanCuentaIDDebe.SelectedValue;
        if (ddlPlanCuentaIDDebe.SelectedValue == "") { ViewState["New_PlanCuentaIDDebe"] = "0"; }
        ViewState["New_PlanCuentaIDHaber"] = ddlPlanCuentaIDHaber.SelectedValue;
        if (ddlPlanCuentaIDHaber.SelectedValue == "") { ViewState["New_PlanCuentaIDHaber"] = "0"; }
        ViewState["New_NivelSaldoID"] = ddlNivelSaldoID.SelectedValue;
        ViewState["New_MonedaID"] = ddlMonedaID.SelectedValue;
        ViewState["New_TipoCuentaID"] = ddlTipoCuentaID.SelectedValue;
        ViewState["New_EstadoCuentaID"] = ddlEstadoCuentaID.SelectedValue;
        //ViewState["New_FormatoGananciaPerdidaID"] = ddlFormatoGananciaPerdidaID.SelectedValue;
        ViewState["New_FormatoBalanceID"] = ddlFormatoBalanceID.SelectedValue;
        ViewState["New_CategoriaID"] = ddlCategoriaID.SelectedValue;
        if (ddlCategoriaID.SelectedValue == "") { ViewState["New_CategoriaID"] = "0"; }

        ViewState["New_EstablecimientoID"] = Session["EmpresaID"];
        ViewState["New_Estado"] = ddlEstado2.SelectedValue;
        ViewState["New_AreaId"] = ddlAreaID.SelectedValue;
        if (ddlAreaID.SelectedValue == "") { ViewState["New_AreaId"] = "0";}
        
        //Diego
        ViewState["PreferenciaCC"] = cbPreferenciaCC.Checked;
        ViewState["Segmento"] = cbSegmento.Checked;
        ViewState["GPA"] = cbGPA.Checked;
        ViewState["Paquete"] = cbPaquete.Checked;
        ViewState["Pais"] = cbPais.Checked;



        objet_PlanDeCuentas.PlanCuentaID = strPlanCuentaID;
        objet_PlanDeCuentas.CodigoPlanCuenta = Convert.ToString(ViewState["New_CodigoPlanCuenta"]).Trim();
        objet_PlanDeCuentas.NombrePlanCuenta = Convert.ToString(ViewState["New_NombrePlanCuenta"]).Trim();
        objet_PlanDeCuentas.RequiereDocumento = Convert.ToBoolean(ViewState["New_RequiereDocumento"]);
        objet_PlanDeCuentas.RequiereFechaVencimiento = Convert.ToBoolean(ViewState["New_RequiereFechaVencimiento"]);
        objet_PlanDeCuentas.RequiereArea = Convert.ToBoolean(ViewState["New_RequiereArea"]);
        objet_PlanDeCuentas.RequiereHotel = Convert.ToBoolean(ViewState["New_RequiereHotel"]);
        objet_PlanDeCuentas.RequiereProyecto = Convert.ToBoolean(ViewState["New_RequiereProyecto"]);
        objet_PlanDeCuentas.RequiereCanal = Convert.ToBoolean(ViewState["New_RequiereCanal"]);
        objet_PlanDeCuentas.PlanCuentaIDDebe = Convert.ToString(ViewState["New_PlanCuentaIDDebe"]);
        objet_PlanDeCuentas.PlanCuentaIDHaber = Convert.ToString(ViewState["New_PlanCuentaIDHaber"]);
        objet_PlanDeCuentas.NivelSaldoID = Convert.ToString(ViewState["New_NivelSaldoID"]);
        objet_PlanDeCuentas.MonedaID = Convert.ToInt32(ViewState["New_MonedaID"]);
        objet_PlanDeCuentas.TipoCuentaID = Convert.ToString(ViewState["New_TipoCuentaID"]);
        objet_PlanDeCuentas.EstadoCuentaID = Convert.ToString(ViewState["New_EstadoCuentaID"]);
        objet_PlanDeCuentas.FormatoGananciaPerdidaID = Convert.ToString(ViewState["New_FormatoGananciaPerdidaID"]);
        objet_PlanDeCuentas.FormatoBalanceID = Convert.ToString(ViewState["New_FormatoBalanceID"]);
        objet_PlanDeCuentas.CategoriaID = Convert.ToInt32(ViewState["New_CategoriaID"]);
        objet_PlanDeCuentas.EstablecimientoID = Convert.ToInt32(ViewState["New_EstablecimientoID"]);
        objet_PlanDeCuentas.BEAreas.AreaId = Convert.ToInt32(ViewState["New_AreaId"]);
        objet_PlanDeCuentas.Estado = Convert.ToByte(ViewState["New_Estado"]);
        objet_PlanDeCuentas.PreferenciaCC = Convert.ToBoolean(ViewState["PreferenciaCC"]);
        objet_PlanDeCuentas.RequiereSegmento = Convert.ToBoolean(ViewState["Segmento"]);
        objet_PlanDeCuentas.RequiereGPA = Convert.ToBoolean(ViewState["GPA"]);
        objet_PlanDeCuentas.RequierePaquete = Convert.ToBoolean(ViewState["Paquete"]);
        objet_PlanDeCuentas.RequierePais = Convert.ToBoolean(ViewState["Pais"]);

        strRegistro = "<<Creo PlanDeCuentas>>" +
                        "\n<CodigoPlanCuenta>=" + ViewState["New_CodigoPlanCuenta"] +
                        "\n<NombrePlanCuenta>=" + ViewState["New_NombrePlanCuenta"] +
                        "\n<RequiereDocumento>=" + Convert.ToByte(ViewState["New_RequiereDocumento"]) +
                        "\n<RequiereFechaVencimiento>=" + Convert.ToByte(ViewState["New_RequiereFechaVencimiento"]) +
                        "\n<RequiereArea>=" + Convert.ToByte(ViewState["New_RequiereArea"]) +
                        "\n<RequiereProyecto>=" + Convert.ToByte(ViewState["New_RequiereProyecto"]) +
                        "\n<RequiereCanal>=" + Convert.ToByte(ViewState["New_RequiereCanal"]) +
                        "\n<PlanCuentaIDDebe>=" + ViewState["New_PlanCuentaIDDebe"] +
                        "\n<PlanCuentaIDHaber>=" + ViewState["New_PlanCuentaIDHaber"] +
                        "\n<NivelSaldoID>=" + ViewState["New_NivelSaldoID"] +
                        "\n<MonedaID>=" + ViewState["New_MonedaID"] +
                        "\n<TipoCuentaID>=" + ViewState["New_TipoCuentaID"] +
                        "\n<EstadoCuentaID>=" + ViewState["New_EstadoCuentaID"] +
                        "\n<FormatoGananciaPerdidaID>=" + ViewState["New_FormatoGananciaPerdidaID"] +
                        "\n<FormatoBalanceID>=" + ViewState["New_FormatoBalanceID"] +
                        "\n<CategoriaID>=" + ViewState["New_CategoriaID"] +
                        "\n<EstablecimientoID>=" + ViewState["New_EstablecimientoID"] +
                        "\n<Estado>=" + ViewState["New_Estado"] +
                        "\n<AreaId>=" + ViewState["New_AreaId"] +
                        "\n<PreferenciaCC>=" + ViewState["PreferenciaCC"]+
                        "\n<RequiereHotel>=" + Convert.ToByte(ViewState["New_RequiereHotel"]);

        //Ingresa
        objet_PlanDeCuentas.BEAuditores.UsuarioID = Convert.ToInt32(Session["UsuarioID"]);
        objet_PlanDeCuentas.BEAuditores.Movimiento = strRegistro;
        objet_PlanDeCuentas.BEAuditores.UsuarioIdAutorizado = 0;
        objet_PlanDeCuentas.BEAuditores.IPEquipo = Cls_Enums.f_DatosPC.IPPC;
        objet_PlanDeCuentas.BEAuditores.UsuarioActualEquipo = Cls_Enums.f_DatosPC.UsuarioPC;
        objet_PlanDeCuentas.BEAuditores.NombreEquipo = Cls_Enums.f_DatosPC.NombrePC;
        objet_PlanDeCuentas.BEAuditores.TablaMovimientoID = Cls_Enums.TablaMovimientos.PlanDeCuentas;

        if (strPlanCuentaID != String.Empty)
        {
            //Update
            strRegistro = "<<Actualiza PlanDeCuentas>>" +
                            "\n<CodigoPlanCuenta>=" + ViewState["CodigoPlanCuenta"] +
                            "\n<NombrePlanCuenta>=" + ViewState["NombrePlanCuenta"] +
                            "\n<RequiereDocumento>=" + Convert.ToByte(ViewState["RequiereDocumento"]) +
                            "\n<RequiereFechaVencimiento>=" + Convert.ToByte(ViewState["RequiereFechaVencimiento"]) +
                            "\n<RequiereArea>=" + Convert.ToByte(ViewState["RequiereArea"]) +
                            "\n<RequiereProyecto>=" + Convert.ToByte(ViewState["RequiereProyecto"]) +
                            "\n<RequiereCanal>=" + Convert.ToByte(ViewState["RequiereCanal"]) +
                            "\n<PlanCuentaIDDebe>=" + ViewState["PlanCuentaIDDebe"] +
                            "\n<PlanCuentaIDHaber>=" + ViewState["PlanCuentaIDHaber"] +
                            "\n<NivelSaldoID>=" + ViewState["NivelSaldoID"] +
                            "\n<MonedaID>=" + ViewState["MonedaID"] +
                            "\n<TipoCuentaID>=" + ViewState["TipoCuentaID"] +
                            "\n<EstadoCuentaID>=" + ViewState["EstadoCuentaID"] +
                            "\n<FormatoGananciaPerdidaID>=" + ViewState["FormatoGananciaPerdidaID"] +
                            "\n<FormatoBalanceID>=" + ViewState["FormatoBalanceID"] +
                            "\n<CategoriaID>=" + ViewState["CategoriaID"] +
                            "\n<EstablecimientoID>=" + ViewState["EstablecimientoID"] +
                            "\n<Estado>=" + ViewState["Estado"] +
                            "\n<AreaId>=" + ViewState["AreaId"]+
                            "\n<PreferenciaCC>=" + ViewState["PreferenciaCC"]+
                            "\n<RequiereHotel>=" + Convert.ToByte(ViewState["New_RequiereHotel"]);

            strActualiza = "<<Actualiza PlanDeCuentas>>" +
                            "\n<CodigoPlanCuenta>=" + ViewState["New_CodigoPlanCuenta"] +
                            "\n<NombrePlanCuenta>=" + ViewState["New_NombrePlanCuenta"] +
                            "\n<RequiereDocumento>=" + Convert.ToByte(ViewState["New_RequiereDocumento"]) +
                            "\n<RequiereFechaVencimiento>=" + Convert.ToByte(ViewState["New_RequiereFechaVencimiento"]) +
                            "\n<RequiereArea>=" + Convert.ToByte(ViewState["New_RequiereArea"]) +
                            "\n<RequiereProyecto>=" + Convert.ToByte(ViewState["New_RequiereProyecto"]) +
                            "\n<RequiereCanal>=" + Convert.ToByte(ViewState["New_RequiereCanal"]) +
                            "\n<PlanCuentaIDDebe>=" + ViewState["New_PlanCuentaIDDebe"] +
                            "\n<PlanCuentaIDHaber>=" + ViewState["New_PlanCuentaIDHaber"] +
                            "\n<NivelSaldoID>=" + ViewState["New_NivelSaldoID"] +
                            "\n<MonedaID>=" + ViewState["New_MonedaID"] +
                            "\n<TipoCuentaID>=" + ViewState["New_TipoCuentaID"] +
                            "\n<EstadoCuentaID>=" + ViewState["New_EstadoCuentaID"] +
                            "\n<FormatoGananciaPerdidaID>=" + ViewState["New_FormatoGananciaPerdidaID"] +
                            "\n<FormatoBalanceID>=" + ViewState["New_FormatoBalanceID"] +
                            "\n<CategoriaID>=" + ViewState["New_CategoriaID"] +
                            "\n<EstablecimientoID>=" + ViewState["New_EstablecimientoID"] +
                            "\n<Estado>=" + ViewState["New_Estado"] +
                            "\n<AreaId>=" + ViewState["New_AreaId"]+
                            "\n<PreferenciaCC>=" + ViewState["PreferenciaCC"]+
                            "\n<RequiereHotel>=" + Convert.ToByte(ViewState["New_RequiereHotel"]);

            objet_PlanDeCuentas.BEAuditores.Movimiento = strRegistro;
            objet_PlanDeCuentas.BEAuditores.MovimientoUltimo = strActualiza;

            ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind();", true);
        }
        else
        {
            ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind('navigateToInserted');", true);
        }

        int exirReg = objlg_PlanDeCuentas.fnInsUpdPlanDeCuentas(objet_PlanDeCuentas);


        //Registro de Amarres a Formatos de Ganancias y Perdidas/////////////////////////////////////////////////////////////////////////////////////////////

        //Diego 28/04/2014 se comento para eliminar el cuadro
        //BLPlandeCuentasBalances oBLPlandeCuentasBalances = new BLPlandeCuentasBalances();
        //List<BEPlandeCuentasBalances> loBEPlandeCuentasBalances = new List<BEPlandeCuentasBalances>();

        //for (Int32 i = 0; i < GridPlanCuentaBalances.Items.Count; i++)
        //{
        //    BEPlandeCuentasBalances oBEPlandeCuentasBalances = new BEPlandeCuentasBalances();
        //    oBEPlandeCuentasBalances.PlandeCuentasBalanceID = ((Label)GridPlanCuentaBalances.Items[i].FindControl("label1")).Text;
        //    oBEPlandeCuentasBalances.PlanCuentaID = txtCodigoPlanCuenta.Text;
        //    oBEPlandeCuentasBalances.FormatoGananciaPerdidaID = ((DropDownList)GridPlanCuentaBalances.Items[i].FindControl("DropDownList1")).SelectedValue;
        //    oBEPlandeCuentasBalances.EstablecimientoID = Convert.ToInt32(Session["EmpresaID"]);
        //    loBEPlandeCuentasBalances.Add(oBEPlandeCuentasBalances);
        //}
        //oBLPlandeCuentasBalances.fnInsUpdPlanDeCuentasBalances(loBEPlandeCuentasBalances);
        //FIN Diego 28/04/2014

        /////////////////////////////////////////////////////////////////////////////////////////////////////


        if (exirReg > 0) { showMessage("Los Datos que ingreso ya esta registrado"); return; }

        limpiarCampos();

    }
    protected void btnVolver_Click(object sender, EventArgs e)
    {
        ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CancelEdit();", true);
        //limpiarCampos();
    }
    protected void showMessage(string strMessage)
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "alert('" + strMessage + "');", true);

    }

    protected void txtCodigoPlanCuenta_TextChanged(object sender, EventArgs e)
    {
        String CodigoPlanCuenta = txtCodigoPlanCuenta.Text;
        //llena_GridPlanCuentaBlances("", txtCodigoPlanCuenta.Text); //Diego 28/04/2014

        txtNombrePlanCuenta.Focus();
    }

    protected void cbRequiereDocumento_CheckedChanged(object sender, EventArgs e)
    {

        //if (cbRequiereDocumento.Checked == true)
        //{
        //    this.ddlCategoriaID.Enabled = true;
        //}
        //else
        //{
        //    this.ddlCategoriaID.SelectedValue = "";
        //    this.ddlCategoriaID.Text = "";
        //    this.ddlCategoriaID.Enabled = false;
        //}

    }
}
