using System;
using System.Data;
using System.Configuration;
using System.Collections.Generic;
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.Xml;
using System.IO;
using System.Linq;
using Telerik.Web.UI;


using System.Data.SqlClient;

using BE;
using BL;
using Utilitaria;
using System.Threading;
using System.Globalization;

public partial class frmAsientosDetalle : System.Web.UI.Page
{   
    DataTable myDt = new DataTable();
    DataTable myDtElimina = new DataTable();
    Int32 dosLetra = 0;
    DataTable myDtUN = new DataTable();
    Int32 ActivarUnidadNegocioValor;
    String DesbloqueaVoucher;
   

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

        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SHIOL_CONTA_BTHConnectionString"].ConnectionString);
        
        DataSet DSdataset = new DataSet();
        conn.Open();
        SqlDataAdapter Query = new SqlDataAdapter("SELECT isnull(DesbloqueaVoucher,0) as DesbloqueaVoucher FROM usuarios WHERE usuarioID = " + Session["UsuarioID"].ToString().Trim() + "", conn);
        Query.Fill(DSdataset, "Data");
        if (DSdataset.Tables[0].Rows.Count > 0)
        {
            for (int i = 0; i < DSdataset.Tables[0].Rows.Count; i++)
            {
                DataRow campo = DSdataset.Tables["Data"].Rows[i];
                DesbloqueaVoucher = campo["DesbloqueaVoucher"].ToString();
            }
        }
        conn.Close();
        if (DesbloqueaVoucher == "0")
        {
            this.chkBloqueado.Enabled = false;
            this.chkBloqueado.Visible = false;
        }

        ActivarUnidadNegocioValor = ActivarUnidadNegocio();
        
        //DIEGO 12/09/2013
        if(txtGlosa.Text != "")
        {
           cambio_de_fecha();
        }
        //FIN DIEGO 12/09/2013

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

        //txtDebe.Attributes.Add("OnBlur", "DblClick(this);");
        
        Session["SubDiarioID"] = Request.QueryString["IDS"].ToString().Trim(); //"17";
        ViewState["ID"] = Request.QueryString["ID"].ToString().Trim(); //"161"; 
        ViewState["Ajuste"] = "0";
        //txtDia.MaxDate = Convert.ToDateTime("31/12/2012");
       
        if (!Page.IsPostBack)
        {
            txtGlosa.Focus();
            
            //txtDia.SelectedDate = DateTime.Today;
            cbxCanalId.Enabled = false;
            Session["DtDetalleAsiento"] = null;
            //Session["myDatatableUN"] = CreateDataTableUN();
            this.RadGrid1.Width = 1220;

            if (ViewState["ID"].ToString() == "")
            {
                //CREA
                this.btnBloquear.Visible = false;
                if (Cls_Propiedades.PrivilegiosUsuario[0].CreaAsiento == 1)
                {
                    btnGuardarRegresar.Visible = true;
                    btnGuardar.Visible = true;
                    btnAgregar.Visible = true;
                    btnNuevo.Visible = true;
                }
                else
                {
                    btnGuardarRegresar.Visible = false;
                    btnGuardar.Visible = false;
                    btnAgregar.Visible = false;
                    btnNuevo.Visible = false;
                }
            }
            else
            {
                //ACTUALIZA
                if (Cls_Propiedades.PrivilegiosUsuario[0].ModificaAsiento == 1)
                {
                    btnGuardarRegresar.Visible = true;
                    btnGuardar.Visible = true;
                    btnAgregar.Visible = true;
                    btnNuevo.Visible = true;
                    btnBloquear.Enabled = true;
                }
                else
                {
                    btnGuardarRegresar.Visible = false;
                    btnGuardar.Visible = false;
                    btnAgregar.Visible = false;
                    btnNuevo.Visible = false;
                    btnBloquear.Enabled = false;
                }

                BLAsientosContables objBLAsientosContables = new BLAsientosContables();
                Int32 Bloqueado = objBLAsientosContables.fnSelAsientosContables(Cls_Enums.TablasAsientosDetalle.Cabecera, Session["EmpresaID"].ToString(), Session["txtPeriodo"].ToString(), ViewState["ID"].ToString())[0].Bloqueado;
                ViewState["Bloqueado"] = Bloqueado;

                if (Bloqueado == 1)
                {
                    btnBloquear.ImageUrl = "~/images/lock.gif";//"Desbloquear";
                    btnBloquear.ToolTip = "Desbloquear";
                }
                else if (Bloqueado == 2)
                {
                    btnBloquear.ImageUrl = "~/images/lockdisable.PNG";//"Bloquear";
                    btnBloquear.ToolTip = "Imposible Modificar el Asiento";
                    btnGuardarRegresar.Visible = false;
                    btnGuardar.Visible = false;
                    btnAgregar.Visible = false;
                    btnNuevo.Visible = false;

                }
                else
                {
                    btnBloquear.ImageUrl = "~/images/unlock.PNG";//"Bloquear";
                    btnBloquear.ToolTip = "Bloquear";
                } 
            }
            Inhabilitacampos();

            Combo_PlanDeCuentas();
            //Combo_Contable(); //Diego
            //Combo_Area(); //Diego

            //Combo_Moneda(); //Diego
            //Combo_TipoConversionMoneda("Estado=0"); //Diego
            //Combo_Proyectos(); //Diego
            //Combo_flujoCaja(); //Diego

            this.txtDebe.Text = "0";
            this.txtHaber.Text = "0";
            this.txtDebe.DbValue = "0";
            this.txtHaber.DbValue = "0";

            //this.txtGlosa.Attributes.Add("onFocus", "siguienteCampo ='txtDia';");

            this.lblHotel.Text = Cls_Utilitaria.Nombre_Empresa(Session["HotelID"].ToString());
            //this.txtDia.SelectedDate = DateTime.Now; //diego fecha load
            //ScriptManager.RegisterStartupScript(this, this.GetType(), "Fecha", "fecha_actual();", true);
            ViewState["CodigoTabla"] = "0";
            //this.imgLogo.ImageUrl = Session["imgLogoSGH"].ToString();
            //this.imgLogoEmpresa.ImageUrl = Session["imgLogoEmpresa"].ToString();

            this.txtFechaEmision.SelectedDate = DateTime.Now.Date;
            muestra_SubDiario(Session["SubDiarioID"].ToString());
            this.lblHotel.Text = Cls_Utilitaria.Nombre_Empresa(Session["HotelID"].ToString());
            //this.txtDia.SelectedDate = System.DateTime.Now;//diego fecha load
            if (!String.IsNullOrEmpty(ViewState["ID"].ToString()))
            {
                listar_cabecera(ViewState["ID"].ToString());
                listar_Detalle(ViewState["ID"].ToString(), "");
            }

            if (Convert.ToInt32(ViewState["Bloqueado"]) == 1)
            {
                //this.btnBloquear.Attributes.Add("onclick", "javascript :if(confirm('¿Desea desbloquear el asiento?')== false) return false;"); // Diego
            }
            else if (Convert.ToInt32(ViewState["Bloqueado"]) == 0)
            {
                //this.btnBloquear.Attributes.Add("onclick", "javascript :if(confirm('¿Desea bloquear el asiento?')== false) return false;"); // Diego
            }
            else if (Convert.ToInt32(ViewState["Bloqueado"]) == 2)
            {
                //this.btnBloquear.Attributes.Add("onclick", "javascript :alert('Imposible Modificar el Asiento'); return false;"); // Diego
            }
        }
        //showMessage(Convert.ToString(txtDia.SelectedDate.ToString()));
    }

    private void Inhabilitacampos()
    {
        this.cbxAreaID.Enabled = false;
        this.GridDistribucionAreas.DataSource = null;
        this.GridDistribucionAreas.Enabled = false;
        this.cbxProyectoID.Enabled = false;
        this.cbxFlujoCaja.Enabled = false;
        this.cbxTipoDocumento.Enabled = false;
        this.txtFechaEmision.Enabled = false;
        this.txtDocumento.Enabled = false;
        //this.cbxEmpresa.Enabled = false;
        this.txtEmpresa.Enabled = false;
        this.btnEmpresa.Enabled = false;
        this.txtFechaVencimiento.Enabled = false;
        //Diego 29/10/2014
        this.cbxMedioPago.Enabled = false;
        this.txtoperacion.Enabled = false;
    }

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

    }

    #region AsientoCabecera
        private void listar_cabecera(String SubDiarioID)
        {
            if (!String.IsNullOrEmpty(SubDiarioID))
            {
                BEAsientosContables objet_AsientosContables = new BEAsientosContables();
                BLAsientosContables objlg_AsientosContables = new BLAsientosContables();
                List<BEAsientosContables> Lista_Asientos_Cabecera;

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

                Lista_Asientos_Cabecera = objlg_AsientosContables.fnSelAsientosContables(Cls_Enums.TablasAsientosDetalle.Cabecera, Session["EmpresaID"].ToString(), Session["txtPeriodo"].ToString(), SubDiarioID);

                if (Lista_Asientos_Cabecera.Count > 0)
                {
                    this.txtGlosa.Text = Lista_Asientos_Cabecera[0].Glosa;
                    this.txtDia.SelectedDate = Convert.ToDateTime(Lista_Asientos_Cabecera[0].Dia);
     /*FRANCO*/  // this.cbxMonda.SelectedValue = Lista_Asientos_Cabecera[0].MonedaID.ToString();
                    //this.cbxTipoConversionMoneda.SelectedValue = Lista_Asientos_Cabecera[0].TipoConversionMonedaID.ToString().Trim();
     /*FRANCO*/  // this.txtTipoCambio.Text = Lista_Asientos_Cabecera[0].TipoCambio.ToString();
                    this.txtComprobante.Text = Lista_Asientos_Cabecera[0].Comprobante.Trim();
                    //this.txtGlosa.Enabled = false;
                    //this.txtDia.Enabled = false;
                    //this.cbxMonda.Enabled = false;
                    //this.cbxTipoConversionMoneda.Enabled = false;
                    this.txtTipoCambio.Enabled = false;
                    
                    if(Lista_Asientos_Cabecera[0].Bloqueado == 1 )
                    {
                        //lnkCerrado.Text = "Cerrado";

                        chkBloqueado.Checked = true;

                        //Diego Bloquear Cabecera
                        TaBlaDetalle.Visible = false;
                        txtGlosa.Enabled = false;
                        txtDia.Enabled = false;
                        //Fin Diego Bloquear Cabecera

                        btnGuardarRegresar.Visible = false;
                        btnGuardar.Visible = false;
                        btnAgregar.Visible = false;
                        btnNuevo.Visible = false;

                    }
                    else if (Lista_Asientos_Cabecera[0].Bloqueado == 0)
                    {
                        //lnkCerrado.Text = "Abierto";

                        chkBloqueado.Checked = false;

                        //Diego Bloquear Cabecera
                        TaBlaDetalle.Visible = true;
                        txtGlosa.Enabled = true;
                        txtDia.Enabled = true;

                        //Fin Diego Bloquear Cabecera

                        btnGuardarRegresar.Visible = true;
                        btnGuardar.Visible = true;
                        btnAgregar.Visible = true;
                        btnNuevo.Visible = true;
                    }
                    else if (Lista_Asientos_Cabecera[0].Bloqueado == 2)
                    {
                        chkBloqueado.Checked = true;
                        //Diego Bloquear Cabecera
                        TaBlaDetalle.Visible = false;
                        txtGlosa.Enabled = false;
                        txtDia.Enabled = false;
                        //Fin Diego Bloquear Cabecera
                        btnGuardarRegresar.Visible = false;
                        btnGuardar.Visible = false;
                        btnAgregar.Visible = false;
                        btnNuevo.Visible = false;
                    }


                    //GridHeaderItem headerItem = (GridHeaderItem)e.Item;

                    //HyperLink hh0 = new HyperLink();
                    //currUrl = "frmEEFFMensual.aspx?Mes=0&HTL=" + ViewState["HotelID"] + "&ARA=" + ViewState["AreaID"] + "&UNG=" + ViewState["UnidadNegocioID"] + "&NVL=" + ViewState["NivelCuentaID"] + "&ACUM=" + ViewState["BalanceAcumulado"].ToString().Trim() + "&TFGPID=" + ViewState["TipoFormatoGGPPID"].ToString().Trim();
                    //hh0.NavigateUrl = "#";
                    //hh0.Text = "Apertura";
                    //hh0.CssClass = "gridtext";
                    //hh0.Attributes.Add("OnClick", "return AbreVentana('" + currUrl + "','EEFFMensual');");
                    //headerItem["Apertura"].Controls.Add(hh0);

                }

                objet_AsientosContables = null;
                objlg_AsientosContables = null;
            }

        }
        private void listar_Detalle(String AsientoContableID, String AsientoContableDetalleID)
        {
            BEAsientosContablesDetalle objet_AsientosContablesDetalle = new BEAsientosContablesDetalle();
            BLAsientosContablesDetalle objlg_AsientosContablesDetalle = new BLAsientosContablesDetalle();

            objet_AsientosContablesDetalle.BEAsientosContables.Detallecabecera = Cls_Enums.TablasAsientosDetalle.Detallecabecera;
            objet_AsientosContablesDetalle.BEAsientosContables.Empresa = Session["EmpresaID"].ToString();
            objet_AsientosContablesDetalle.BEAsientosContables.Anio = Session["txtPeriodo"].ToString();
            objet_AsientosContablesDetalle.AsientoContableID = AsientoContableID.Trim();
            objet_AsientosContablesDetalle.AsientoContableDetalleID = AsientoContableDetalleID.Trim();

            List<BEAsientosContablesDetalle> loList = new List<BEAsientosContablesDetalle>();

            this.RadGrid1.DataSource = null;
            this.RadGrid1.DataBind();

            loList = objlg_AsientosContablesDetalle.fnSelAsientosContablesDetalleDin(objet_AsientosContablesDetalle);

            //myDt = CreateDataTable();
            //myDtUN = CreateDataTableUN();

            AddDetalleAsiento(loList);

            //Session["DtDetalleAsiento"] = myDt;
           // Session["DtDetalleAsiento"] = myDt;
            Session["myDatatableUN"] = myDtUN;
            myDtElimina = CreateDataTableEliminar();
            Session["myDtElimina"] = myDtElimina;

            this.lblDiferenciaSoles.Text = String.Format("{0:N2}", Math.Round(Diferencia((DataTable)Session["DtDetalleAsiento"], "Soles"), 2, MidpointRounding.AwayFromZero).ToString());
            this.lblDiferenciaDolares.Text = String.Format("{0:N2}", Math.Round(Diferencia((DataTable)Session["DtDetalleAsiento"], "Dolares"), 2, MidpointRounding.AwayFromZero).ToString());

            this.RadGrid1.DataSource = ((DataTable)Session["DtDetalleAsiento"]).DefaultView;
            this.RadGrid1.DataBind();
            //this.RadGrid1.Rebind();

            objet_AsientosContablesDetalle = null;
            objlg_AsientosContablesDetalle = null;
            txtPlanCuenta.Focus();
        }
    
        private void muestra_SubDiario(String SubDiarioID)
        {
            Session["DtDetalleAsiento"] = CreateDataTable();

            BESubDiarios objet_SubDiarios = new BESubDiarios();
            BLSubDiarios objlg_SubDiarios = new BLSubDiarios();
            List<BESubDiarios> Col_SubDiarios;

            Col_SubDiarios = objlg_SubDiarios.fnSelSubDiariosDin("SubDiarioID=" + SubDiarioID, "");
            if (Col_SubDiarios.Count > 0)
            {
                this.lblSubDiario.Text = Col_SubDiarios[0].NombreSubDiario;
            }
            objet_SubDiarios = null;
            objlg_SubDiarios = null;



        }
        private void Combo_Moneda()
        {
            BEMonedas objet_Monedas = new BEMonedas();
            BLMonedas objlg_Monedas = new BLMonedas();
            List<BEMonedas> Col_Monedas;

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

            Col_Monedas = objlg_Monedas.fnSelMonedasAll();

            //for (int i = 0; i < Col_Monedas.Count; i++)
            //{
            //    RadComboBoxItem item = new RadComboBoxItem();

            //    item.Text = (string)Col_Monedas[i].Nombre;
            //    item.Value = Col_Monedas[i].MonedaID.ToString().Trim();

            //    //item.Value += ":" + CodigoSubDiario;

            //    this.cbxMonda.Items.Add(item);
            //    item.DataBind();
            //}

            for (int i = 0; i < Col_Monedas.Count; i++)
            {
                cbxMonda.Items.Insert(i, new RadComboBoxItem(Col_Monedas[i].Nombre.Trim()));
                cbxMonda.Items[i].Value = Col_Monedas[i].MonedaID.ToString().Trim();
            }
           

            objet_Monedas = null;
            objlg_Monedas = null;
        }
        private void Combo_TipoConversionMoneda(String strCondicion)
    {
        BETipoDeConversionesMoneda objet_TipoDeConversionesMoneda = new BETipoDeConversionesMoneda();
        BLTipoDeConversionesMoneda objlg_TipoDeConversionesMoneda = new BLTipoDeConversionesMoneda();
        List<BETipoDeConversionesMoneda> Col_TipoDeConversionesMoneda;

        Col_TipoDeConversionesMoneda = objlg_TipoDeConversionesMoneda.fnSelTipoDeConversionesMonedaDin(strCondicion, "[CodigoTipoConversionMoneda]");


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


        //for (int i = 0; i < Col_TipoDeConversionesMoneda.Count; i++)
        //{
        //    RadComboBoxItem item = new RadComboBoxItem();

        //    item.Text = (string)Col_TipoDeConversionesMoneda[i].CodigoTipoConversionMoneda;
        //    item.Value = Col_TipoDeConversionesMoneda[i].TipoConversionMonedaID.ToString().Trim();

        //    String NombreTipoConversionMoneda = (String)Col_TipoDeConversionesMoneda[i].NombreTipoConversionMoneda;

        //    item.Attributes.Add("NombreTipoConversionMoneda", NombreTipoConversionMoneda.ToString());

        //    //item.Value += ":" + CodigoSubDiario;

        //    this.cbxTipoConversionMoneda.Items.Add(item);
        //    item.DataBind();
        //}

        //DIEGO 01/10/2013
        //for (int i = 0; i < Col_TipoDeConversionesMoneda.Count; i++)
        //{
        //    cbxTipoConversionMoneda.Items.Insert(i ,new RadComboBoxItem(Col_TipoDeConversionesMoneda[i].CodigoTipoConversionMoneda.Trim() + " -> "+ Col_TipoDeConversionesMoneda[i].NombreTipoConversionMoneda.Trim()));
        //    cbxTipoConversionMoneda.Items[i ].Value = Col_TipoDeConversionesMoneda[i].TipoConversionMonedaID.ToString().Trim();
        //}
        //FIN DIEGO 01/10/2013

        objet_TipoDeConversionesMoneda = null;
        objlg_TipoDeConversionesMoneda = null;
    }


        
        protected void cbxTipoConversionMoneda_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
        {
            //showMessage(cbxTipoConversionMoneda.SelectedValue.ToString());
            Cambio_TipoConversionMoneda();
        }

     
        void Cambio_TipoConversionMoneda() {
            this.txtTipoCambio.Text = "";

            if (this.cbxTipoConversionMoneda.SelectedValue == "") { this.cbxTipoConversionMoneda.Text = ""; this.cbxTipoConversionMoneda.Focus(); return; }

            if (String.IsNullOrEmpty(this.txtDia.SelectedDate.ToString()))
            {
                showMessage("txtDia");
                this.cbxTipoConversionMoneda.Text = "";
                return;
            }

            if (String.IsNullOrEmpty(this.cbxMonda.SelectedValue.ToString()))
            {
                showMessage("Seleccione la Moneda.");
                this.cbxTipoConversionMoneda.Text = "";
                this.cbxTipoConversionMoneda.SelectedValue = "";
                return;
            }

            BETipoDeConversionesMoneda objet_TipoDeConversionesMoneda = new BETipoDeConversionesMoneda();
            BLTipoDeConversionesMoneda objlg_TipoDeConversionesMoneda = new BLTipoDeConversionesMoneda();
            List<BETipoDeConversionesMoneda> Col_TipoDeConversionesMoneda;

            Col_TipoDeConversionesMoneda = objlg_TipoDeConversionesMoneda.fnSelTipoDeConversionesMonedaDin("TipoConversionMonedaID=" + this.cbxTipoConversionMoneda.SelectedValue.Trim(), "");

            String strMoneda = null;

            if (Col_TipoDeConversionesMoneda.Count() != 0)
            {
                strMoneda = Col_TipoDeConversionesMoneda[0].CodigoTipoConversionMoneda;
                if (strMoneda == "V" || strMoneda == "C")// tipo de compra o venta
                {
                    this.txtTipoCambio.ReadOnly = true;
                    this.txtTipoCambio.Enabled = false;
                    //this.txtPlanCuenta.Focus();
                    
                    //DIEGO 29/08/2013
                    if (txtDebe.Enabled == true)
                    {
                        txtDebe.Focus();
                    }
                    else
                    {
                        txtHaber.Focus();
                    }
                    //FIN DIEGO 29/08/2013
                    //this.txtTipoCambio.MaxValue = 5;
                }
                else
                {
                    this.txtTipoCambio.Text = "";
                    this.txtTipoCambio.ReadOnly = false;
                    this.txtTipoCambio.Enabled = true;
                    //this.txtTipoCambio.Focus();
                    txtTipoCambio.Focus();
                    //this.txtTipoCambio.MaxValue = 5;
                    //this.txtTipoCambio.Focus();0
                }
            }

            objet_TipoDeConversionesMoneda = null;
            objlg_TipoDeConversionesMoneda = null;
            Col_TipoDeConversionesMoneda = null;

            if (!string.IsNullOrEmpty(strMoneda))
            {
                BETiposDeCambio objet_TiposDeCambio = new BETiposDeCambio();
                BLTiposDeCambio objlg_TiposDeCambio = new BLTiposDeCambio();
                List<BETiposDeCambio> Col_TiposDeCambio;

                String strFecha = String.Format("{0:dd/MM/yyyy}", this.txtDia.SelectedDate).ToString();

                Col_TiposDeCambio = objlg_TiposDeCambio.fnSelTiposDeCambioDin("monedaID=" + this.cbxMonda.SelectedValue.Trim(), "", strFecha);


                if (Col_TiposDeCambio.Count() != 0)
                {

                    if (strMoneda == "V")
                    {
                        if (Col_TiposDeCambio[0].Venta == null)
                        {
                            this.txtTipoCambio.Text = "0.00";
                        }
                        else
                        {
                            this.txtTipoCambio.Text = Col_TiposDeCambio[0].Venta.ToString();
                        }
                    }
                    else if (strMoneda == "C")
                    {
                        if (Col_TiposDeCambio[0].Compra == null)
                        {
                            this.txtTipoCambio.Text = "0.00";
                            this.txtTipoCambio.Focus();
                        }
                        else
                        {
                            this.txtTipoCambio.Text = Col_TiposDeCambio[0].Compra.ToString();
                        }
                    }
                    else
                    {
                        this.txtTipoCambio.Text = "0.00";
                        this.txtTipoCambio.ReadOnly = false;
                    }

                }
                else
                {
                    this.txtTipoCambio.Text = "0.00";
                    if (strMoneda == "V" || strMoneda == "C")
                    {
                        // tipo de compra o venta
                        this.txtTipoCambio.ReadOnly = true;
                        this.txtTipoCambio.Enabled = false;
                    }
                    else
                    {
                        this.txtTipoCambio.ReadOnly = false;
                        this.txtTipoCambio.Enabled = true;
                    }
                }

                objet_TiposDeCambio = null;
                objlg_TiposDeCambio = null;
                Col_TiposDeCambio = null;
            }

        }   


    #endregion

    #region AsientoDetalle
        private void Combo_Contable()
        {
            BECanalesContables objet_CanalesContables = new BECanalesContables();
            BLCanalesContables objlg_CanalesContables = new BLCanalesContables();
            List<BECanalesContables> Col_CanalesContables;

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

            Col_CanalesContables = objlg_CanalesContables.fnSelCanalesContablesDin("Estado=0", "[CodigoCanalContable]");

            for (Int32  i = 0; i < Col_CanalesContables.Count; i++)
            {
                RadComboBoxItem item = new RadComboBoxItem();

                item.Text = (string)Col_CanalesContables[i].CodigoCanalContable;
                item.Value = Col_CanalesContables[i].CanalContableID.ToString().Trim();

                String Codigo = (String)Col_CanalesContables[i].NombreCanalContable;
                item.Attributes.Add("NombreCanalContable", Codigo.ToString());

                this.cbxCanalId.Items.Add(item);
                item.DataBind();
            }

            //for (Int32  i = 0; i < Col_CanalesContables.Count; i++)
            //{
            //    this.cbxCanalId.Items.Insert(i+1, new RadComboBoxItem(Col_CanalesContables[i].CodigoCanalContable + " -> " + Col_CanalesContables[i].NombreCanalContable.Trim()));
            //    this.cbxCanalId.Items[i+1].Value = Col_CanalesContables[i].CanalContableID.ToString().Trim();
            //}



            objet_CanalesContables = null;
            objlg_CanalesContables = null;
        }
        private void Combo_TipoDocumentos()
        {

            //this.cbxSubDiario.Items.Clear();

            BETipoDocumentos objet_TipoDocumentos = new BETipoDocumentos();
            BLTipoDocumentos objlg_TipoDocumentos = new BLTipoDocumentos();
            List<BETipoDocumentos> Col_TipoDocumentos;

            Col_TipoDocumentos = objlg_TipoDocumentos.fnSelTipoDocumentosDin("", "NombreDocumento");

            for (Int32  i = 0; i < Col_TipoDocumentos.Count; i++)
            {
                RadComboBoxItem item = new RadComboBoxItem();

                item.Text = (string)Col_TipoDocumentos[i].NombreDocumento;
                item.Value = Col_TipoDocumentos[i].TipoDocumentoID.ToString().Trim();

                String Codigo = (String)Col_TipoDocumentos[i].Codigo;
                String CodigoSunat = (String)Col_TipoDocumentos[i].CodigoSunat;
                String CanjeaDocumento = (String)Col_TipoDocumentos[i].CanjeaDocumento.ToString();
                item.Attributes.Add("Codigo", Codigo.ToString());
                item.Attributes.Add("CanjeaDocumento", CanjeaDocumento.ToString());
                item.Attributes.Add("CodigoSunat", CodigoSunat.ToString());

                //item.Value += ":" + CodigoSubDiario;

                this.cbxTipoDocumento.Items.Add(item);
                item.DataBind();
            }
            objet_TipoDocumentos = null;
            objlg_TipoDocumentos = null;

        }
        private void Combo_Area()
        {
            BEAreas objet_Areas = new BEAreas();
            BLAreas objlg_Areas = new BLAreas();
            List<BEAreas> Col_Areas;

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

            this.cbxAreaID.Items.Clear();
            this.cbxAreaID.Items.Insert(0, new RadComboBoxItem(""));
            this.cbxAreaID.Items[0].Value = "";

            for (Int32  i = 0; i < Col_Areas.Count; i++)
            {
                this.cbxAreaID.Items.Insert(i+1,new RadComboBoxItem(Col_Areas[i].NombreArea.ToString()));
                this.cbxAreaID.Items[i+1].Value = Col_Areas[i].AreaId.ToString();
            }
            objet_Areas = null;
            objlg_Areas = null;

        }
        private void Combo_Proyectos()
        {
            BEProyectos objet_Proyectos = new BEProyectos();
            BLProyectos objlg_Proyectos = new BLProyectos();
            List<BEProyectos> Col_Proyectos;

            Col_Proyectos = objlg_Proyectos.fnSelProyectosDin("Estado=0", "NombreProyecto");

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

            for (Int32  i = 0; i < Col_Proyectos.Count; i++)
            {
                this.cbxProyectoID.Items.Insert(i+1,new RadComboBoxItem(Col_Proyectos[i].NombreProyecto));
                this.cbxProyectoID.Items[i+1].Value = Col_Proyectos[i].ProyectoID.ToString().Trim();
            }

            objet_Proyectos = null;
            objlg_Proyectos = null;
        }
        private void Combo_flujoCaja()
        {
            BEFlujoCaja objet_FlujoCaja = new BEFlujoCaja();
            BLFlujoCaja objlg_FlujoCaja = new BLFlujoCaja();
            List<BEFlujoCaja> Col_FlujoCaja;

            Col_FlujoCaja = objlg_FlujoCaja.fnSelFlujoCajaDin("Estado=0", "NombreFlujoCaja");

            this.cbxFlujoCaja.Items.Insert(0, new RadComboBoxItem(""));
            this.cbxFlujoCaja.Items[0].Value = "";
            for (Int32  i = 0; i < Col_FlujoCaja.Count; i++)
            {
                this.cbxFlujoCaja.Items.Insert(i+1, new RadComboBoxItem(Col_FlujoCaja[i].NombreFlujoCaja));
                this.cbxFlujoCaja.Items[i+1].Value = Col_FlujoCaja[i].FlujoCajaID.ToString().Trim();
            }


            objet_FlujoCaja = null;
            objlg_FlujoCaja = null;
        }
        private void Combo_PlanDeCuentas()
        {
            BEPlanDeCuentas objet_PlanDeCuentas = new BEPlanDeCuentas();
            BLPlanDeCuentas objlg_PlanDeCuentas = new BLPlanDeCuentas();
            List<BEPlanDeCuentas> Col_PlanDeCuentas;

            //Col_PlanDeCuentas = objlg_PlanDeCuentas.fnSelPlanDeCuentasDin("Estado=0" + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim(), "CodigoPlanCuenta",0);
            Col_PlanDeCuentas = objlg_PlanDeCuentas.fnSelPlanDeCuentasPopUp("Estado=0" + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim(), "CodigoPlanCuenta");
            for (Int32  i = 0; i < Col_PlanDeCuentas.Count; i++)
            {
                RadComboBoxItem item = new RadComboBoxItem();

                item.Text = (string)Col_PlanDeCuentas[i].CodigoPlanCuenta;
                item.Value = Col_PlanDeCuentas[i].PlanCuentaID.ToString().Trim();

                String NombrePlanCuenta = (String)Col_PlanDeCuentas[i].NombrePlanCuenta;
                item.Attributes.Add("NombrePlanCuenta", NombrePlanCuenta.ToString());
                item.DataBind();
            }
            objet_PlanDeCuentas = null;
            objlg_PlanDeCuentas = null;



        }
        private void Combo_Empresa(String strCategoriaId)
        {

                BEEmpresas objet_Empresas = new BEEmpresas();
                BLEmpresas objlg_Empresas = new BLEmpresas();
                List<BEEmpresas> Col_Empresas;
                // 
               // Col_Empresas = objlg_Empresas.fnSelEmpresasDin("", strCategoriaId, "razonsocial");
                Col_Empresas = objlg_Empresas.fnSelEmpresasDin("", null, "razonsocial");

                for (Int32  i = 0; i < Col_Empresas.Count; i++)
                {
                    RadComboBoxItem item = new RadComboBoxItem();

                    item.Text = (string)Col_Empresas[i].Ruc;
                    item.Value = Col_Empresas[i].EmpresaID.ToString().Trim();

                    String Razonsocial = (String)Col_Empresas[i].Razonsocial;
                    item.Attributes.Add("Razonsocial", Razonsocial.ToString());
                    item.DataBind();
                }
                objet_Empresas = null;
                objlg_Empresas = null;
                Col_Empresas = null;
            
        }
        protected void cbxTipoDocumento_ItemsRequested(object o, RadComboBoxItemsRequestedEventArgs e)
        {
            Combo_TipoDocumentos();
        }
        private void Limpia_CajaDetalle(int tipolimpia)
        {
            cbxFlujoCaja.Enabled = false;

            if (tipolimpia == 1)
            {
                //txtDebe.Text = "";
                //txtHaber.Text = "";
                cbxCanalId.SelectedValue = "";
                Session["EMPID"] = "";    //cbxEmpresa.SelectedValue = "";
                cbxTipoDocumento.SelectedValue = "";
                cbxProyectoID.SelectedValue = "";
                //txtReferencia.Text = "";
                txtFechaVencimiento.SelectedDate = DateTime.Now;
                cbxAreaID.SelectedValue = "";
                txtDocumento.Text = "";
                
                
                cbxFlujoCaja.SelectedValue = "";
                //cbxPlanCuentaID.SelectedValue = "";
                cbxCanalId.Text = "";
                txtEmpresa.Text = "";//cbxEmpresa.Text = "";
                cbxTipoDocumento.Text = "";
                cbxProyectoID.Text = "";
                cbxAreaID.Text = "";
                this.GridDistribucionAreas.DataSource = null;
                this.GridDistribucionAreas.DataBind();
                cbxFlujoCaja.Text = "";
                //cbxPlanCuentaID.Text = "";
            }
            else
            {

                this.tdCanalContable.BgColor = Cls_Enums.ColorValidacion.Novalido;
                this.tdFechaEmision.BgColor = Cls_Enums.ColorValidacion.Novalido;
                this.tdDocumento.BgColor = Cls_Enums.ColorValidacion.Novalido;
                this.tdTipoDocumento.BgColor = Cls_Enums.ColorValidacion.Novalido;
                this.tdEmpresa.BgColor = Cls_Enums.ColorValidacion.Novalido;
                this.tdFechaEmision.BgColor = Cls_Enums.ColorValidacion.Novalido;
                this.tdArea.BgColor = Cls_Enums.ColorValidacion.Novalido;
                this.tdAreaUDN.BgColor = Cls_Enums.ColorValidacion.Novalido;
                this.tdProyecto.BgColor = Cls_Enums.ColorValidacion.Novalido;
                this.tdCanalContable.BgColor = Cls_Enums.ColorValidacion.Novalido;
                this.tdFlujoCaja.BgColor = Cls_Enums.ColorValidacion.Novalido;

                this.tdFechaVencimiento.BgColor = Cls_Enums.ColorValidacion.Novalido;

                this.td2.BgColor = Cls_Enums.ColorValidacion.Novalido;
                this.td3.BgColor = Cls_Enums.ColorValidacion.Novalido;
                 
                txtDebe.Text = "";
                txtHaber.Text = "";
                cbxCanalId.SelectedValue = "";
                Session["EMPID"] = ""; //cbxEmpresa.SelectedValue = "";
                cbxTipoDocumento.SelectedValue = "";
                cbxProyectoID.SelectedValue = "";
                //txtReferencia.Text = "";
                //txtFechaEmision.SelectedDate = null;
                txtFechaVencimiento.SelectedDate = DateTime.Now;
                cbxAreaID.SelectedValue = "";
                txtDocumento.Text = "";
                cbxFlujoCaja.SelectedValue = "";
                //cbxPlanCuentaID.SelectedValue = "";
                cbxCanalId.Text = "";
                txtEmpresa.Text = "";// cbxEmpresa.Text = "";
                cbxTipoDocumento.Text = "";
                cbxProyectoID.Text = "";
                cbxAreaID.Text = "";
                this.GridDistribucionAreas.DataSource = null;
                this.GridDistribucionAreas.DataBind();
                cbxFlujoCaja.Text = "";
                Session["PCID"] = "";//cbxPlanCuentaID.Text = "";
                if(!cbxPlanes.Checked)
                    txtPlanCuenta.Text = "";

                btnAgregar.Text = "Agregar";
                btnAgregar.ToolTip = "Agregar";

                btnGuardar.Visible = true;
                btnGuardarRegresar.Visible = true;

                //DIEGO 27/08/2013
                cbxSegmento.Text = "Seleccione";
                //cbxSegmento.Items.Clear();
                cbxSegmento.SelectedValue = "0";
                cbxPais.Text = "Seleccione";
                //cbxPais.Items.Clear();
                cbxPais.SelectedValue = "0";
                txtPeriodo.Text = "";
                txtPaquete.Text = "";
                //FIN DIEGO 27/08/2013
                //DIEGO 31/10/2014
                this.cbxMedioPago.SelectedValue = "";
                this.cbxMedioPago.ClearSelection();
                this.cbxMedioPago.Text = "Seleccione";
                this.txtoperacion.Text = "";
                //FIN DIEGO 31/10/2014

            }

        }
        protected void RadGrid1_DeleteCommand(object source, GridCommandEventArgs e)
        {
            //GridDataItem gridDataItem = (GridDataItem)e.Item;
            //Hashtable ht = new Hashtable();
            //gridDataItem.ExtractValues(ht);

            String DetalleID = e.Item.ItemIndex.ToString();
            //String DetalleID = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["AsientoContableDetalleID"].ToString(); //Diego 01/07/2014
            String AsientoDetalleID = "";
            String IDTemp = ((DataTable)Session["DtDetalleAsiento"]).Rows[Convert.ToInt32(DetalleID)]["ID"].ToString().Trim();

            DataRow[] row = ((DataTable)Session["DtDetalleAsiento"]).Select("ID=" + IDTemp);
            DataRow changedrow = row[0];
            AsientoDetalleID = changedrow["AsientoContableDetalleID"].ToString().Trim();
            changedrow.BeginEdit();
            changedrow["Estado"] = "E";
            changedrow["MontoDebe"] = "0";
            changedrow["MontoHaber"] = "0";
            changedrow["MontoDebe2"] = "0";
            changedrow["MontoHaber2"] = "0";
            //DIEGO 27/09/2013
            changedrow["MonedaNombre"] = "";
            changedrow["AreaIDNombre"] = "";
            changedrow["NombreUnidadNegocio_1"] = "";
            changedrow["ProyectoIDNombre"] = "";
            changedrow["FlujoCajaIDNombre"] = "";
            changedrow["TipoDocumentoIDNombre"] = "";
            changedrow["PlanCuentaIDNombre"] = "";
            //changedrow["FechaEmision"] = "";
            changedrow["NumeroDocumento"] = "";
            changedrow["Referencia"] = "";
            changedrow["EmpresaIDNombre"] = "";
            changedrow["SegmentoID"] = "0";
            changedrow["PaisID"] = "0";
            changedrow["PaqueteTOID"] = "0";
            changedrow["PeriodoGPA"] = "0";
            changedrow.Delete();     
            //FIN DIEGO 27/09/2013 
            
            changedrow.EndEdit();
            
            row = ((DataTable)Session["DtDetalleAsiento"]).Select("AsientoContableDetalleIDTransferencia=" + AsientoDetalleID);
            if (row.Count() != 0)
            {
                for (Int32  i = 0; i < row.Count(); i++)
                {
                    changedrow.BeginEdit();
                    changedrow = row[i];
                    changedrow["Estado"] = "E";
                    changedrow["MontoDebe"] = "0";
                    changedrow["MontoHaber"] = "0";
                    changedrow["MontoDebe2"] = "0";
                    changedrow["MontoHaber2"] = "0";
                    changedrow.EndEdit();

                }
            }
            LimpiarAsientosDetalle();
            this.lblDiferenciaSoles.Text = String.Format("{0:N2}", Math.Round(Diferencia((DataTable)Session["DtDetalleAsiento"], "Soles"), 2, MidpointRounding.AwayFromZero).ToString());
            this.lblDiferenciaDolares.Text = String.Format("{0:N2}", Math.Round(Diferencia((DataTable)Session["DtDetalleAsiento"], "Dolares"), 2, MidpointRounding.AwayFromZero).ToString());

            this.RadGrid1.DataSource = ((DataTable)Session["DtDetalleAsiento"]).DefaultView;
            this.RadGrid1.DataBind();

        }


        
        private String Validaciones()
        {
            String msj = "";

            DateTime anioTxtDia = txtDia.SelectedDate.Value;
            if (anioTxtDia.Year.ToString() != Session["txtPeriodo"].ToString()) // DIEGO año segun Session["txtPeriodo"].ToString()
            {
                //INGRESADO EL 29/05/2013
                msj += "- Corregir Fecha Ingresada!!!\\n";
                txtDia.Focus();
            }

            if (txtDebe.Text == "" || txtHaber.Text == "")
            {
                msj += "- Ingrese montos en el Debe o Haber\\n";
            }

            if (String.IsNullOrEmpty(Session["PCID"].ToString()))
            {
                msj += "- La cuenta contable no existe\\n";
                this.txtPlanCuenta.Focus();
            }
            else
            {
                BLPlanDeCuentas objBLPlanDeCuentas = new BLPlanDeCuentas();
               //FRANCO Session["PCID"] = objBLPlanDeCuentas.fnSelPlanDeCuentasDin("Estado=0" + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim() + " and CodigoPlanCuenta LIKE '" + txtPlanCuenta.Text + "%'", "CodigoPlanCuenta", 0)[0].PlanCuentaID.Trim();
                Session["PCID"] = objBLPlanDeCuentas.fnSelPlanDeCuentasPopUp("Estado=0" + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim() + " and CodigoPlanCuenta LIKE '" + txtPlanCuenta.Text + "%'", "CodigoPlanCuenta")[0].PlanCuentaID.Trim(); 
               //FRANCO ViewState["NombrePlanCuenta"] = objBLPlanDeCuentas.fnSelPlanDeCuentasDin("Estado=0" + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim() + " and CodigoPlanCuenta LIKE '" + txtPlanCuenta.Text + "%'", "CodigoPlanCuenta", 0)[0].CodigoPlanCuenta;
                ViewState["NombrePlanCuenta"] = objBLPlanDeCuentas.fnSelPlanDeCuentasPopUp("Estado=0" + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim() + " and CodigoPlanCuenta LIKE '" + txtPlanCuenta.Text + "%'", "CodigoPlanCuenta")[0].CodigoPlanCuenta;
                if (String.IsNullOrEmpty(Session["PCID"].ToString()))
                {
                    msj += "- El plan de Cuenta que ingreso no existe\\n";
                    this.txtPlanCuenta.Focus();
                }
            }

            if (Convert.ToInt32(ViewState["dosLetra"]) > 9 && Convert.ToInt32(ViewState["dosLetra"]) < 11)
            {
                if (this.cbxFlujoCaja.SelectedValue == "")
                {
                    msj += "- Seleccionee el Flujo de Caja\\n";
                    this.cbxFlujoCaja.Focus();
                }
                if(this.cbxMedioPago.SelectedValue == "")
                {
                    msj += "- Seleccionee el Medio De Pago\\n";
                    this.cbxMedioPago.Focus();
                }
                if (this.txtoperacion.Text == "")
                {
                    msj += "- Ingrese Nro Operacion\\n";
                    this.txtoperacion.Focus();
                }
            }
            if (Session["rqArea"] == "1")
            {
                Decimal Importe = 0;
                if (String.IsNullOrEmpty(txtDebe.Text.ToString().Trim()) || txtDebe.Text.Trim() == "0")
                {
                    Importe = Convert.ToDecimal(txtHaber.Text);
                    if (this.cbxAreaID.SelectedValue == "" || this.cbxAreaID.SelectedValue == "0")
                    {
                        msj += "- Seleccione Area\\n";
                    }
                    if (ActivarUnidadNegocioValor == 1) // DIEGO Activar Unidad Negocio
                    {
                        if (Importe != Total())
                        {
                            msj += "- La Distribucion de la Unidad de Negocio debe ser igual al HABER\\n";
                        }
                    }
                }
                else
                {
                    Importe = Convert.ToDecimal(txtDebe.Text);
                    if (ActivarUnidadNegocioValor == 1) // DIEGO Activar Unidad Negocio
                    {
                        if (Importe != Total())
                        {
                            msj += "- La Distribucion de la Unidad de Negocio debe ser igual al DEBE\\n";
                        }
                    }
                    
                }
            }

            //showMessage(Session["rqTipo"].ToString());
            //saul 27082013
            //Session["rqTipo"] = "0";
            //hasta aca
            if (Session["rqTipo"].ToString() == "1")
            {
                if (this.cbxTipoDocumento.SelectedValue.ToString() == "")
                {
                    msj += "- El Tipo Documento es un campo obligatorio\\n";
                }
                if (String.IsNullOrEmpty(txtDocumento.Text))
                {
                    msj += "- El Documento es un campo obligatorio\\n";
                    txtDocumento.Focus();
                }

                if (String.IsNullOrEmpty(txtEmpresa.Text))
                {
                    msj += "- EL Ruc de la Empresa es un campo obligatorio\\n";
                }
                else if (String.IsNullOrEmpty(Session["EMPID"].ToString()))
                {
                    msj += "- EL Ruc de la Empresa que ingreso no existe\\n";
                    txtEmpresa.Focus();
                }
            }
            //saul 27082013
            //Session["rqFecha"] = "0";
            //Session["rqArea"] = "0";
            //Session["rqProyecto"] = "0";
            //Session["rqCanal"] = "0";
            //Session["rqArea"] = "0";
            //Session["rqArea"] = "0";
            //hasta aca 27082013
            if (Session["rqFecha"].ToString() == "1" && this.txtFechaVencimiento.SelectedDate.ToString() == "")
            {
                msj += "- Fecha de Vencimiento es un campo obligatorio\\n";
            }
            if (Session["rqArea"].ToString() == "1" && this.cbxAreaID.SelectedValue.ToString() == "" || this.cbxAreaID.SelectedValue.ToString() == "0")
            {
                msj += "- El area es un campo obligatorio\\n";
            }
            if (Session["rqProyecto"].ToString() == "1" && this.cbxProyectoID.SelectedValue.ToString() == "")
            {
                msj += "El Proyecto es un campo obligatorio\\n";
            }
            if (Session["rqCanal"].ToString() == "1" && this.cbxCanalId.SelectedValue.ToString() == "")
            {
                msj += "- El Canal Contable es un campo obligatorio\\n";
            }
            //DIEGO 01/10/2013
            if (Session["rqSegmento"].ToString() == "1" && this.cbxSegmento.SelectedValue.ToString() == "")
            {
                msj += "- El Segmento es un campo obligatorio\\n";
            }
            if (Session["rqPais"].ToString() == "1" && this.cbxPais.SelectedValue.ToString() == "")
            {
                msj += "- El Pais es un campo obligatorio\\n";
            }
            if (Session["rqPaquete"].ToString() == "1" && this.txtPaquete.Text.ToString() == "")
            {
                msj += "- El Paquete es un campo obligatorio\\n";
            }
            if (Session["rqGPA"].ToString() == "1" && this.txtPeriodo.Text.ToString() == "")
            {
                msj += "- El Periodo es un campo obligatorio\\n";
            }
            //FIN DIEGO 01/10/2013
            if (ViewState["AsientoDetalleID"] == null)
            {
                
                ViewState["AsientoDetalleID"] = "0";
                
            }
            else
            {
                ViewState["AsientoDetalleID"] = ViewState["AsientoDetalleID"].ToString();
            };

            return msj;
        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            String Valida = Validaciones();
            //DataRow row;
            ViewState["UpdDetalleAsiento"] = 0;
            if (Valida != "")
            {
                showMessage(Valida);
                return;
            }

            if (ViewState["CodigoTablaID"] == null)
            {
               // ACD_ID = ACD_ID++;
                AddDetalleAsiento();
            }
            else
            {
                ViewState["UpdDetalleAsiento"] = 1;
                UpdDetalleAsiento();
            }

            ////////////
            try
            {

                ViewState["CodigoTablaID"] = null;
                ViewState["AsientoDetalleID"] = null;
                ViewState["CodigoTabla"] = "0";

                this.lblDiferenciaSoles.Text = String.Format("{0:N2}", Math.Round(Diferencia((DataTable)Session["DtDetalleAsiento"], "Soles"), 2, MidpointRounding.AwayFromZero).ToString());
                this.lblDiferenciaDolares.Text = String.Format("{0:N2}", Math.Round(Diferencia((DataTable)Session["DtDetalleAsiento"], "Dolares"), 2, MidpointRounding.AwayFromZero).ToString());
                this.Limpia_CajaDetalle(0);
                //this.RadGrid1.DataBind();
            }
            catch (Exception ex)
            {
                showMessage(ex.Message);
                //myDt..ca.CancelEdit();
                //RadGrid1.Controls.Add(new LiteralControl("Unable to update the data. Reason: " + ex.Message));
            }

            Session["rqTipo"] = null;
            Session["rqFecha"] = null;
            Session["rqArea"] = null;
            Session["rqProyecto"] = null;
            Session["rqCanal"] = null;
            ViewState["arrayid"] = null;

            this.RadGrid1.DataSource = ((DataTable)Session["DtDetalleAsiento"]).DefaultView;
            this.RadGrid1.DataBind();
          //Si esta marcado el check box de planes, comprobamos que tenga datos
            if(cbxPlanes.Checked)
                txtPLanCuentaChanged();
            //ViewState["newCodigo"] = count;
            //Label1.Text = (Convert.ToDecimal(txtDebe.Text) - Convert.ToDecimal(txtHaber.Text)).ToString();
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            //String Valida = Validaciones();
            //DataRow row;
            ViewState["UpdDetalleAsiento"] = 0;
            //if (Valida != "")
            //{
            //    showMessage(Valida);
            //    return;
            //}

            f_guardar(0);
        }

        protected void btnGuardarRegresar_Click(object sender, EventArgs e)
        {
            int intRetornar;
            intRetornar = f_guardar(1);

            if (intRetornar == 0)
            {
                this.txtGlosa.Text = "";
                this.txtDia.SelectedDate = null;
                this.cbxMonda.SelectedValue = "";
                this.cbxMonda.Text = "";
                this.cbxTipoConversionMoneda.SelectedValue = "";
                this.cbxTipoConversionMoneda.Text = "";
                this.txtTipoCambio.Text = "";
                //Limpia_CajaDetalle(0);

                Response.Redirect("frmAsientosDetalle.html?ID=&IDS=" + Session["SubDiarioID"].ToString());
            }
        }

        private Int32 f_guardar(Int32 intOpcGuardar)
        {

            //Decimal TotalDebe = 0;
            //Decimal TotalHaber = 0;
            //Decimal TotalDebe2 = 0, TotalHaber2 = 0;
            Int32 intRetornar = 0;

         //FRANCO   Int32 TipoMoneda = Convert.ToInt32(cbxMonda.SelectedValue.ToString());
           

            //if (TotalDebe.Equals(TotalHaber) && TotalDebe2.Equals(TotalHaber2))
            Decimal xSoles = Convert.ToDecimal(lblDiferenciaSoles.Text);
            Decimal xDolares = Convert.ToDecimal(lblDiferenciaDolares.Text);
            if (xSoles == 0 && xDolares == 0)
            {
                //if (TotalDebe > 0)
                //{
                    /////////INICIO GRABA CABECERA//////////
                    BEAsientosContables objet_AsientosContables = new BEAsientosContables();
                    BLAsientosContables objlg_AsientosContables = new BLAsientosContables();

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

                    objet_AsientosContables.AsientoContableID = ViewState["ID"].ToString();
                    objet_AsientosContables.SubDiarioID = Session["SubDiarioID"].ToString();
                    objet_AsientosContables.HotelID = Convert.ToInt32(Session["HotelID"].ToString());
   /*Franco*///          objet_AsientosContables.TipoConversionMonedaID = cbxTipoConversionMoneda.SelectedValue.ToString();
                    objet_AsientosContables.Glosa = txtGlosa.Text.ToString().Trim().Replace("'","´");
                    objet_AsientosContables.Comprobante = "";
                    objet_AsientosContables.Dia = Convert.ToDateTime(txtDia.SelectedDate.Value.Date.ToString());
                  
   /*Franco*///                 objet_AsientosContables.MonedaID = Convert.ToInt32(cbxMonda.SelectedValue.ToString());
   /*Franco*///                 objet_AsientosContables.TipoCambio = txtTipoCambio.Text.ToString();

                    ////////// Inicio Campos Auditores. //////////
                    objet_AsientosContables.BEAuditores.UsuarioID = Convert.ToInt32(Session["UsuarioID"]);
                    objet_AsientosContables.BEAuditores.UsuarioIdAutorizado = 0;
                    objet_AsientosContables.BEAuditores.IPEquipo = Cls_Enums.f_DatosPC.IPPC;
                    objet_AsientosContables.BEAuditores.UsuarioActualEquipo = Cls_Enums.f_DatosPC.UsuarioPC;
                    objet_AsientosContables.BEAuditores.NombreEquipo = Cls_Enums.f_DatosPC.NombrePC;
                    objet_AsientosContables.BEAuditores.TablaMovimientoID = Cls_Enums.TablaMovimientos.Asientos;
                    if (chkBloqueado.Checked == true)
                    {
                        objet_AsientosContables.Bloqueado = 1;
                    }
                    else
                    {
                        objet_AsientosContables.Bloqueado = 0;
                    }
                    //objet_AsientosContables.Bloqueado = chkBloqueado.Checked;
                    ////////// Fin Campos Auditores. //////////

                    int AsientoContableID = objlg_AsientosContables.fnInsUpdAsientosContables(objet_AsientosContables);
                    ViewState["ID"] = AsientoContableID.ToString();
                    objet_AsientosContables = null;
                    objlg_AsientosContables = null;

                    /////////FIN GRABA CABECERA//////////

                    BLAsientosContablesDetalle objlg_AsientosContablesDetalle = new BLAsientosContablesDetalle();
                    List<BEAsientosContablesDetalle> loList = new List<BEAsientosContablesDetalle>();
                    List<BEAsientosContablesDetalle> lstNM = new List<BEAsientosContablesDetalle>();
                    List<BEAsientosContablesDetalle> lstElimina = new List<BEAsientosContablesDetalle>();

                    for (Int32  i = 0; i <= ((DataTable)Session["DtDetalleAsiento"]).Rows.Count - 1; i++)
                    {
                        if (((DataTable)Session["DtDetalleAsiento"]).Rows[i]["transferencia"].ToString() == "0")
                        {
                            Int32 TipoMoneda = ConvertInt32Empty(((DataTable)Session["DtDetalleAsiento"]).Rows[i][33].ToString()); ; //19.04 estaba arriba
                            BEAsientosContablesDetalle objet_AsientosContablesDetalle = new BEAsientosContablesDetalle();
                            //if (Request.QueryString["ID"].ToString() == "") { objet_AsientosContablesDetalle.AsientoContableDetalleID = "9999999"; } else { objet_AsientosContablesDetalle.AsientoContableDetalleID = ((DataTable)Session["DtDetalleAsiento"]).Rows[i][1].ToString(); }
                            objet_AsientosContablesDetalle.AsientoContableDetalleID = ((DataTable)Session["DtDetalleAsiento"]).Rows[i][1].ToString();
                            objet_AsientosContablesDetalle.AsientoContableID = ViewState["ID"].ToString(); //MyTable.Rows[i][2].ToString();
                            //FRANCO agregado para saber si es updt o new UpdDetalleAsiento
                            objet_AsientosContablesDetalle.UpdDetalleAsiento = ConvertInt32Empty(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UpdDetalleAsiento"].ToString());
                            if (TipoMoneda == 1)//Soles
                            {
                                objet_AsientosContablesDetalle.MontoDebe = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i][3].ToString());
                                objet_AsientosContablesDetalle.MontoHaber = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i][4].ToString());
                            }
                            else//Dolares
                            {
                                objet_AsientosContablesDetalle.MontoDebe = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i][28].ToString());
                                objet_AsientosContablesDetalle.MontoHaber = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i][29].ToString());
                            }
                            if (((DataTable)Session["DtDetalleAsiento"]).Rows[i][5].ToString() == "")
                            {
                                objet_AsientosContablesDetalle.CanalContableID = "0";
                            }
                            else
                            {
                                objet_AsientosContablesDetalle.CanalContableID = ((DataTable)Session["DtDetalleAsiento"]).Rows[i][5].ToString();
                            }
                            objet_AsientosContablesDetalle.EmpresaID = ConvertInt32Empty(((DataTable)Session["DtDetalleAsiento"]).Rows[i][6].ToString());
                            objet_AsientosContablesDetalle.TipoDocumentoID = ConvertInt32Empty(((DataTable)Session["DtDetalleAsiento"]).Rows[i][7].ToString());
                            objet_AsientosContablesDetalle.ProyectoID = ConvertInt32Empty(((DataTable)Session["DtDetalleAsiento"]).Rows[i][8].ToString());
                            objet_AsientosContablesDetalle.Dia = Convert.ToDateTime(((DataTable)Session["DtDetalleAsiento"]).Rows[i][9].ToString());
                            objet_AsientosContablesDetalle.Referencia = ((DataTable)Session["DtDetalleAsiento"]).Rows[i][10].ToString();
                            objet_AsientosContablesDetalle.FechaEmision = Convert.ToDateTime(((DataTable)Session["DtDetalleAsiento"]).Rows[i][11].ToString());
                            objet_AsientosContablesDetalle.FechaVencimiento = (((DataTable)Session["DtDetalleAsiento"]).Rows[i][12].ToString() == "") ? (DateTime?)null : Convert.ToDateTime(((DataTable)Session["DtDetalleAsiento"]).Rows[i][12].ToString());

                            objet_AsientosContablesDetalle.AreaID = ConvertInt32Empty(((DataTable)Session["DtDetalleAsiento"]).Rows[i][13].ToString());
                            objet_AsientosContablesDetalle.NumeroDocumento = ((DataTable)Session["DtDetalleAsiento"]).Rows[i][14].ToString();
                            objet_AsientosContablesDetalle.TransaccionDocumentoID = ((DataTable)Session["DtDetalleAsiento"]).Rows[i][15].ToString();
                            objet_AsientosContablesDetalle.FlujoCajaID = ConvertInt32Empty(((DataTable)Session["DtDetalleAsiento"]).Rows[i][16].ToString());
                            objet_AsientosContablesDetalle.PlanCuentaID = ((DataTable)Session["DtDetalleAsiento"]).Rows[i][17].ToString();
                            objet_AsientosContablesDetalle.AsientoContableDetalleIDTransferencia = ((DataTable)Session["DtDetalleAsiento"]).Rows[i][18].ToString();
                            objet_AsientosContablesDetalle.PeriodoID = ((DataTable)Session["DtDetalleAsiento"]).Rows[i][19].ToString();

                            objet_AsientosContablesDetalle.ImporteSoles = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i][30].ToString());
                            objet_AsientosContablesDetalle.ImporteDolares = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i][31].ToString());

                            objet_AsientosContablesDetalle.BEAsientosContables.TipoCambio = ((DataTable)Session["DtDetalleAsiento"]).Rows[i][32].ToString();
                            objet_AsientosContablesDetalle.BEAsientosContables.MonedaID = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i][33].ToString());
                            objet_AsientosContablesDetalle.Estado = ((DataTable)Session["DtDetalleAsiento"]).Rows[i][34].ToString();
                            
                            //DIEGO 28/08/2013
                            objet_AsientosContablesDetalle.SegmentoID = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["SegmentoID"]);
                            objet_AsientosContablesDetalle.PaisID = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["PaisID"]);
                            objet_AsientosContablesDetalle.PaqueteTOID = Convert.ToString(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["PaqueteTOID"]);
                            objet_AsientosContablesDetalle.PeriodoGPA = Convert.ToString(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["PeriodoGPA"]);
                            //FIN DIEGO 28/08/2013
                            //DIEGO 06/10/2014
                            objet_AsientosContablesDetalle.NombreMedioPago = Convert.ToString(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["NombreMedioPago"]);
                            objet_AsientosContablesDetalle.NombrePlanCuentaCaja = Convert.ToString(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["NombrePlanCuentaCaja"]);
                            //FIN 06/10/2014
                            //Diego 29/10/2014
                            objet_AsientosContablesDetalle.MedioPagoID = ConvertInt32Empty(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["MedioPagoID"]);
                            objet_AsientosContablesDetalle.NroOperacion = Convert.ToString(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["NroOperacion"]);
                            //FIN 29/10/2014
                            /*FRANCO*/
    /*Inicio Campos agregados para PRINCE HOTEL*/

                            objet_AsientosContablesDetalle.TipoConversionMonedaID = ((DataTable)Session["DtDetalleAsiento"]).Rows[i][88].ToString();//cbxTipoConversionMoneda.SelectedValue.ToString();
                            objet_AsientosContablesDetalle.MonedaID = ConvertInt32Empty(((DataTable)Session["DtDetalleAsiento"]).Rows[i][33].ToString());//Convert.ToInt32(cbxMonda.SelectedValue.ToString());
                            objet_AsientosContablesDetalle.TipoCambio = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i][32].ToString());//Convert.ToDecimal(txtTipoCambio.Text.ToString());

    /*Fin Campos agregados para PRINCE HOTEL*/

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

                            if (objet_AsientosContablesDetalle.Estado == "N" || objet_AsientosContablesDetalle.Estado == "M")
                            {
                                objet_AsientosContablesDetalle.UnidadNegocioID_1 = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_1"].ToString());
                                objet_AsientosContablesDetalle.ImporteSoles_1 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteSoles_1"].ToString());
                                objet_AsientosContablesDetalle.ImporteDolares_1 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteDolares_1"].ToString());

                                if (((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_2"].ToString() != "")
                                {
                                    objet_AsientosContablesDetalle.UnidadNegocioID_2 = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_2"].ToString());
                                    objet_AsientosContablesDetalle.ImporteSoles_2 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteSoles_2"].ToString());
                                    objet_AsientosContablesDetalle.ImporteDolares_2 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteDolares_2"].ToString());
                                }

                                if (((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_3"].ToString() != "")
                                {
                                    objet_AsientosContablesDetalle.UnidadNegocioID_3 = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_3"].ToString());
                                    objet_AsientosContablesDetalle.ImporteSoles_3 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteSoles_3"].ToString());
                                    objet_AsientosContablesDetalle.ImporteDolares_3 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteDolares_3"].ToString());
                                }

                                if (((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_4"].ToString() != "")
                                {
                                    objet_AsientosContablesDetalle.UnidadNegocioID_4 = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_4"].ToString());
                                    objet_AsientosContablesDetalle.ImporteSoles_4 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteSoles_4"].ToString());
                                    objet_AsientosContablesDetalle.ImporteDolares_4 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteDolares_4"].ToString());
                                }

                                if (((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_5"].ToString() != "")
                                {
                                    objet_AsientosContablesDetalle.UnidadNegocioID_5 = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_5"].ToString());
                                    objet_AsientosContablesDetalle.ImporteSoles_5 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteSoles_5"].ToString());
                                    objet_AsientosContablesDetalle.ImporteDolares_5 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteDolares_5"].ToString());
                                }

                                if (((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_6"].ToString() != "")
                                {
                                    objet_AsientosContablesDetalle.UnidadNegocioID_6 = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_6"].ToString());
                                    objet_AsientosContablesDetalle.ImporteSoles_6 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteSoles_6"].ToString());
                                    objet_AsientosContablesDetalle.ImporteDolares_6 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteDolares_6"].ToString());
                                }

                                if (((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_7"].ToString() != "")
                                {
                                    objet_AsientosContablesDetalle.UnidadNegocioID_7 = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_7"].ToString());
                                    objet_AsientosContablesDetalle.ImporteSoles_7 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteSoles_7"].ToString());
                                    objet_AsientosContablesDetalle.ImporteDolares_7 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteDolares_7"].ToString());
                                }

                                if (((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_8"].ToString() != "")
                                {
                                    objet_AsientosContablesDetalle.UnidadNegocioID_8 = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_8"].ToString());
                                    objet_AsientosContablesDetalle.ImporteSoles_8 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteSoles_8"].ToString());
                                    objet_AsientosContablesDetalle.ImporteDolares_8 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteDolares_8"].ToString());
                                }

                                if (((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_9"].ToString() != "")
                                {
                                    objet_AsientosContablesDetalle.UnidadNegocioID_9 = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_9"].ToString());
                                    objet_AsientosContablesDetalle.ImporteSoles_9 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteSoles_9"].ToString());
                                    objet_AsientosContablesDetalle.ImporteDolares_9 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteDolares_9"].ToString());
                                }

                                if (((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_10"].ToString() != "")
                                {
                                    objet_AsientosContablesDetalle.UnidadNegocioID_10 = Convert.ToInt32(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["UnidadNegocioID_10"].ToString());
                                    objet_AsientosContablesDetalle.ImporteSoles_10 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteSoles_10"].ToString());
                                    objet_AsientosContablesDetalle.ImporteDolares_10 = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteDolares_10"].ToString());
                                }

                            }

                            if (objet_AsientosContablesDetalle.Estado == "M" && objet_AsientosContablesDetalle.ImporteSoles_2 == 0)
                            {
                                //Decimal DiferenciaSoles = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteAnteriorSoles"].ToString()) - objet_AsientosContablesDetalle.ImporteSoles;
                                //Decimal DiferenciaDolares = Convert.ToDecimal(((DataTable)Session["DtDetalleAsiento"]).Rows[i]["ImporteAnteriorDolares"].ToString()) - objet_AsientosContablesDetalle.ImporteDolares;
                                Decimal DiferenciaSoles = objet_AsientosContablesDetalle.ImporteSoles;
                                Decimal DiferenciaDolares = objet_AsientosContablesDetalle.ImporteDolares;
                                if (objet_AsientosContablesDetalle.MontoDebe != 0)
                                {
                                    if (TipoMoneda == 1)
                                    {
                                        objet_AsientosContablesDetalle.MontoDebe = DiferenciaSoles;
                                    }
                                    else
                                    {
                                        objet_AsientosContablesDetalle.MontoDebe = DiferenciaDolares;
                                    }
                                    objet_AsientosContablesDetalle.ImporteSoles = DiferenciaSoles;
                                    objet_AsientosContablesDetalle.ImporteDolares = DiferenciaDolares;
                                }
                                else
                                {
                                    if (TipoMoneda == 1)
                                    {
                                        objet_AsientosContablesDetalle.MontoHaber = DiferenciaSoles;
                                    }
                                    else
                                    {
                                        objet_AsientosContablesDetalle.MontoHaber = DiferenciaDolares;
                                    }
                                    objet_AsientosContablesDetalle.ImporteSoles = DiferenciaSoles;
                                    objet_AsientosContablesDetalle.ImporteDolares = DiferenciaDolares;
                                }
                            }

                            if (objet_AsientosContablesDetalle.Estado == "N" || objet_AsientosContablesDetalle.Estado == "M")
                                lstNM.Add(objet_AsientosContablesDetalle);
                            else if (objet_AsientosContablesDetalle.Estado == "E")
                            {
                                objet_AsientosContablesDetalle.BEAsientosContables.Detallecabecera = Cls_Enums.TablasAsientosDetalle.Detallecabecera;
                                objet_AsientosContablesDetalle.BEAsientosContables.Empresa = Session["EmpresaID"].ToString();
                                objet_AsientosContablesDetalle.BEAsientosContables.Anio = Session["txtPeriodo"].ToString();
                                objet_AsientosContablesDetalle.BEAsientosContables.HotelID = Convert.ToInt32(Session["HotelID"].ToString());

                                lstElimina.Add(objet_AsientosContablesDetalle);
                            }
                            else
                                loList.Add(objet_AsientosContablesDetalle);
                        }
                    }
                    for (Int32  i = 0; i < lstElimina.Count; i++)
                        objlg_AsientosContablesDetalle.fnSelAsientosContablesDetalleEliminar(lstElimina[i]);

                    int registro = -1;
                    if (lstNM.Count > 0 || ((DataTable)Session["DtDetalleAsiento"]).Rows.Count > 0)
                    {
                        if (ViewState["UpdDetalleAsiento"] != null)
                            if (Request.QueryString["ID"].ToString().Length == 0)
                            {
                                registro = objlg_AsientosContablesDetalle.fnInsUpdAsientosContablesDetalle(lstNM, Session["EmpresaID"].ToString(), Session["txtPeriodo"].ToString(), null, 0);
                            }
                            else
                            {
                                registro = objlg_AsientosContablesDetalle.fnInsUpdAsientosContablesDetalle(lstNM, Session["EmpresaID"].ToString(), Session["txtPeriodo"].ToString(), null, Convert.ToInt32(ViewState["UpdDetalleAsiento"].ToString()));
                            }
                        else
                        {
                            showMessage("No se realizaron cambios.... ");
                            registro = 0; intOpcGuardar = 0;
                        }
                    }
                    else {
                            showMessage("No se puede finalizar un asiento contable sin agregar sus detalles.  ");
                            txtPlanCuenta.Focus();
               
                        
                    }    
                    // if (registro > 0) { showMessage("Los Datos que ingreso ya estan registrados"); return; };
                    //objet_AsientosContablesDetalle = null;

                    objlg_AsientosContablesDetalle = null;

                    //listar_Detalle(ViewState["ID"].ToString(), "");
                    intRetornar = registro;
                    if (registro == 0 && intOpcGuardar == 0)
                    {
                        ScriptManager.RegisterStartupScript(this, this.GetType(), "", "cerrar()", true);
                    }
                //}
                //else
                //{
                //    showMessage("Ingrese registro para Guardar el Plan Contable.");
                //    intRetornar = -1;
                //}
            }
            else
            {
                showMessage("Para finalizar el Asiento La sumatoria de los montos, Debe y Haber deben ser iguales");
                intRetornar = -1;
            }

            return intRetornar;
        }

        protected void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
        {
            this.RadGrid1.DataSource = ((DataTable)Session["DtDetalleAsiento"]).DefaultView;
           
        }

        protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
        {
            RadGrid1.ExportSettings.ExportOnlyData = true;
            RadGrid1.ExportSettings.IgnorePaging = true;
            RadGrid1.ExportSettings.OpenInNewWindow = true;

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

            }

            if (e.CommandName.Equals("Detalle"))
            {
                DataRow[] _DataRow = ((DataTable)Session["DtDetalleAsiento"]).Select("ID=" + e.CommandArgument.ToString());
                ////showMessage(e.CommandArgument.ToString());
                //this.Limpia_CajaDetalle(0);
                camposRequere(_DataRow[0].ItemArray[17].ToString().Trim());

                ViewState["CodigoTablaID"] = _DataRow[0].ItemArray[0].ToString();
                //ViewState["CodigoTabla"] = "00";
                if (Request.QueryString["id"].ToString().Trim().Length == 0)
                {
                    ViewState["AsientoDetalleID"] = _DataRow[0].ItemArray[1];
                }
                else
                {
                    ViewState["AsientoDetalleID"] = _DataRow[0].ItemArray[1];
                }
                

                //ViewState["Unidades"] = _DataRow[0].ItemArray[34];


  /* FRANCO */  //Int32 Moneda = Convert.ToInt32(cbxMonda.SelectedValue);
                Int32 Moneda = Convert.ToInt32(_DataRow[0].ItemArray[33].ToString());
                if (Moneda == 1)
                {
                    if (_DataRow[0].ItemArray[3].ToString().Trim() == "0")
                        txtDebe.DbValue = "0";
                    else
                        txtDebe.DbValue = _DataRow[0].ItemArray[3]; this.txtHaber.Enabled = true;
                    if (_DataRow[0].ItemArray[4].ToString().Trim() == "0")
                        txtHaber.DbValue = "0";
                    else
                        txtHaber.DbValue = _DataRow[0].ItemArray[4];
                }
                else
                {
                    if (_DataRow[0].ItemArray[28].ToString().Trim() == "0")
                        txtDebe.DbValue = "0";
                    else
                        txtDebe.DbValue = _DataRow[0].ItemArray[28]; this.txtHaber.Enabled = true;
                    if (_DataRow[0].ItemArray[29].ToString().Trim() == "0")
                        txtHaber.DbValue = "0";
                    else
                        txtHaber.DbValue = _DataRow[0].ItemArray[29];
                }

  /* FRANCO */ 
                cbxMonda.SelectedValue = _DataRow[0].ItemArray[33].ToString();
                //showMessage(cbxTipoConversionMoneda.Items.Count.ToString());
                cbxTipoConversionMoneda.SelectedValue = _DataRow[0].ItemArray[88].ToString();
                //showMessage(RadComboBox1.SelectedValue.ToString());
                //showMessage(_DataRow[0].ItemArray[88].ToString());
                cbxCanalId.SelectedValue = _DataRow[0].ItemArray[5].ToString();
                Session["EMPID"] = _DataRow[0].ItemArray[6].ToString();//cbxEmpresa.SelectedValue = _DataRow[0].ItemArray[6].ToString();
                cbxTipoDocumento.SelectedValue = _DataRow[0].ItemArray[7].ToString();
                cbxProyectoID.SelectedValue = _DataRow[0].ItemArray[8].ToString();
                //txtDia.SelectedDate = Convert.ToDateTime(_DataRow[0].ItemArray[9].ToString());//Diego 13/09/2013
                txtReferencia.Text = _DataRow[0].ItemArray[10].ToString();
                txtTipoCambio.Text = _DataRow[0].ItemArray[32].ToString();
                txtFechaEmision.SelectedDate = ConvertDateTime(_DataRow[0].ItemArray[11]);
                txtFechaVencimiento.SelectedDate = ConvertDateTime(_DataRow[0].ItemArray[12]);
                //////////////////////////////////DISTRIBIUCION

                //Area para combo AUN
                if (_DataRow[0].ItemArray[13].ToString().Trim() != "0" && _DataRow[0].ItemArray[13].ToString().Trim() != "")
                {
                    cbxAreaID.SelectedValue = _DataRow[0].ItemArray[13].ToString();
                }
                
                if (_DataRow[0].ItemArray[13].ToString() != "" && _DataRow[0].ItemArray[13].ToString() != "0")
                {
                    //DataTable TempUN = new DataTable();
                    //DataRow row = TempUN.NewRow();
                    //TempUN.Columns.Add("areaId", typeof(Int32));
                    //TempUN.Columns.Add("UnidadNegocioID", typeof(Int32));
                    //TempUN.Columns.Add("BEUnidadesDeNegocio.NombreUnidadNegocio", typeof(String));
                    //TempUN.Columns.Add("BEUnidadesDeNegocio_Areas.Participacion", typeof(Decimal));
                    //TempUN.Columns.Add("Importe", typeof(Decimal));

                    //TempUN = ((DataTable)Cls_Propiedades.TempAsientoDetalleAUN);

                    Decimal Importe = 0;
                    String Unidades = "0";
                    for (int j = 37; j <= 82; j += 5)
                    {
                       string ItemData = _DataRow[0].ItemArray[j].ToString();
                        if (!Convert.IsDBNull(ItemData) && ItemData.Length > 0 )
                        {
                            Unidades += ",";
                            Unidades += ItemData;
                        }
                    }
                    BLAsientosContablesDetalle objBLAsientosContablesDetalle = new BLAsientosContablesDetalle();
                    Int32 Establecimiento = Convert.ToInt32(Session["EmpresaID"]);
                    Int32 HotelID = Convert.ToInt32(Session["HotelID"]);
                    Int32 Periodo = Convert.ToInt32(Session["txtPeriodo"]);
                    String AsientoContableDetalleID = ViewState["AsientoDetalleID"] == null ? "0" : ViewState["AsientoDetalleID"].ToString();
                    Int32 AreaID = Convert.ToInt32(_DataRow[0].ItemArray[13].ToString());

                    List<BEAsientosDetalleUnidadNegocio> lstAsientosUN = objBLAsientosContablesDetalle.fnSelAsientosDetalleUnidadNegocio(Establecimiento, HotelID, AreaID, Periodo, Unidades);
                    Int32 CountUnidades = lstAsientosUN.Count;


                    if (_DataRow[0].ItemArray[37].ToString() == "0")
                    {
                        BLAsientosContablesDetalle oBLAsientosContablesDetalle = new BLAsientosContablesDetalle();
                        List<BEAsientosDetalleUnidadNegocio> loAsientosContablesDetalle;

                        loAsientosContablesDetalle = oBLAsientosContablesDetalle.fnSelAsientosDetalleUnidadNegocioClase6(Establecimiento, HotelID, Periodo, ViewState["AsientoDetalleID"].ToString().Trim());

                        for (Int32  i = 0; i < loAsientosContablesDetalle.Count; i++)
                        {
                            //Decimal Importe = 0;
                            //row = TempUN.NewRow();
                            //row["UnidadNegocioID"] = loAsientosContablesDetalle[i].UnidadNegocioID;
                            //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = loAsientosContablesDetalle[i].BEUnidadesDeNegocio.NombreUnidadNegocio;
                            //row["BEUnidadesDeNegocio_Areas.Participacion"] = loAsientosContablesDetalle[i].BEUnidadesDeNegocio_Areas.Participacion;
                            if (Moneda == 1)
                                //row["Importe"] = loAsientosContablesDetalle[i].ImporteSoles;
                                Importe = loAsientosContablesDetalle[i].ImporteSoles;
                            else
                                //row["Importe"] = loAsientosContablesDetalle[i].ImporteDolares;
                                Importe = loAsientosContablesDetalle[i].ImporteDolares;


                            EliminaAUN(loAsientosContablesDetalle[i].UnidadNegocioID);

                            Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(loAsientosContablesDetalle[i].BEAreas.AreaId, loAsientosContablesDetalle[i].UnidadNegocioID, loAsientosContablesDetalle[i].BEUnidadesDeNegocio.NombreUnidadNegocio, 0,
                                loAsientosContablesDetalle[i].ImporteSoles, loAsientosContablesDetalle[i].ImporteDolares, Importe));

                            //TempUN.Rows.Add(row);

                        }

                        //GridDistribucionAreas.DataSource = TempUN;
                        //GridDistribucionAreas.DataBind();
                    }



                    if (_DataRow[0].ItemArray[37] != null && _DataRow[0].ItemArray[37].ToString() != "0" && 0 <= CountUnidades)
                    {
                        //Decimal Importe = 0;
                        //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                        //row["UnidadNegocioID"] = _DataRow[0].ItemArray[37].ToString();
                        //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = _DataRow[0].ItemArray[40].ToString();
                        //row["BEUnidadesDeNegocio_Areas.Participacion"] = _DataRow[0].ItemArray[41].ToString();
                        if (Moneda == 1)
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[38]);
                        else
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[39]);
                        //TempUN.Rows.Add(row);

                        EliminaAUN(Convert.ToInt32(_DataRow[0].ItemArray[37].ToString()));
                        BEAsientosDetalleUnidadNegocio beaaun = new BEAsientosDetalleUnidadNegocio(
                            Convert.ToInt32(_DataRow[0].ItemArray[13]),
                            Convert.ToInt32(_DataRow[0].ItemArray[37]),
                            _DataRow[0].ItemArray[40].ToString(),
                            Convert.ToDecimal(_DataRow[0].ItemArray[41]), 0, 0, Importe);
                        Cls_Propiedades.TempAsientoDetalleAUN.Add(beaaun);

                    }

                    //row = TempUN.NewRow();
                    if (!Convert.IsDBNull(_DataRow[0].ItemArray[42]) && _DataRow[0].ItemArray[42].ToString() != "0")
                    {
                        //Decimal Importe = 0;
                        //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                        //row["UnidadNegocioID"] = _DataRow[0].ItemArray[42].ToString();
                        //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = _DataRow[0].ItemArray[45].ToString();
                        //row["BEUnidadesDeNegocio_Areas.Participacion"] = _DataRow[0].ItemArray[46].ToString();
                        if (Moneda == 1)
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[43].ToString());
                        else
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[44].ToString());
                        //TempUN.Rows.Add(row);

                        EliminaAUN(Convert.ToInt32(_DataRow[0].ItemArray[42].ToString()));
                        
                        BEAsientosDetalleUnidadNegocio beaaun = new BEAsientosDetalleUnidadNegocio(
                                    Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                    Convert.ToInt32(_DataRow[0].ItemArray[42]),
                                    _DataRow[0].ItemArray[45].ToString(),
                                    Convert.ToDecimal(_DataRow[0].ItemArray[46]),
                                    0,
                                    0,
                                    Importe);
                        Cls_Propiedades.TempAsientoDetalleAUN.Add(beaaun);

                    }
                    else
                    {
                        if (1 <= CountUnidades)
                        {
                            ///Revisar Porq pasa esto

                            //Decimal Importe = 0;
                            //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                            //row["UnidadNegocioID"] = lstAsientosUN[0].UnidadNegocioID;
                            //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = lstAsientosUN[0].BEUnidadesDeNegocio.NombreUnidadNegocio;
                            //row["BEUnidadesDeNegocio_Areas.Participacion"] = lstAsientosUN[0].BEUnidadesDeNegocio_Areas.Participacion;
                            if (Moneda == 1)
                                Importe = lstAsientosUN[0].ImporteSoles;
                            else
                                Importe = lstAsientosUN[0].ImporteDolares;
                            //TempUN.Rows.Add(row);

                            //////EliminaAUN(Convert.ToInt32(lstAsientosUN[0].UnidadNegocioID));

                            //////Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                            //////            Convert.ToInt32(_DataRow[0].ItemArray[13]),
                            //////            Convert.ToInt32(lstAsientosUN[0].UnidadNegocioID),
                            //////            lstAsientosUN[0].BEUnidadesDeNegocio.NombreUnidadNegocio,
                            //////            Convert.ToDecimal(lstAsientosUN[0].BEUnidadesDeNegocio_Areas.Participacion),
                            //////            0,
                            //////            0,
                            //////            Importe));

                        }
                    }

                    //row = TempUN.NewRow();
                    if (!Convert.IsDBNull(_DataRow[0].ItemArray[47]) && _DataRow[0].ItemArray[47].ToString() != "0")
                    {
                        //Decimal Importe = 0;
                        //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                        //row["UnidadNegocioID"] = _DataRow[0].ItemArray[47].ToString();
                        //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = _DataRow[0].ItemArray[50].ToString();
                        //row["BEUnidadesDeNegocio_Areas.Participacion"] = _DataRow[0].ItemArray[51].ToString();
                        if (Moneda == 1)
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[48].ToString());
                        else
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[49].ToString());
                        //TempUN.Rows.Add(row);

                        EliminaAUN(Convert.ToInt32(_DataRow[0].ItemArray[47].ToString()));

                        Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                    Convert.ToInt32(_DataRow[0].ItemArray[13].ToString()),
                                    Convert.ToInt32(_DataRow[0].ItemArray[47].ToString()),
                                    _DataRow[0].ItemArray[50].ToString(),
                                    Convert.ToDecimal(_DataRow[0].ItemArray[51].ToString()),
                                    0,
                                    0,
                                    Importe));

                    }
                    else
                    {
                        if (2 <= CountUnidades)
                        {
                            //Decimal Importe = 0;
                            //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                            //row["UnidadNegocioID"] = lstAsientosUN[1].UnidadNegocioID;
                            //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = lstAsientosUN[1].BEUnidadesDeNegocio.NombreUnidadNegocio;
                            //row["BEUnidadesDeNegocio_Areas.Participacion"] = lstAsientosUN[1].BEUnidadesDeNegocio_Areas.Participacion;
                            if (Moneda == 1)
                                Importe = lstAsientosUN[1].ImporteSoles;
                            else
                                Importe = lstAsientosUN[1].ImporteDolares;
                            //TempUN.Rows.Add(row);

                            EliminaAUN(Convert.ToInt32(lstAsientosUN[1].UnidadNegocioID));

                            Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                        Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                        Convert.ToInt32(lstAsientosUN[1].UnidadNegocioID),
                                        lstAsientosUN[1].BEUnidadesDeNegocio.NombreUnidadNegocio,
                                        Convert.ToDecimal(lstAsientosUN[1].BEUnidadesDeNegocio_Areas.Participacion),
                                        0,
                                        0,
                                        Importe));


                        }
                    }

                    //row = TempUN.NewRow();
                    if (!Convert.IsDBNull(_DataRow[0].ItemArray[52]) && _DataRow[0].ItemArray[52].ToString() != "0")
                    {
                        //Decimal Importe = 0;
                        //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                        //row["UnidadNegocioID"] = _DataRow[0].ItemArray[52].ToString();
                        //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = _DataRow[0].ItemArray[55].ToString();
                        //row["BEUnidadesDeNegocio_Areas.Participacion"] = _DataRow[0].ItemArray[56].ToString();
                        if (Moneda == 1)
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[53].ToString());
                        else
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[54].ToString());

                        //TempUN.Rows.Add(row);

                        EliminaAUN(Convert.ToInt32(_DataRow[0].ItemArray[52].ToString()));

                        Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                    Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                    Convert.ToInt32(_DataRow[0].ItemArray[52].ToString()),
                                    _DataRow[0].ItemArray[55].ToString(),
                                    Convert.ToDecimal(_DataRow[0].ItemArray[56].ToString()),
                                    0,
                                    0,
                                    Importe));

                    }
                    else
                    {
                        if (3 <= CountUnidades)
                        {
                            //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                            //row["UnidadNegocioID"] = lstAsientosUN[2].UnidadNegocioID;
                            //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = lstAsientosUN[2].BEUnidadesDeNegocio.NombreUnidadNegocio;
                            //row["BEUnidadesDeNegocio_Areas.Participacion"] = lstAsientosUN[2].BEUnidadesDeNegocio_Areas.Participacion;
                            if (Moneda == 1)
                                Importe = lstAsientosUN[2].ImporteSoles;
                            else
                                Importe = lstAsientosUN[2].ImporteDolares;
                            //TempUN.Rows.Add(row);

                            EliminaAUN(Convert.ToInt32(lstAsientosUN[2].UnidadNegocioID));

                            Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                        Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                        Convert.ToInt32(lstAsientosUN[2].UnidadNegocioID),
                                        lstAsientosUN[2].BEUnidadesDeNegocio.NombreUnidadNegocio,
                                        Convert.ToDecimal(lstAsientosUN[2].BEUnidadesDeNegocio_Areas.Participacion),
                                        0,
                                        0,
                                        Importe));

                        }
                    }

                    //row = TempUN.NewRow();

                    if (!Convert.IsDBNull(_DataRow[0].ItemArray[57]) && _DataRow[0].ItemArray[57].ToString() != "0")
                    {
                        //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                        //row["UnidadNegocioID"] = _DataRow[0].ItemArray[57].ToString();
                        //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = _DataRow[0].ItemArray[60].ToString();
                        //row["BEUnidadesDeNegocio_Areas.Participacion"] = _DataRow[0].ItemArray[61].ToString();
                        if (Moneda == 1)
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[58].ToString());
                        else
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[59].ToString());
                        //TempUN.Rows.Add(row);

                        EliminaAUN(Convert.ToInt32(_DataRow[0].ItemArray[57].ToString()));

                        Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                    Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                    Convert.ToInt32(_DataRow[0].ItemArray[57].ToString()),
                                    _DataRow[0].ItemArray[60].ToString(),
                                    Convert.ToDecimal(_DataRow[0].ItemArray[61].ToString()),
                                    0,
                                    0,
                                    Importe));

                    }
                    else
                    {
                        if (4 <= CountUnidades)
                        {
                            //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                            //row["UnidadNegocioID"] = lstAsientosUN[3].UnidadNegocioID;
                            //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = lstAsientosUN[3].BEUnidadesDeNegocio.NombreUnidadNegocio;
                            //row["BEUnidadesDeNegocio_Areas.Participacion"] = lstAsientosUN[3].BEUnidadesDeNegocio_Areas.Participacion;
                            if (Moneda == 1)
                                Importe = lstAsientosUN[3].ImporteSoles;
                            else
                                Importe = lstAsientosUN[3].ImporteDolares;
                            //TempUN.Rows.Add(row);

                            EliminaAUN(Convert.ToInt32(lstAsientosUN[3].UnidadNegocioID));

                            Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                        Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                        Convert.ToInt32(lstAsientosUN[3].UnidadNegocioID),
                                        lstAsientosUN[3].BEUnidadesDeNegocio.NombreUnidadNegocio,
                                        Convert.ToDecimal(lstAsientosUN[3].BEUnidadesDeNegocio_Areas.Participacion),
                                        0,
                                        0,
                                        Importe));

                        }
                    }

                    //row = TempUN.NewRow();

                    if (!Convert.IsDBNull(_DataRow[0].ItemArray[62]) && _DataRow[0].ItemArray[62].ToString() != "0")
                    {
                        //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                        //row["UnidadNegocioID"] = _DataRow[0].ItemArray[62].ToString();
                        //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = _DataRow[0].ItemArray[65].ToString();
                        //row["BEUnidadesDeNegocio_Areas.Participacion"] = _DataRow[0].ItemArray[66].ToString();
                        if (Moneda == 1)
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[63].ToString());
                        else
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[64].ToString());
                        //TempUN.Rows.Add(row);

                        EliminaAUN(Convert.ToInt32(_DataRow[0].ItemArray[62].ToString()));

                        Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                    Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                    Convert.ToInt32(_DataRow[0].ItemArray[62].ToString()),
                                    _DataRow[0].ItemArray[65].ToString(),
                                    Convert.ToDecimal(_DataRow[0].ItemArray[66].ToString()),
                                    0,
                                    0,
                                    Importe));

                    }
                    else
                    {
                        if (5 <= CountUnidades)
                        {
                            //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                            //row["UnidadNegocioID"] = lstAsientosUN[4].UnidadNegocioID;
                            //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = lstAsientosUN[4].BEUnidadesDeNegocio.NombreUnidadNegocio;
                            //row["BEUnidadesDeNegocio_Areas.Participacion"] = lstAsientosUN[4].BEUnidadesDeNegocio_Areas.Participacion;
                            if (Moneda == 1)
                                Importe = lstAsientosUN[4].ImporteSoles;
                            else
                                Importe = lstAsientosUN[4].ImporteDolares;
                            //TempUN.Rows.Add(row);

                            EliminaAUN(Convert.ToInt32(lstAsientosUN[4].UnidadNegocioID));

                            Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                        Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                        Convert.ToInt32(lstAsientosUN[4].UnidadNegocioID),
                                        lstAsientosUN[4].BEUnidadesDeNegocio.NombreUnidadNegocio,
                                        Convert.ToDecimal(lstAsientosUN[4].BEUnidadesDeNegocio_Areas.Participacion),
                                        0,
                                        0,
                                        Importe));

                        }
                    }

                    //row = TempUN.NewRow();
                    if (!Convert.IsDBNull(_DataRow[0].ItemArray[67]) && _DataRow[0].ItemArray[67].ToString() != "0")
                    {
                        //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                        //row["UnidadNegocioID"] = _DataRow[0].ItemArray[67].ToString();
                        //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = _DataRow[0].ItemArray[70].ToString();
                        //row["BEUnidadesDeNegocio_Areas.Participacion"] = _DataRow[0].ItemArray[71].ToString();
                        if (Moneda == 1)
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[68].ToString());
                        else
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[69].ToString());
                        //TempUN.Rows.Add(row);

                        EliminaAUN(Convert.ToInt32(_DataRow[0].ItemArray[67].ToString()));

                        Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                    Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                    Convert.ToInt32(_DataRow[0].ItemArray[67].ToString()),
                                    _DataRow[0].ItemArray[70].ToString(),
                                    Convert.ToDecimal(_DataRow[0].ItemArray[71].ToString()),
                                    0,
                                    0,
                                    Importe));

                    }
                    else
                    {
                        if (6 <= CountUnidades)
                        {
                            //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                            //row["UnidadNegocioID"] = lstAsientosUN[5].UnidadNegocioID;
                            //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = lstAsientosUN[5].BEUnidadesDeNegocio.NombreUnidadNegocio;
                            //row["BEUnidadesDeNegocio_Areas.Participacion"] = lstAsientosUN[5].BEUnidadesDeNegocio_Areas.Participacion;
                            if (Moneda == 1)
                                Importe = lstAsientosUN[5].ImporteSoles;
                            else
                                Importe = lstAsientosUN[5].ImporteDolares;
                            //TempUN.Rows.Add(row);

                            EliminaAUN(Convert.ToInt32(lstAsientosUN[5].UnidadNegocioID));

                            Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                        Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                        Convert.ToInt32(lstAsientosUN[5].UnidadNegocioID),
                                        lstAsientosUN[5].BEUnidadesDeNegocio.NombreUnidadNegocio,
                                        Convert.ToDecimal(lstAsientosUN[5].BEUnidadesDeNegocio_Areas.Participacion),
                                        0,
                                        0,
                                        Importe));

                        }
                    }

                    //row = TempUN.NewRow();
                    if (!Convert.IsDBNull(_DataRow[0].ItemArray[72]) && _DataRow[0].ItemArray[72].ToString() != "0")
                    {
                        //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                        //row["UnidadNegocioID"] = _DataRow[0].ItemArray[72].ToString();
                        //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = _DataRow[0].ItemArray[75].ToString();
                        //row["BEUnidadesDeNegocio_Areas.Participacion"] = _DataRow[0].ItemArray[76].ToString();
                        if (Moneda == 1)
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[73].ToString());
                        else
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[74].ToString());
                        //TempUN.Rows.Add(row);

                        EliminaAUN(Convert.ToInt32(_DataRow[0].ItemArray[72].ToString()));

                        Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                    Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                    Convert.ToInt32(_DataRow[0].ItemArray[72].ToString()),
                                    _DataRow[0].ItemArray[75].ToString(),
                                    Convert.ToDecimal(_DataRow[0].ItemArray[76].ToString()),
                                    0,
                                    0,
                                    Importe));

                    }
                    else
                    {
                        if (7 <= CountUnidades)
                        {
                            //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                            //row["UnidadNegocioID"] = lstAsientosUN[6].UnidadNegocioID;
                            //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = lstAsientosUN[6].BEUnidadesDeNegocio.NombreUnidadNegocio;
                            //row["BEUnidadesDeNegocio_Areas.Participacion"] = lstAsientosUN[6].BEUnidadesDeNegocio_Areas.Participacion;
                            if (Moneda == 1)
                                Importe = lstAsientosUN[6].ImporteSoles;
                            else
                                Importe = lstAsientosUN[6].ImporteDolares;
                            //TempUN.Rows.Add(row);

                            EliminaAUN(Convert.ToInt32(lstAsientosUN[6].UnidadNegocioID));

                            Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                        Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                        Convert.ToInt32(lstAsientosUN[6].UnidadNegocioID),
                                        lstAsientosUN[6].BEUnidadesDeNegocio.NombreUnidadNegocio,
                                        Convert.ToDecimal(lstAsientosUN[6].BEUnidadesDeNegocio_Areas.Participacion),
                                        0,
                                        0,
                                        Importe));

                        }
                    }

                    //row = TempUN.NewRow();
                    if (!Convert.IsDBNull(_DataRow[0].ItemArray[77]) && _DataRow[0].ItemArray[77].ToString() != "0")
                    {
                        //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                        //row["UnidadNegocioID"] = _DataRow[0].ItemArray[77].ToString();
                        //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = _DataRow[0].ItemArray[80].ToString();
                        //row["BEUnidadesDeNegocio_Areas.Participacion"] = _DataRow[0].ItemArray[81].ToString();
                        if (Moneda == 1)
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[78].ToString());
                        else
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[79].ToString());
                        //TempUN.Rows.Add(row);

                        EliminaAUN(Convert.ToInt32(_DataRow[0].ItemArray[77].ToString()));

                        Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                    Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                    Convert.ToInt32(_DataRow[0].ItemArray[77].ToString()),
                                    _DataRow[0].ItemArray[80].ToString(),
                                    Convert.ToDecimal(_DataRow[0].ItemArray[81].ToString()),
                                    0,
                                    0,
                                    Importe));

                    }
                    else
                    {
                        if (8 <= CountUnidades)
                        {
                            //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                            //row["UnidadNegocioID"] = lstAsientosUN[7].UnidadNegocioID;
                            //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = lstAsientosUN[7].BEUnidadesDeNegocio.NombreUnidadNegocio;
                            //row["BEUnidadesDeNegocio_Areas.Participacion"] = lstAsientosUN[7].BEUnidadesDeNegocio_Areas.Participacion;
                            if (Moneda == 1)
                                Importe = lstAsientosUN[7].ImporteSoles;
                            else
                                Importe = lstAsientosUN[7].ImporteDolares;
                            //TempUN.Rows.Add(row);

                            EliminaAUN(Convert.ToInt32(lstAsientosUN[7].UnidadNegocioID));

                            Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                        Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                        Convert.ToInt32(lstAsientosUN[7].UnidadNegocioID),
                                        lstAsientosUN[7].BEUnidadesDeNegocio.NombreUnidadNegocio,
                                        Convert.ToDecimal(lstAsientosUN[7].BEUnidadesDeNegocio_Areas.Participacion),
                                        0,
                                        0,
                                        Importe));

                        }
                    }

                    //row = TempUN.NewRow();
                    if (!Convert.IsDBNull(_DataRow[0].ItemArray[82]) && _DataRow[0].ItemArray[82].ToString() != "0")
                    {
                        //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                        //row["UnidadNegocioID"] = _DataRow[0].ItemArray[82].ToString();
                        //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = _DataRow[0].ItemArray[85].ToString();
                        //row["BEUnidadesDeNegocio_Areas.Participacion"] = _DataRow[0].ItemArray[86].ToString();
                        if (Moneda == 1)
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[83].ToString());
                        else
                            Importe = Convert.ToDecimal(_DataRow[0].ItemArray[84].ToString());
                        //TempUN.Rows.Add(row);

                        EliminaAUN(Convert.ToInt32(_DataRow[0].ItemArray[82].ToString()));

                        Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                    Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                    Convert.ToInt32(_DataRow[0].ItemArray[82].ToString()),
                                    _DataRow[0].ItemArray[85].ToString(),
                                    Convert.ToDecimal(_DataRow[0].ItemArray[86].ToString()),
                                    0,
                                    0,
                                    Importe));

                    }
                    else
                    {
                        if (9 <= CountUnidades)
                        {
                            //row["areaId"] = _DataRow[0].ItemArray[13].ToString();
                            //row["UnidadNegocioID"] = lstAsientosUN[8].UnidadNegocioID;
                            //row["BEUnidadesDeNegocio.NombreUnidadNegocio"] = lstAsientosUN[8].BEUnidadesDeNegocio.NombreUnidadNegocio;
                            //row["BEUnidadesDeNegocio_Areas.Participacion"] = lstAsientosUN[8].BEUnidadesDeNegocio_Areas.Participacion;
                            if (Moneda == 1)
                                Importe = lstAsientosUN[8].ImporteSoles;
                            else
                                Importe = lstAsientosUN[8].ImporteDolares;
                            //TempUN.Rows.Add(row);

                            EliminaAUN(Convert.ToInt32(lstAsientosUN[8].UnidadNegocioID));

                            Cls_Propiedades.TempAsientoDetalleAUN.Add(new BEAsientosDetalleUnidadNegocio(
                                        Convert.ToInt32(_DataRow[0].ItemArray[13]),
                                        Convert.ToInt32(lstAsientosUN[8].UnidadNegocioID),
                                        lstAsientosUN[8].BEUnidadesDeNegocio.NombreUnidadNegocio,
                                        Convert.ToDecimal(lstAsientosUN[8].BEUnidadesDeNegocio_Areas.Participacion),
                                        0,
                                        0,
                                        Importe));

                        }
                    }
                   

                    GridDistribucionAreas.DataSource = Cls_Propiedades.TempAsientoDetalleAUN;
                    GridDistribucionAreas.DataBind();
                    Cls_Propiedades.TempAsientoDetalleAUN.Clear();
                }

                //cbxAreaID.SelectedValue = _DataRow[0].ItemArray[13].ToString();
                txtDocumento.Text = _DataRow[0].ItemArray[14].ToString();
                //ParametrosDetalle[15] = ""; // no se de donde llama este parametro
                cbxFlujoCaja.SelectedValue = _DataRow[0].ItemArray[16].ToString();
                Session["PCID"] = _DataRow[0].ItemArray[17].ToString();//cbxPlanCuentaID.SelectedValue = _DataRow[0].ItemArray[17].ToString();
                //ParametrosDetalle[18] = ""; // cuando aya cambios
                //ParametrosDetalle[19] = "PeriodoID";
                
                //DIEGO 17/09/2013 Campos para update
                this.cbxSegmento.SelectedValue = _DataRow[0].ItemArray[90].ToString();
                this.cbxPais.SelectedValue = _DataRow[0].ItemArray[91].ToString();
                if (_DataRow[0].ItemArray[92].ToString() != "")
                {
                    this.txtPaquete.Text = _DataRow[0].ItemArray[92].ToString();
                }
                else
                {
                    this.txtPaquete.Text = "";
                }

                if (_DataRow[0].ItemArray[93].ToString() != "")
                {
                    this.txtPeriodo.Text = _DataRow[0].ItemArray[93].ToString();
                }
                else{
                    this.txtPeriodo.Text = "";
                }
                this.txtPeriodo.Text = _DataRow[0].ItemArray[93].ToString();

                //FIN DIEGO 17/09/2013 Campos para update

                //DIEGO 31/10/2014
                this.cbxMedioPago.SelectedValue = _DataRow[0].ItemArray[96].ToString();
                this.txtoperacion.Text = _DataRow[0].ItemArray[97].ToString();
                //FIN DIEGO 31/10/2014
                cbxCanalId.Text = _DataRow[0].ItemArray[20].ToString();
                txtEmpresa.Text = _DataRow[0].ItemArray[21].ToString();//cbxEmpresa.Text = _DataRow[0].ItemArray[21].ToString();
                cbxTipoDocumento.Text = _DataRow[0].ItemArray[22].ToString();

                cbxProyectoID.Text = _DataRow[0].ItemArray[23].ToString();
                //cbxAreaID.Text = _DataRow[0].ItemArray[24].ToString();
                cbxFlujoCaja.Text = _DataRow[0].ItemArray[25].ToString();
                txtPlanCuenta.Text = _DataRow[0].ItemArray[26].ToString();//cbxPlanCuentaID.Text = _DataRow[0].ItemArray[26].ToString();

                btnAgregar.Text = "Actualizar";
                btnAgregar.ToolTip = "Actualizar";

                btnGuardar.Visible = false;
                btnGuardarRegresar.Visible = false;

                cbxTipoDocumento.SelectedValue = _DataRow[0].ItemArray[7].ToString();
                TipoCambio_ReadOnly_Enabled();
                txtPlanCuenta.Focus();
                //if (strMoneda == "V" || strMoneda == "C")
                //{
                //    // tipo de compra o venta
                //    this.txtTipoCambio.ReadOnly = true;
                //    this.txtTipoCambio.Enabled = false;
                //}
                //else
                //{
                //    this.txtTipoCambio.ReadOnly = false;
                //    this.txtTipoCambio.Enabled = true;
                //}
            }

            else if (e.CommandName == "Ajustar")
            {
                
                GridDataItem item = (GridDataItem)e.Item;
                DataRow[] _DataRow = ((DataTable)Session["DtDetalleAsiento"]).Select("ID=" + item.ItemIndex);

                //ViewState["AsientoDetalleID"] = _DataRow[0].ItemArray[1];
                //DataRow row = rows[0];
                //row.BeginEdit();
                //_DataRow["UpdDetalleAsiento"] = ViewState["AsientoDetalleID"].ToString();
                DataRow changedrow = _DataRow[0];

                Decimal DifSoles = Math.Round(Diferencia((DataTable)Session["DtDetalleAsiento"], "Soles"), 2, MidpointRounding.AwayFromZero); ;
                Decimal DifDolares = Math.Round(Diferencia((DataTable)Session["DtDetalleAsiento"], "Dolares"), 2, MidpointRounding.AwayFromZero);
                Decimal ValorMaximoAjuste = ValorMaximodeAjuste();
                Decimal MontoAjuste;
                if (DifSoles == 0 && DifDolares == 0)
                {
                    return;
                }
                else if (DifSoles != 0)
                {
                    MontoAjuste = DifSoles;
                    if (Math.Abs(MontoAjuste) > ValorMaximoAjuste)
                    {
                        showMessage("El valor de ajuste no puede ser mayor que: " + ValorMaximoAjuste.ToString());
                        return;
                    }
                    if (Convert.ToDecimal(changedrow["MontoDebe"]) != 0)//Debe
                    {
                        changedrow.BeginEdit();
                        //Franco
                        changedrow["UpdDetalleAsiento"] = _DataRow[0].ItemArray[1];
                        Decimal Debe = Convert.ToDecimal(changedrow["MontoDebe"]);
                        changedrow["MontoDebe"] = Convert.ToString(Debe - MontoAjuste);
                        changedrow["ImporteSoles"] = (Convert.ToDecimal(changedrow["ImporteSoles"]) - MontoAjuste).ToString();
                        if (changedrow["ImporteSoles_1"] != "")
                        {
                            changedrow["ImporteSoles_1"] = changedrow["ImporteSoles"];
                        }
                        changedrow["Estado"] = 'M';
                        changedrow.EndEdit();
                    }
                    else if (Convert.ToDecimal(changedrow["MontoHaber"]) != 0)//Haber
                    {
                        changedrow.BeginEdit();
                        //Franco
                        changedrow["UpdDetalleAsiento"] = _DataRow[0].ItemArray[1];
                        Decimal Haber = Convert.ToDecimal(changedrow["MontoHaber"]);
                        changedrow["MontoHaber"] = Convert.ToString(Haber + MontoAjuste);
                        changedrow["ImporteSoles"] = (Convert.ToDecimal(changedrow["ImporteSoles"]) + MontoAjuste).ToString();
                        if (changedrow["ImporteSoles_1"].ToString() != "")
                        {
                            changedrow["ImporteSoles_1"] = changedrow["ImporteSoles"];
                        }

                        changedrow["Estado"] = 'M';
                        changedrow.EndEdit();
                    }
                    // Para el Ajuste Modificacion en soles Roger

                }
                else if (DifDolares != 0)
                {
                    MontoAjuste = DifDolares;
                    if (Math.Abs(MontoAjuste) > ValorMaximoAjuste)
                    {
                        showMessage("El valor de ajuste no puede ser mayor que: " + ValorMaximoAjuste.ToString());
                        return;
                    }
                    if (Convert.ToDecimal(changedrow["MontoDebe2"]) != 0)
                    {
                        changedrow.BeginEdit();
                        //Franco
                        changedrow["UpdDetalleAsiento"] = _DataRow[0].ItemArray[1];
                        Decimal Debe = Convert.ToDecimal(changedrow["MontoDebe2"]);
                        changedrow["MontoDebe2"] = Convert.ToString(Debe - MontoAjuste);
                        changedrow["ImporteDolares"] = (Convert.ToDecimal(changedrow["ImporteDolares"]) - MontoAjuste).ToString();
                        
                        if (changedrow["ImporteDolares_1"] != "")
                        {
                            changedrow["ImporteDolares_1"] = changedrow["ImporteDolares"];
                        }
                        
                        changedrow["Estado"] = 'M';
                        changedrow.EndEdit();
                    }
                    else if (Convert.ToDecimal(changedrow["MontoHaber2"]) != 0)
                    {
                        changedrow.BeginEdit();
                        //Franco
                        changedrow["UpdDetalleAsiento"] = _DataRow[0].ItemArray[1];
                        Decimal Haber = Convert.ToDecimal(changedrow["MontoHaber2"]);
                        changedrow["MontoHaber2"] = Convert.ToString(Haber + MontoAjuste);
                        changedrow["ImporteDolares"] = (Convert.ToDecimal(changedrow["ImporteDolares"]) + MontoAjuste).ToString();

                        if (changedrow["ImporteDolares_1"] != "")
                        {
                            changedrow["ImporteDolares_1"] = changedrow["ImporteDolares"];
                        }

                        changedrow["Estado"] = 'M';

                        changedrow.EndEdit();
                    }
                    // Para el Ajuste Modificacion en soles Roger
                }

             
                this.lblDiferenciaSoles.Text = String.Format("{0:N2}", Math.Round(Diferencia((DataTable)Session["DtDetalleAsiento"], "Soles"), 2, MidpointRounding.AwayFromZero));
                this.lblDiferenciaDolares.Text = String.Format("{0:N2}", Math.Round(Diferencia((DataTable)Session["DtDetalleAsiento"], "Dolares"), 2, MidpointRounding.AwayFromZero));
                this.RadGrid1.DataSource = ((DataTable)Session["DtDetalleAsiento"]).DefaultView;
                this.RadGrid1.DataBind();
            }
        }


     // activa y desactiva casillas en la edicion 
        private void TipoCambio_ReadOnly_Enabled()
        {

          //   BETipoDeConversionesMoneda objet_TipoDeConversionesMoneda = new BETipoDeConversionesMoneda();
            BLTipoDeConversionesMoneda objlg_TipoDeConversionesMoneda = new BLTipoDeConversionesMoneda();
            List<BETipoDeConversionesMoneda> Col_TipoDeConversionesMoneda;

            Col_TipoDeConversionesMoneda = objlg_TipoDeConversionesMoneda.fnSelTipoDeConversionesMonedaDin("TipoConversionMonedaID=" + this.cbxTipoConversionMoneda.SelectedValue.Trim(), "");

            String strMoneda = null;

            if (Col_TipoDeConversionesMoneda.Count() != 0)
                            strMoneda = Col_TipoDeConversionesMoneda[0].CodigoTipoConversionMoneda;

            //BETiposDeCambio objet_TiposDeCambio = new BETiposDeCambio();
            BLTiposDeCambio objlg_TiposDeCambio = new BLTiposDeCambio();
            List<BETiposDeCambio> Col_TiposDeCambio;

            String strFecha = String.Format("{0:dd/MM/yyyy}", this.txtDia.SelectedDate).ToString();

            Col_TiposDeCambio = objlg_TiposDeCambio.fnSelTiposDeCambioDin("monedaID=" + this.cbxMonda.SelectedValue.Trim(), "", strFecha);

                 if (strMoneda == "V" || strMoneda == "C")
                {
                    // tipo de compra o venta
                    this.txtTipoCambio.ReadOnly = true;
                    this.txtTipoCambio.Enabled = false;
                }
                else
                {
                    this.txtTipoCambio.ReadOnly = false;
                    this.txtTipoCambio.Enabled = true;
                }
            }

        private void Dolares(Decimal TotalDebe, Decimal TotalHaber)
        {
            if (TotalDebe.Equals(TotalHaber))
            {
                if (TotalDebe > 0)
                {

                    /////////INICIO GRABA CABECERA//////////
                    BEAsientosContables objet_AsientosContables = new BEAsientosContables();
                    BLAsientosContables objlg_AsientosContables = new BLAsientosContables();

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

                    objet_AsientosContables.AsientoContableID = ViewState["ID"].ToString();
                    objet_AsientosContables.SubDiarioID = Session["SubDiarioID"].ToString();
                    objet_AsientosContables.HotelID = Convert.ToInt32(Session["HotelID"].ToString());
 /*FRANCO */   //   objet_AsientosContables.TipoConversionMonedaID = cbxTipoConversionMoneda.SelectedValue.ToString();
                    objet_AsientosContables.Glosa = txtGlosa.Text.ToString().Trim();
                    objet_AsientosContables.Comprobante = "";
                    objet_AsientosContables.Dia = Convert.ToDateTime(txtDia.SelectedDate.Value.Date.ToString());
  /*FRANCO */ //    objet_AsientosContables.MonedaID = Convert.ToInt32(cbxMonda.SelectedValue.ToString());
 /*FRANCO */ //     objet_AsientosContables.TipoCambio = txtTipoCambio.Text.ToString();

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

                    int AsientoContableID = objlg_AsientosContables.fnInsUpdAsientosContables(objet_AsientosContables);
                    ViewState["ID"] = AsientoContableID.ToString();
                    objet_AsientosContables = null;
                    objlg_AsientosContables = null;

                    /////////FIN GRABA CABECERA//////////



                    BLAsientosContablesDetalle objlg_AsientosContablesDetalle = new BLAsientosContablesDetalle();
                    List<BEAsientosContablesDetalle> loList = new List<BEAsientosContablesDetalle>();

                    if ((DataTable)Session["myDtElimina"] != null)
                    {
                        DataTable MyTableEliminar = (DataTable)Session["myDtElimina"];

                        for (Int32  i = 0; i <= MyTableEliminar.Rows.Count - 1; i++)
                        {
                            BEAsientosContablesDetalle objet_AsientosContablesDetalle = new BEAsientosContablesDetalle();
                            objet_AsientosContablesDetalle.BEAsientosContables.Detallecabecera = Cls_Enums.TablasAsientosDetalle.Detallecabecera;
                            objet_AsientosContablesDetalle.BEAsientosContables.Empresa = Session["EmpresaID"].ToString();
                            objet_AsientosContablesDetalle.BEAsientosContables.Anio = Session["txtPeriodo"].ToString();
                            objet_AsientosContablesDetalle.AsientoContableDetalleID = MyTableEliminar.Rows[i][1].ToString();

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

                            objlg_AsientosContablesDetalle.fnSelAsientosContablesDetalleEliminar(objet_AsientosContablesDetalle);

                            Session["myDtElimina"] = null;
                        }
                    }

                    DataTable MyTable = (DataTable)Session["DtDetalleAsiento"];
                    for (Int32  i = 0; i <= MyTable.Rows.Count - 1; i++)
                    {
                        BEAsientosContablesDetalle objet_AsientosContablesDetalle = new BEAsientosContablesDetalle();
                        objet_AsientosContablesDetalle.AsientoContableDetalleID = MyTable.Rows[i][1].ToString();
                        objet_AsientosContablesDetalle.AsientoContableID = ViewState["ID"].ToString(); //MyTable.Rows[i][2].ToString();
                        objet_AsientosContablesDetalle.MontoDebe = Convert.ToDecimal(MyTable.Rows[i][28].ToString());
                        objet_AsientosContablesDetalle.MontoHaber = Convert.ToDecimal(MyTable.Rows[i][29].ToString());
                        if (MyTable.Rows[i][5].ToString() == "")
                        {
                            objet_AsientosContablesDetalle.CanalContableID = "0";
                        }
                        else
                        {
                            objet_AsientosContablesDetalle.CanalContableID = MyTable.Rows[i][5].ToString();
                        }
                        objet_AsientosContablesDetalle.EmpresaID = ConvertInt32Empty(MyTable.Rows[i][6].ToString());
                        objet_AsientosContablesDetalle.TipoDocumentoID = ConvertInt32Empty(MyTable.Rows[i][7].ToString());
                        objet_AsientosContablesDetalle.ProyectoID = ConvertInt32Empty(MyTable.Rows[i][8].ToString());
                        objet_AsientosContablesDetalle.Dia = Convert.ToDateTime(MyTable.Rows[i][9].ToString());
                        objet_AsientosContablesDetalle.Referencia = MyTable.Rows[i][10].ToString();
                        objet_AsientosContablesDetalle.FechaEmision = Convert.ToDateTime(MyTable.Rows[i][11].ToString());
                        objet_AsientosContablesDetalle.FechaVencimiento = Convert.ToDateTime(MyTable.Rows[i][12].ToString());

                        objet_AsientosContablesDetalle.AreaID = ConvertInt32Empty(MyTable.Rows[i][13].ToString());
                        objet_AsientosContablesDetalle.NumeroDocumento = MyTable.Rows[i][14].ToString();
                        objet_AsientosContablesDetalle.TransaccionDocumentoID = MyTable.Rows[i][15].ToString();
                        objet_AsientosContablesDetalle.FlujoCajaID = ConvertInt32Empty(MyTable.Rows[i][16].ToString());
                        objet_AsientosContablesDetalle.PlanCuentaID = MyTable.Rows[i][17].ToString();
                        objet_AsientosContablesDetalle.AsientoContableDetalleIDTransferencia = MyTable.Rows[i][18].ToString();
                        objet_AsientosContablesDetalle.PeriodoID = MyTable.Rows[i][19].ToString();

                        objet_AsientosContablesDetalle.ImporteSoles = Convert.ToDecimal(MyTable.Rows[i][30].ToString());
                        objet_AsientosContablesDetalle.ImporteDolares = Convert.ToDecimal(MyTable.Rows[i][31].ToString());

                        objet_AsientosContablesDetalle.MonedaID = Convert.ToInt32(MyTable.Rows[i][33].ToString());
                        objet_AsientosContablesDetalle.TipoConversionMonedaID = MyTable.Rows[i][88].ToString();
                        objet_AsientosContablesDetalle.TipoCambio = Convert.ToDecimal(MyTable.Rows[i][32].ToString());
                        ////////// Inicio Campos Auditores. //////////
                        objet_AsientosContablesDetalle.BEAuditores.UsuarioID = Convert.ToInt32(Session["UsuarioID"]);
                        objet_AsientosContablesDetalle.BEAuditores.UsuarioIdAutorizado = 0;
                        objet_AsientosContablesDetalle.BEAuditores.IPEquipo = Cls_Enums.f_DatosPC.IPPC;
                        objet_AsientosContablesDetalle.BEAuditores.UsuarioActualEquipo = Cls_Enums.f_DatosPC.UsuarioPC;
                        objet_AsientosContablesDetalle.BEAuditores.NombreEquipo = Cls_Enums.f_DatosPC.NombrePC;
                        objet_AsientosContablesDetalle.BEAuditores.TablaMovimientoID = Cls_Enums.TablaMovimientos.Asientosdetalle;
                        ////////// Fin Campos Auditores. //////////


                        loList.Add(objet_AsientosContablesDetalle);
                    }

                    int registro = objlg_AsientosContablesDetalle.fnInsUpdAsientosContablesDetalle(loList, Session["EmpresaID"].ToString(), Session["txtPeriodo"].ToString(), null, Convert.ToInt32(ViewState["UpdDetalleAsiento"]));



                    // if (registro > 0) { showMessage("Los Datos que ingreso ya estan registrados"); return; };

                    //objet_AsientosContablesDetalle = null;
                    objlg_AsientosContablesDetalle = null;

                    listar_Detalle(ViewState["ID"].ToString(), "");

                    if (registro == 0)
                    {
                        ScriptManager.RegisterStartupScript(this, this.GetType(), "", "cerrar()", true);
                    }
                }
                else
                {
                    showMessage("Ingrese registro para Guardar el Plan Contable.");
                }
            }
            else
            {
                showMessage("Para finalizar el Asiento La sumatoria de los montos, Debe y Haber deben ser iguales");
            }
        }
      
        private Decimal Diferencia(DataTable DtDetalleAsiento, string Moneda)
        {
            String rowDebe, rowHaber;
            if (Moneda == "Soles")
            {
                rowDebe = "MontoDebe";
                rowHaber = "MontoHaber";
            }
            else
            {
                rowDebe = "MontoDebe2";
                rowHaber = "MontoHaber2";
            }
            decimal Debe = 0;
            decimal Haber = 0;

            //DataRow[] _DataRowSuma =   ((DataTable)Session["DtDetalleAsiento"]).Select("Transferencia=0");
            DataRow[] _row = ((DataTable)DtDetalleAsiento).Select("Transferencia=0");

            //foreach (DataRow row in DtDetalleAsiento.Rows)
            //{
            //    if (row["Transferencia"].ToString() != "1")
            //    {
            //        Debe = Debe + Convert.ToDecimal(row[rowDebe]);
            //        Haber = Haber + Convert.ToDecimal(row[rowHaber]);
            //    }
            //}

            for ( Int32 i= 0; i <  _row.Count(); i++)
            {
                    Debe = Debe + Convert.ToDecimal(_row[i][rowDebe]);
                    Haber = Haber + Convert.ToDecimal(_row[i][rowHaber]);
            }


            return Debe - Haber;
        }
      
        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            LimpiarAsientosDetalle();
        }

        private void LimpiarAsientosDetalle()
        {
            Limpia_CajaDetalle(0);
            ViewState["CodigoTabla"] = "0";

            btnAgregar.ToolTip = "Agregar";
            btnAgregar.ToolTip = "Agregar";
        }

    #endregion

        private void camposRequere(String PlanCuentaID)
        {//showMessage
                this.Limpia_CajaDetalle(1);
                BEPlanDeCuentas objet_PlanDeCuentas = new BEPlanDeCuentas();
                BLPlanDeCuentas objlg_PlanDeCuentas = new BLPlanDeCuentas();
                List<BEPlanDeCuentas> Col_PlanDeCuentas;

                //Col_PlanDeCuentas = objlg_PlanDeCuentas.fnSelPlanDeCuentasDin("PlanCuentaID=" + PlanCuentaID, "");
                Col_PlanDeCuentas = objlg_PlanDeCuentas.fnSelPlanDeCuentasDin("PlanCuentaID=" + PlanCuentaID + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim(), "",0);

                for (Int32  i = 0; i < Col_PlanDeCuentas.Count; i++)
                {
                    if (Col_PlanDeCuentas[i].RequiereDocumento == true) 
                    {
                        this.tdCanalContable.BgColor = Cls_Enums.ColorValidacion.Valido;
                        this.tdFechaEmision.BgColor = Cls_Enums.ColorValidacion.Valido;
                        this.tdDocumento.BgColor = Cls_Enums.ColorValidacion.Valido;
                        this.tdEmpresa.BgColor = Cls_Enums.ColorValidacion.Valido;
                        this.tdTipoDocumento.BgColor = Cls_Enums.ColorValidacion.Valido;

                        this.cbxTipoDocumento.Enabled = true; 
                        Session["rqTipo"] = "1";
                        this.txtFechaEmision.Enabled = true;
                        this.txtDocumento.Enabled = true;
                        //this.cbxEmpresa.Enabled = true;
                        this.txtEmpresa.Enabled = true;
                        this.btnEmpresa.Enabled = true;
                        //Session["rqDocument"] = "1";

                    }
                    else
                    {
                        this.tdCanalContable.BgColor = Cls_Enums.ColorValidacion.Novalido;
                        this.tdFechaEmision.BgColor = Cls_Enums.ColorValidacion.Novalido;
                        this.tdDocumento.BgColor = Cls_Enums.ColorValidacion.Novalido;
                        this.tdEmpresa.BgColor = Cls_Enums.ColorValidacion.Novalido;
                        this.tdTipoDocumento.BgColor = Cls_Enums.ColorValidacion.Novalido;
                        
                        this.cbxTipoDocumento.Enabled = false; 
                        Session["rqTipo"] = "0";
                        this.txtFechaEmision.Enabled = false;
                        this.txtDocumento.Enabled = false;
                        //this.cbxEmpresa.Enabled = false;
                        this.txtEmpresa.Enabled = false;
                        this.btnEmpresa.Enabled = false;
                        //Session["rqDocument"] = "0";
                    }
                    
                    if (Col_PlanDeCuentas[i].RequiereFechaVencimiento == true) 
                    { 
                        this.txtFechaVencimiento.Enabled = true;
                        this.tdFechaVencimiento.BgColor = Cls_Enums.ColorValidacion.Valido;
                        Session["rqFecha"] = "1"; 
                    } else 
                    { 
                        this.txtFechaVencimiento.Enabled = false;
                        this.tdFechaVencimiento.BgColor = Cls_Enums.ColorValidacion.Novalido;
                        Session["rqFecha"] = "0"; 
                    }

                    if (Col_PlanDeCuentas[i].RequiereArea == true)
                    {
                        
                        this.cbxAreaID.Enabled = true; Session["rqArea"] = "1"; 
                        this.cbxAreaID.SelectedValue = Col_PlanDeCuentas[0].BEAreas.AreaId.ToString();

                        //Diego ACTIVAR UNIDAD DE NEGOCIO CONTABILIDAD
                        if (ActivarUnidadNegocioValor == 1)
                        {
                            this.GridDistribucionAreas.Enabled = true;
                            this.GridDistribucionAreas.Visible = true;
                            Listar_Distribucion(Col_PlanDeCuentas[0].BEAreas.AreaId);
                        }
                        else
                        {
                            this.GridDistribucionAreas.Enabled = false;
                            this.GridDistribucionAreas.Visible = false;
                        }
                       
                        this.tdArea.BgColor = Cls_Enums.ColorValidacion.Valido;
                        this.tdAreaUDN.BgColor = Cls_Enums.ColorValidacion.Valido;

                    }
                    else
                    {
                        this.cbxAreaID.Enabled = false; Session["rqArea"] = "0";
                        this.GridDistribucionAreas.Enabled = false;
                        this.tdArea.BgColor = Cls_Enums.ColorValidacion.Novalido;
                        this.tdAreaUDN.BgColor = Cls_Enums.ColorValidacion.Novalido;
                    }
                    if (Col_PlanDeCuentas[i].RequiereProyecto == true) 
                    { 
                        this.cbxProyectoID.Enabled = true; 
                        Session["rqProyecto"] = "1";
                        this.tdProyecto.BgColor = Cls_Enums.ColorValidacion.Valido;

                    } 
                    else 
                    { 
                        this.cbxProyectoID.Enabled = false; 
                        Session["rqProyecto"] = "0";
                        this.tdProyecto.BgColor = Cls_Enums.ColorValidacion.Novalido;
                    }
                    
                    if (Col_PlanDeCuentas[i].RequiereCanal == true) 
                    { 
                        this.cbxCanalId.Enabled = true; 
                        Session["rqCanal"] = "1";
                        this.tdCanalContable.BgColor = Cls_Enums.ColorValidacion.Valido;
                    } 
                    else 
                    { 
                        this.cbxCanalId.Enabled = false; 
                        Session["rqCanal"] = "0";
                        this.tdCanalContable.BgColor = Cls_Enums.ColorValidacion.Novalido;
                    }
                    // DIEGO 27/08/2013
                    if(Col_PlanDeCuentas[i].RequiereSegmento == true)
                    {
                        cbxSegmento.Enabled = true;
                        Session["rqSegmento"] = "1";
                        this.tdSegmento.BgColor = Cls_Enums.ColorValidacion.Valido;
                    }
                    else
                    {
                        cbxSegmento.Enabled = false;
                        cbxSegmento.SelectedValue = "0";
                        //cbxSegmento.SelectedIndex = -1;
                        cbxSegmento.Text = "";
                        Session["rqSegmento"] = "0";
                        this.tdSegmento.BgColor = Cls_Enums.ColorValidacion.Novalido;
                    }
                    if (Col_PlanDeCuentas[i].RequierePais == true)
                    {
                        cbxPais.Enabled = true;
                        Session["rqPais"] = "1";
                        this.tdPais.BgColor = Cls_Enums.ColorValidacion.Valido;
                    }
                    else
                    {
                        cbxPais.Enabled = false;
                        cbxPais.SelectedValue = "0";
                        //cbxPais.SelectedIndex = -1;
                        cbxPais.Text = "";
                        Session["rqPais"] = "0";
                        this.tdPais.BgColor = Cls_Enums.ColorValidacion.Novalido;
                    }
                    if (Col_PlanDeCuentas[i].RequierePaquete == true)
                    {
                        txtPaquete.Enabled = true;
                        btn_buscar_paquete.Enabled = true;
                        Session["rqPaquete"] = "1";
                        this.tdPaquete.BgColor = Cls_Enums.ColorValidacion.Valido;
                    }
                    else
                    {
                        txtPaquete.Enabled = false;
                        txtPaquete.Text = "";
                        btn_buscar_paquete.Enabled = false;
                        Session["rqPaquete"] = "0";
                        this.tdPaquete.BgColor = Cls_Enums.ColorValidacion.Novalido;
                    }
                    if (Col_PlanDeCuentas[i].RequiereGPA == true)
                    {
                        txtPeriodo.Enabled = true;
                        Session["rqGPA"] = "1";
                        this.tdPeriodo.BgColor = Cls_Enums.ColorValidacion.Valido;
                    }
                    else
                    {
                        txtPeriodo.Enabled = false;
                        txtPeriodo.Text = "";
                        Session["rqGPA"] = "0";
                        this.tdPeriodo.BgColor = Cls_Enums.ColorValidacion.Novalido;
                    }
                    // FIN DIEGO 27/08/2013
                    ViewState["CategoriaId"] = Col_PlanDeCuentas[i].CategoriaID.ToString();
                    //Combo_Empresa(ViewState["CategoriaId"].ToString().Trim());
                    dosLetra = Convert.ToInt32(Col_PlanDeCuentas[i].CodigoPlanCuenta.Substring(0, 2));
                    
                    ViewState["dosLetra"] = dosLetra;
                }

               

                objet_PlanDeCuentas = null;
                objlg_PlanDeCuentas = null;

               if (dosLetra > 9 && dosLetra < 11)
                {
                    cbxFlujoCaja.Enabled = true;
                    ViewState["dosLetra"] = dosLetra;
                    this.tdFlujoCaja.BgColor = Cls_Enums.ColorValidacion.Valido;
                   //Diego 29/10/2014
                    this.cbxMedioPago.Enabled = true;
                    this.txtoperacion.Enabled = true;
                    this.td3.BgColor = Cls_Enums.ColorValidacion.Valido;
                    this.td2.BgColor = Cls_Enums.ColorValidacion.Valido;
                }
                else
                {
                    cbxFlujoCaja.Enabled = false;
                    ViewState["dosLetra"] = "0";
                    this.tdFlujoCaja.BgColor = Cls_Enums.ColorValidacion.Novalido;
                   //Diego 29/10/2014
                    this.cbxMedioPago.Enabled = false;
                    this.txtoperacion.Enabled = false;
                    this.td3.BgColor = Cls_Enums.ColorValidacion.Novalido;
                    this.td2.BgColor = Cls_Enums.ColorValidacion.Novalido;
                }

 
        }
        private DateTime? ConvertDateTime(Object obj)
        {
            if (obj.Equals("") || obj.Equals(System.DBNull.Value))
            {
                return null;
            }
            else
            {
                return Convert.ToDateTime(obj.ToString());
            }
        }
        private String ConvertNullToEmpty(Object obj)
        {
            if (obj == null)
            {
                return String.Empty;
            }
            else
            {
                return obj.ToString();
            }
        }
        private Int32 ConvertInt32Empty(Object obj)
        {
            if (obj == null || obj == "" || obj == string.Empty)
            {
                return 0;
            }
            else
            {
                return Convert.ToInt32(obj.ToString());
            }
        }
        protected void txtHaber_PreRender(object sender, EventArgs e)
        {
            ActivaDoc();
            if (String.IsNullOrEmpty(this.txtHaber.Text.ToString()) || this.txtHaber.Text.ToString() == "0" )
            {
                this.txtHaber.DbValue = "0";
                this.txtDebe.Enabled = true;
            }
            else
            {
                this.txtDebe.DbValue = "0";
                this.txtDebe.Enabled = false;
            }
        }
        protected void txtDebe_PreRender(object sender, EventArgs e)
        {
            ActivaDoc();
            if (String.IsNullOrEmpty(this.txtDebe.Text.ToString()) || this.txtDebe.Text.ToString() == "0")
            {
                this.txtDebe.DbValue = "0";
                this.txtHaber.Enabled = true;
            }
            else
            {
                this.txtHaber.DbValue = "0";
                this.txtHaber.Enabled = false;
            }

        }
        private void ActivaDoc()
        {
            if (cbxTipoDocumento.Enabled)
            {
                txtDocumento.Enabled = true;
                txtFechaEmision.Enabled = true;
            }
            else
            {
                txtDocumento.Enabled = false;
                txtFechaEmision.Enabled = false;
            }
        }
        protected void txtDia_SelectedDateChanged(object sender, Telerik.Web.UI.Calendar.SelectedDateChangedEventArgs e)
        {
            cambio_de_fecha();
            //Diego 30/09/2013
            Cambio_TipoConversionMoneda();
            //FIN DIEGO 30/09/2013
        }
    //DIEGO 29/08/213

        private void cambio_de_fecha()
        {
            if (EstaBloqueado())
            {
                showMessage("El diario auxiliar " + lblSubDiario.Text + " se encuentra bloqueado para este mes");
                btnGuardarRegresar.Visible = false;
                btnGuardar.Visible = false;
                btnAgregar.Visible = false;
                btnNuevo.Visible = false;
            }
            else
            {
                btnGuardarRegresar.Visible = true;
                btnGuardar.Visible = true;
                btnAgregar.Visible = true;
                btnNuevo.Visible = true;
                //Diego 17/09/2013 Error fechas editar
                if (txtDia.SelectedDate == null)
                {
                    txtDia.SelectedDate = DateTime.Now;
                }
                //FIN Diego 17/09/2013 Error fechas editar
                DateTime anioTxtDia = txtDia.SelectedDate.Value;
                
                if (anioTxtDia.Year.ToString() != Session["txtPeriodo"].ToString()) //DIEGO AÑO segun Session["txtPeriodo"]
                {
                    //INGRESADO EL 29/05/2013
                    showMessage("Corregir Fecha Ingresada!!!");
                    txtDia.Focus();
                    return;
                    
                }
                else
                {
                    //DIEGO 29/08/2013
                    txtPlanCuenta.Focus();
                    //FIN DIEGO 29/08/2013
                }
            }
            //DIEGO 29/08/2013
            //this.cbxMonda.SelectedValue = "";
            //this.cbxMonda.Text = "";
            //this.cbxTipoConversionMoneda.SelectedValue = "";
            //this.cbxTipoConversionMoneda.Text = "";
            //this.txtTipoCambio.Text = "0.00";
            //this.txtTipoCambio.ReadOnly = true;
            //FIN DIEGO 29/08/2013
        }
    //FIN DIEGO 29/08/2013
        protected void cbxMonda_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
        {
            //showMessage(this.cbxMonda.SelectedValue);
            Page.Validate("Grupo2");
            if (this.cbxMonda.SelectedValue == "") { this.cbxMonda.Text = ""; this.cbxMonda.Focus(); return; }
            /*Franco*/
                //this.cbxTipoConversionMoneda.SelectedValue = "";
                //this.cbxTipoConversionMoneda.Text = "";
                //this.txtTipoCambio.Text = "0.00";
                //this.txtTipoCambio.MaxValue = 5;
                this.txtTipoCambio.ReadOnly = false;
        }

        protected void txtDebe_TextChanged(object sender, EventArgs e)
        {
            if (Session["rqArea"] == "1")
            {
                Decimal Monto;
                try { Monto = Convert.ToDecimal(txtDebe.Text); }
                catch { Monto = 0; }
                foreach (GridDataItem item in GridDistribucionAreas.Items)
                {
                    Decimal Participacion;
                    try { Participacion = Convert.ToDecimal(item["BEUnidadesDeNegocio_Areas.Participacion"].Text); }
                    catch { Participacion = 0; }
                    ((RadNumericTextBox)item.FindControl("txtImporte")).Text = (Participacion * Monto / 100).ToString();
                }
            }
            //DIEGO 29/08/2013
            if (String.IsNullOrEmpty(this.txtDebe.Text.ToString()) || this.txtDebe.Text.ToString() == "0")
            {
                txtDebe.Focus();
            }
            else
            {
                if (cbxCanalId.Enabled == true)
                {
                    cbxProyectoID.Focus();
                }
                else if (cbxSegmento.Enabled == true)
                {
                    cbxSegmento.Focus();
                }
                else if (cbxProyectoID.Enabled == true)
                {
                    cbxProyectoID.Focus();
                }
                else if (cbxPais.Enabled == true)
                {
                    cbxPais.Focus();
                }
                else if (txtPaquete.Enabled == true)
                {
                    txtPaquete.Focus();
                }
                else if (txtPeriodo.Enabled == true)
                {
                    txtPeriodo.Focus();
                }
                else if (cbxFlujoCaja.Enabled == true)
                {
                    cbxFlujoCaja.Focus();
                }
                else if (txtEmpresa.Enabled == true)
                {
                    txtEmpresa.Focus();
                }
                else if (txtFechaEmision.Enabled == true)
                {
                    txtFechaEmision.Focus();
                }
                else if (cbxTipoDocumento.Enabled == true)
                {
                    cbxTipoDocumento.Focus();
                }
                else if (txtDocumento.Enabled == true)
                {
                    txtDocumento.Focus();
                }
                else if (txtFechaVencimiento.Enabled == true)
                {
                    txtFechaVencimiento.Focus();
                }
                else if (cbxMedioPago.Enabled == true)
                {
                    cbxMedioPago.Focus();
                }
                else if (txtoperacion.Enabled == true)
                {
                    txtoperacion.Focus();
                }
                else if (cbxAreaID.Enabled == true)
                {
                    cbxAreaID.Focus();
                }
                else
                {
                    btnAgregar.Focus();
                }
            }
            //FIN DIEGO 29/08/2013
        }

        protected void txtHaber_TextChanged(object sender, EventArgs e)
        {
            if (Session["rqArea"] == "1")
            {
                Decimal Monto;
                try { Monto = Convert.ToDecimal(txtHaber.Text); }
                catch { Monto = 0; }
                foreach (GridDataItem item in GridDistribucionAreas.Items)
                {
                    Decimal Participacion;
                    try { Participacion = Convert.ToDecimal(item["BEUnidadesDeNegocio_Areas.Participacion"].Text); }
                    catch { Participacion = 0; }
                    ((RadNumericTextBox)item.FindControl("txtImporte")).Text = (Participacion * Monto / 100).ToString();
                }
            }
            //DIEGO 29/08/2013
            if (String.IsNullOrEmpty(this.txtHaber.Text.ToString()) || this.txtHaber.Text.ToString() == "0")
            {
                txtHaber.Focus();
            }
            else
            {
                if (cbxCanalId.Enabled == true)
                {
                    cbxProyectoID.Focus();
                }
                else if (cbxSegmento.Enabled == true)
                {
                    cbxSegmento.Focus();
                }
                else if (cbxProyectoID.Enabled == true)
                {
                    cbxProyectoID.Focus();
                }
                else if (cbxPais.Enabled == true)
                {
                    cbxPais.Focus();
                }
                else if (txtPaquete.Enabled == true)
                {
                    txtPaquete.Focus();
                }
                else if (txtPeriodo.Enabled == true)
                {
                    txtPeriodo.Focus();
                }
                else if (cbxFlujoCaja.Enabled == true)
                {
                    cbxFlujoCaja.Focus();
                }
                else if (txtEmpresa.Enabled == true)
                {
                    txtEmpresa.Focus();
                }
                else if (txtFechaEmision.Enabled == true)
                {
                    txtFechaEmision.Focus();
                }
                else if (cbxTipoDocumento.Enabled == true)
                {
                    cbxTipoDocumento.Focus();
                }
                else if (txtDocumento.Enabled == true)
                {
                    txtDocumento.Focus();
                }
                else if (txtFechaVencimiento.Enabled == true)
                {
                    txtFechaVencimiento.Focus();
                }
                else if (cbxAreaID.Enabled == true)
                {
                    cbxAreaID.Focus();
                }
                else
                {
                    btnAgregar.Focus();
                }
            }
            //FIN DIEGO 29/08/2013
        }
        protected void cbxPlanCuentaID_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
        {

            //if (this.cbxPlanCuentaID.SelectedValue=="")
            //{
            //    this.cbxPlanCuentaID.Text = ""; this.cbxPlanCuentaID.Focus(); return;
            //}

            //camposRequeridos();
            //String CodigoPlanCuenta = this.cbxPlanCuentaID.SelectedValue;
            //if (CodigoPlanCuenta.Equals(""))
            //{
            //    camposRequeridos();
            //}
            //else
            //{
                
            //    camposRequere(CodigoPlanCuenta.ToString().Trim());
            //}

        }
        String GroupHeaderText;
        String currUrl;

        protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridGroupHeaderItem)
            {
                GridGroupHeaderItem item = (GridGroupHeaderItem)e.Item;
                Label groupCaption = new Label();
                System.Data.DataRowView groupDataRow = (System.Data.DataRowView)e.Item.DataItem;
                if (item.DataCell.Text.Substring(28, 1) == "0")
                    groupCaption.Text = item.DataCell.Text.Substring(0, 8);
                else
                    groupCaption.Text = item.DataCell.Text.Substring(0, 26);
                groupCaption.CssClass = "gridtextbold";
                item.DataCell.Controls.Clear();
                item.DataCell.Controls.Add(groupCaption);

                GroupHeaderText = item.DataCell.Text.Substring(item.DataCell.Text.IndexOf(':') + 1);
            }

            else if (e.Item is GridDataItem)
            {
                GridDataItem dataItem = (GridDataItem)e.Item;
                if (dataItem["AsientoContableDetalleIDTransferencia"].Text.Trim() != "0")
                {
                    if (dataItem["AsientoContableDetalleIDTransferencia"].Text.Trim() != "&nbsp;")
                    {
                        dataItem.Font.Bold = true;
                        dataItem.ForeColor = System.Drawing.Color.Blue;
                        dataItem["DeleteColumn"].Visible = false;
                        dataItem["EditarItem"].Visible = false;
                        dataItem["AjustarColumn"].Visible = false;
                        //FRANCO
                        //ImageButton img = (ImageButton)dataItem["EditarItem1"].FindControl("Detalle1");
                        //img.Visible = false;
                    }
                    else // Diego Bloquear Items Grilla
                    {
                        if (Convert.ToInt32(ViewState["Bloqueado"]) == 2)
                        {
                            dataItem["DeleteColumn"].Enabled = false;
                            dataItem["EditarItem"].Enabled = false;
                            dataItem["AjustarColumn"].Enabled = false;
                        }
                    }
                }
                if (Convert.ToDecimal(dataItem["MontoDebe"].Text.Trim()) == 0)
                {
                    dataItem["MontoDebe"].Text = "";
                }
                if (Convert.ToDecimal(dataItem["MontoHaber"].Text.Trim()) == 0)
                {
                    dataItem["MontoHaber"].Text = "";
                }

                if (Convert.ToDecimal(dataItem["MontoDebe2"].Text.Trim()) == 0)
                {
                    dataItem["MontoDebe2"].Text = "";
                }
                if (Convert.ToDecimal(dataItem["MontoHaber2"].Text.Trim()) == 0)
                {
                    dataItem["MontoHaber2"].Text = "";
                }
                if (dataItem["Estado"].Text.Trim() == "E")
                {
                    dataItem.Visible = false;
                    dataItem["MontoDebe"].Text = "0";
                    dataItem["MontoHaber"].Text = "0";
                    dataItem["MontoDebe2"].Text = "0";
                    dataItem["MontoHaber2"].Text = "0";
                }
            }
        }
        private Int32 ActivarUnidadNegocio()
        {
            BEParametrosGenerales objBEParametrosGenerales = new BEParametrosGenerales();
            BLParametrosGenerales objBLParametrosGenerales = new BLParametrosGenerales();
            objBEParametrosGenerales.ParametroGeneralID = 10153;
            List<BEParametrosGenerales> lstBEParametrosGenerales = objBLParametrosGenerales.fnSelParametrosGenerales(objBEParametrosGenerales);
            return Convert.ToInt32(lstBEParametrosGenerales[0].Valor);
        }
        private Decimal ValorMaximodeAjuste()
        {
            BEParametrosGenerales objBEParametrosGenerales = new BEParametrosGenerales();
            BLParametrosGenerales objBLParametrosGenerales = new BLParametrosGenerales();
            objBEParametrosGenerales.ParametroGeneralID = 2006;
            List<BEParametrosGenerales> lstBEParametrosGenerales = objBLParametrosGenerales.fnSelParametrosGenerales(objBEParametrosGenerales);
            return Convert.ToDecimal(lstBEParametrosGenerales[0].Valor);
        }
        private void CalculaDiferencia()
        {
            Int32 Moneda = Convert.ToInt32(cbxMonda.SelectedValue.ToString());
            Decimal Dif;
            if (Moneda == 1)
            {
                Dif = Math.Round(Diferencia((DataTable)Session["DtDetalleAsiento"], "Soles"), 2,MidpointRounding.AwayFromZero);
            }
            else
            {
                Dif = Math.Round(Diferencia((DataTable)Session["DtDetalleAsiento"], "Dolares"), 2,MidpointRounding.AwayFromZero);
            }
        }
        protected void RadGrid1_ItemEvent(object sender, GridItemEventArgs e)
        {

        }

        private Boolean EstaBloqueado()
        {
            BESubDiariosBloqueo objBESubDiariosBloqueo = new BESubDiariosBloqueo();
            BLSubDiariosBloqueo objBLSubDiariosBloqueo = new BLSubDiariosBloqueo();
            String Mes = "";
            try
            {
                Mes = txtDia.SelectedDate.Value.Month.ToString();
            }
            catch
            {
                return false;
            }
            String Where = "EstablecimientoID = " + Session["EmpresaID"].ToString() + " AND " +
                           "HotelID = " + Session["HotelID"].ToString() + " AND " +
                           "Ejercicio = " + Session["txtPeriodo"].ToString() + " AND " +
                           "SubDiarioID = " + Session["SubDiarioID"].ToString() + " AND " +
                           "Mes = " + Mes;
            List<BESubDiariosBloqueo> lstBESubDiariosBloqueo = objBLSubDiariosBloqueo.fnSelSubDiariosBloqueoDin(Where, "");
            if (lstBESubDiariosBloqueo.Count == 0)
                return false;
            else
            {
                for (Int32  i = 0; i < lstBESubDiariosBloqueo.Count; i++)
                {
                    if (lstBESubDiariosBloqueo[i].Bloqueado == 1)
                    {
                        return true;
                    }
                }
                return false;
            }
        }

        protected void btnBloquear_Click(object sender, EventArgs e)
        {
            if (Cls_Propiedades.PrivilegiosUsuario[0].ModificaAsiento == 1)
            {
                BLAsientosContables objBLAsientosContables = new BLAsientosContables();
                BLSubDiariosBloqueo objBLSubDiariosBloqueo = new BLSubDiariosBloqueo();
                BEAsientosContables objBEAsientosContables = objBLAsientosContables.fnSelAsientosContables(Cls_Enums.TablasAsientosDetalle.Cabecera, Session["EmpresaID"].ToString(), Session["txtPeriodo"].ToString(), ViewState["ID"].ToString())[0];

                String Where = "SubDiarioID=" + objBEAsientosContables.SubDiarioID.Trim();
                Where += " AND Mes=" + objBEAsientosContables.Dia.Value.Month;
                Where += " AND Ejercicio=" + objBEAsientosContables.Dia.Value.Year;
                Where += " AND EstablecimientoID=" + Session["EmpresaID"].ToString();
                List<BESubDiariosBloqueo> lstBESubDiariosBloqueo = objBLSubDiariosBloqueo.fnSelSubDiariosBloqueoDin(Where, "");

                if (lstBESubDiariosBloqueo.Count != 0)
                {
                    foreach (BESubDiariosBloqueo SubDiariosBloqueo in lstBESubDiariosBloqueo)
                    {
                        if (SubDiariosBloqueo.Bloqueado == 1)
                        {
                            switch (SubDiariosBloqueo.Bloqueado.ToString())
                            {
                                case "0":
                                    //btnBloquear.ImageUrl = "~/images/lock.gif";//"Desbloquear";
                                    //btnBloquear.ToolTip = "Desbloquear";
                                    break;
                                case "1":
                                    showMessage("No se puede modificar el asiento, se encuentra bloqueado");
                                    break;
                                case "2":
                                    showMessage("Imposible Modificar el Asiento");
                                    break;
                            } 
                            //showMessage("No se puede modificar el asiento, se encuentra bloqueado");
                            //return;
                        }
                    }
                }

                if (Convert.ToInt32(ViewState["Bloqueado"]) == 1)
                {
                    btnBloquear.ImageUrl = "~/images/unlock.PNG";
                    btnBloquear.ToolTip = "Bloquear";
                    //btnBloquear.Text = "Bloquear";
                    ViewState["Bloqueado"] = 0;
                    chkBloqueado.Checked = false;
                    this.btnBloquear.Attributes.Add("onclick", "javascript :if(confirm('¿Desea bloquear el asiento?')== false) return false;");
                    this.btnAgregar.Visible = true;
                    this.btnNuevo.Visible = true;
                    this.btnGuardarRegresar.Visible = true;
                    this.btnGuardar.Visible = true;
                }
                else if(Convert.ToInt32(ViewState["Bloqueado"])==0)
                {
                    btnBloquear.ImageUrl = "~/images/lock.gif";
                    btnBloquear.ToolTip = "Desbloquear";
                    //btnBloquear.Text = "Desbloquear";
                    ViewState["Bloqueado"] = 1;
                    chkBloqueado.Checked = true;
                    this.btnBloquear.Attributes.Add("onclick", "javascript :if(confirm('¿Desea desbloquear el asiento?')== false) return false;");
                    this.btnAgregar.Visible = false;
                    this.btnNuevo.Visible = false;
                    this.btnGuardarRegresar.Visible = false;
                    this.btnGuardar.Visible = false;
                }
                else if (Convert.ToInt32(ViewState["Bloqueado"]) == 2)
                {
                    this.btnBloquear.Attributes.Add("onclick", "javascript: alert('Imposible Modificar el Asiento'); return false;");
                }
                if (ViewState["ID"].ToString() != "")
                {
                    objBEAsientosContables = objBLAsientosContables.fnSelAsientosContables(Cls_Enums.TablasAsientosDetalle.Cabecera, Session["EmpresaID"].ToString(), Session["txtPeriodo"].ToString(), ViewState["ID"].ToString())[0];
                    objBEAsientosContables.Cabecera = Cls_Enums.TablasAsientosDetalle.Cabecera;
                    objBEAsientosContables.Empresa = Session["EmpresaID"].ToString();
                    objBEAsientosContables.Anio = Session["txtPeriodo"].ToString();
                    objBEAsientosContables.Bloqueado = Convert.ToInt32(ViewState["Bloqueado"]);
                    objBLAsientosContables.fnInsUpdAsientosContables(objBEAsientosContables);
                    objBEAsientosContables.BEAuditores.UsuarioID = Convert.ToInt32(Session["UsuarioID"]);
                    objBEAsientosContables.BEAuditores.UsuarioIdAutorizado = 0;
                    objBEAsientosContables.BEAuditores.IPEquipo = Cls_Enums.f_DatosPC.IPPC;
                    objBEAsientosContables.BEAuditores.UsuarioActualEquipo = Cls_Enums.f_DatosPC.UsuarioPC;
                    objBEAsientosContables.BEAuditores.NombreEquipo = Cls_Enums.f_DatosPC.NombrePC;
                    objBEAsientosContables.BEAuditores.TablaMovimientoID = Cls_Enums.TablaMovimientos.Asientos;
                    objBLAsientosContables.fnInsUpdAsientosContables(objBEAsientosContables);
                }
            }
            else
            {
                showMessage("No posee los privilegios necesario para completar la operación");
            }
        }
        protected void btnHistorial_Click(object sender, EventArgs e)
        {
            ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "", "NewWindow('List_Auditoria.aspx?ACCID=" + ViewState["ID"].ToString() + "','SGH Perú - Historico','840','500','yes','no');", true);

        }

        protected void btnPlanDeCuentas_Click(object sender, EventArgs e)
        {
            //Object CodigoPlanCuenta;
            //CodigoPlanCuenta = txtPlanCuenta.Text;
            ScriptManager.RegisterStartupScript(this, this.GetType(), "", "openWin('" + txtPlanCuenta.Text + "');", true);
        }

        protected void txtPlanCuenta_TextChanged(object sender, EventArgs e)
        {
            txtPLanCuentaChanged();
        }

        private void txtPLanCuentaChanged()
        {
            
            BLPlanDeCuentas objBLPlanDeCuentas = new BLPlanDeCuentas();
            try
            {
                /* FRANCO */
                //Session["PCID"] = objBLPlanDeCuentas.fnSelPlanDeCuentasDin("Estado=0" + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim() + " and CodigoPlanCuenta ='" + txtPlanCuenta.Text + "'", "CodigoPlanCuenta", 0)[0].PlanCuentaID.Trim();
                Session["PCID"] = objBLPlanDeCuentas.fnSelPlanDeCuentasPopUp("Estado=0" + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim() + " and CodigoPlanCuenta ='" + txtPlanCuenta.Text + "'", "CodigoPlanCuenta")[0].PlanCuentaID.Trim();
                //  fnSelPlanDeCuentasPopUp
               
                txtReferencia.Focus();
               
                //txtPlanCuenta.Focus();
                //cbxPlanes.Focus();
            }
            catch
            {
                Session["PCID"] = "";
                //showMessage("El plan de cuentas ingresado no esta registrado como detalle o no existe.");
                //txtPlanCuenta.Text = "";
                txtPlanCuenta.Focus();
                ScriptManager.RegisterStartupScript(this, this.GetType(), "", "openWin('" + txtPlanCuenta.Text + "');", true);
            }
          
            if (!String.IsNullOrEmpty(Session["PCID"].ToString()))
                camposRequere(Session["PCID"].ToString());
            
        }

        protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
        {
            if (e.Argument == "PC")
            {
                BLPlanDeCuentas objBLPlanDeCuentas = new BLPlanDeCuentas();
                String PlanCuentaID = Session["PCID"].ToString();
                try
                {
                    txtPlanCuenta.Text = objBLPlanDeCuentas.fnSelPlanDeCuentasDin("PlanCuentaID=" + PlanCuentaID, "CodigoPlanCuenta", 0)[0].CodigoPlanCuenta;
                    txtPLanCuentaChanged();
                }
                catch
                {
                    txtPlanCuenta.Text = "";
                }
                //txtPlanCuenta_TextChanged(sender, e);
                //txtPlanCuenta.Focus();
            }
            else if (e.Argument.Substring(0, 3) == "EMP")
            {
                BLEmpresas objBLEmpresas = new BLEmpresas();
                String EmpresaID;
                EmpresaID = e.Argument.Substring(3, e.Argument.Length - 3);
                if (EmpresaID == "")
                {
                    EmpresaID = Session["EMPID"].ToString(); 
                }
                try
                {
                    //txtEmpresa.Text = objBLEmpresas.fnSelEmpresasDin("EmpresaID=" + EmpresaID + " and CategoriaId=" + ViewState["CategoriaId"].ToString(), "razonsocial")[0].Ruc;
                    txtEmpresa.Text = objBLEmpresas.fnSelEmpresasDinPopUp("EmpresaID=" + EmpresaID , "razonsocial")[0].Ruc;
                }
                catch
                {
                    txtEmpresa.Text = "";
                }
                txtEmpresa_TextChanged(sender, e);
                txtPlanCuenta.Focus();

            }
            else 
                if (e.Argument.Substring(0, 8) == "hitfecha")
            {
                cambio_de_fecha();
                //showMessage("test");
            }
            else if (e.Argument.Substring(0, 12) == "cambiomoneda")
            {
                Cambio_TipoConversionMoneda();
            }
            else if (e.Argument.Substring(0, 15) == "hitplandecuenta")
            {
                txtPLanCuentaChanged();
            }
            else if(e.Argument.ToString() == "BtnGuardarMostrar"){
                btnGuardar.Visible = true;
            }
            
                //this.txtEmpresa.DataBind();
        }

        protected void chkLinked_CheckedChanged(Object sender, EventArgs args)
        {
            if (Request.QueryString["ID"].ToString() != "") {
                //String Valida = Validaciones();
                //DataRow row;
                ViewState["UpdDetalleAsiento"] = 0;
                //if (Valida != "")
                //{
                //    showMessage(Valida);
                //    return;
                //}

                f_guardar(0);
            }
            
        }
        protected void btnEmpresa_Click(object sender, EventArgs e)
        {
            String PlanCuentaID = Session["PCID"].ToString().Trim();
            BLPlanDeCuentas objBLPlanDeCuentas = new BLPlanDeCuentas();


           // String Categoria = ViewState["CategoriaId"].ToString(); //objBLPlanDeCuentas.fnSelPlanDeCuentasDin("PlanCuentaID=" + PlanCuentaID + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim(), "CodigoPlanCuenta", 0)[0].CategoriaID.ToString();
            
          //  ScriptManager.RegisterStartupScript(this, this.GetType(), "", "openWinE('" + txtEmpresa.Text + "','" + Categoria + "');", true);
            ScriptManager.RegisterStartupScript(this, this.GetType(), "", "openWinE('" + txtEmpresa.Text + "','" + null + "');", true);
        }

        protected void txtEmpresa_TextChanged(object sender, EventArgs e)
        {
            BLEmpresas objBLEmpresas = new BLEmpresas();
            try
            {
                //if (ViewState["CategoriaId"].ToString().Trim() != "0")
                //{
                // //   Session["EMPID"] = objBLEmpresas.fnSelEmpresasDin("ruc='" + txtEmpresa.Text + "' and CategoriaId=" + ViewState["CategoriaId"].ToString(), "razonsocial")[0].EmpresaID.ToString();
                //    Session["EMPID"] = objBLEmpresas.fnSelEmpresasDinPopUp("ruc='" + txtEmpresa.Text + "'", "razonsocial")[0].EmpresaID.ToString();
                //}
                //else
                //{
                    Session["EMPID"] = objBLEmpresas.fnSelEmpresasDinPopUp("ruc='" + txtEmpresa.Text + "'", "razonsocial")[0].EmpresaID.ToString();
                //}
            }
            catch
            {
                Session["EMPID"] = "";
            }
        }

        protected void cbxAreaID_TextChanged(object o, EventArgs e)
        {
            if (cbxAreaID.SelectedValue != "")
            {
                Listar_Distribucion(Convert.ToInt32(cbxAreaID.SelectedValue)); // ERROR
                if (Session["rqArea"].ToString() == "1")
                {
                    Decimal Monto;

                    if (String.IsNullOrEmpty(txtDebe.Text.ToString().Trim()) || txtDebe.Text.Trim() == "0")
                    {
                        try { Monto = Convert.ToDecimal(txtHaber.Text); }
                        catch { Monto = 0; }
                    }
                    else
                    {
                        try { Monto = Convert.ToDecimal(txtDebe.Text); }
                        catch { Monto = 0; }
                    }

                    foreach (GridDataItem item in GridDistribucionAreas.Items)
                    {
                        Decimal Participacion;
                        try { Participacion = Convert.ToDecimal(item["BEUnidadesDeNegocio_Areas.Participacion"].Text); }
                        catch { Participacion = 0; }
                        ((RadNumericTextBox)item.FindControl("txtImporte")).Text = (Participacion * Monto / 100).ToString();
                    }
                }
            }
            
        }

        private void Listar_Distribucion(Int32 AreaID)
        {
            //BEUnidadesDeNegocio_Areas objBEUnidadesDeNegocio_Areas = new BEUnidadesDeNegocio_Areas();
            //BLUnidadesDeNegocio_Areas objBLUnidadesDeNegocio_Areas = new BLUnidadesDeNegocio_Areas();
            //Int32 Establecimiento = Convert.ToInt32(Session["EmpresaID"]);
            //Int32 HotelID = Convert.ToInt32(Session["HotelID"]);
            //GridDistribucionAreas.DataSource = objBLUnidadesDeNegocio_Areas.fnSelUnidadesDeNegocio_Areas(Establecimiento, HotelID, AreaID);
            //GridDistribucionAreas.DataBind();
            //objBEUnidadesDeNegocio_Areas = null;

            Int32 Establecimiento = Convert.ToInt32(Session["EmpresaID"]);
            Int32 HotelID = Convert.ToInt32(Session["HotelID"]);
            Int32 Periodo = Convert.ToInt32(Session["txtPeriodo"]);
            String AsientoContableDetalleID = ViewState["AsientoDetalleID"] == null ? "0" : ViewState["AsientoDetalleID"].ToString();

            BLAsientosContablesDetalle objBLAsientosContablesDetalle = new BLAsientosContablesDetalle();
            Cls_Propiedades.TempAsientoDetalleAUN = objBLAsientosContablesDetalle.fnSelAsientosDetalleUnidadNegocio(Establecimiento, HotelID, AreaID, Periodo);

            //Diego ACTIVAR UNIDAD DE NEGOCIO CONTABILIDAD

            if (ActivarUnidadNegocioValor == 1)
            {
                GridDistribucionAreas.DataSource = Cls_Propiedades.TempAsientoDetalleAUN;
                GridDistribucionAreas.DataBind();
                //cbxPlanes.Focus();
            }


            
        }

        protected void btnParticipacion_Click(object sender, EventArgs e)
        {
            if (Total() <= 100)
            {
                BEUnidadesDeNegocio_Areas objBEUnidadesDeNegocio_Areas = new BEUnidadesDeNegocio_Areas();

                BLUnidadesDeNegocio_Areas objBLUnidadesDeNegocio_Areas = new BLUnidadesDeNegocio_Areas();
                foreach (GridDataItem item in GridDistribucionAreas.Items)
                {
                    Decimal Participacion = 0;
                    String ValorAct = ((RadNumericTextBox)item.FindControl("txtParticipacion")).Text;
                    Int32 AreaID = Convert.ToInt32(cbxAreaID.SelectedValue);

                    if (ValorAct != "")
                    {
                        Participacion = Convert.ToDecimal(ValorAct);
                    }
                    else
                    {
                        Participacion = 0;
                    }

                    if (item["ID"].Text.Trim() == "0")
                    {
                        if (Participacion != 0)
                        {
                            //Nuevo
                            objBEUnidadesDeNegocio_Areas.ID = Convert.ToInt32(item["ID"].Text);
                            objBEUnidadesDeNegocio_Areas.UnidadNegocioID = Convert.ToInt32(item["UnidadNegocioID"].Text);
                            objBEUnidadesDeNegocio_Areas.AreaID = AreaID;
                            objBEUnidadesDeNegocio_Areas.Participacion = Participacion;
                            objBEUnidadesDeNegocio_Areas.EstablecimientoID = Convert.ToInt32(Session["EmpresaID"]);
                            objBEUnidadesDeNegocio_Areas.Hotel = Convert.ToInt32(Session["HotelID"]);

                            objBEUnidadesDeNegocio_Areas.BEAuditores.UsuarioID = Convert.ToInt32(Session["UsuarioID"]);
                            objBEUnidadesDeNegocio_Areas.BEAuditores.UsuarioIdAutorizado = 0;
                            objBEUnidadesDeNegocio_Areas.BEAuditores.IPEquipo = Cls_Enums.f_DatosPC.IPPC;
                            objBEUnidadesDeNegocio_Areas.BEAuditores.UsuarioActualEquipo = Cls_Enums.f_DatosPC.UsuarioPC;
                            objBEUnidadesDeNegocio_Areas.BEAuditores.NombreEquipo = Cls_Enums.f_DatosPC.NombrePC;
                            objBEUnidadesDeNegocio_Areas.BEAuditores.TablaMovimientoID = Cls_Enums.TablaMovimientos.UnidadesDeNegocio_Areas;

                            objBLUnidadesDeNegocio_Areas.fnInsUpdUnidadesDeNegocio(objBEUnidadesDeNegocio_Areas);
                        }
                    }
                    else
                    {
                        //Actualiza
                        objBEUnidadesDeNegocio_Areas.ID = Convert.ToInt32(item["ID"].Text);
                        objBEUnidadesDeNegocio_Areas.UnidadNegocioID = Convert.ToInt32(item["UnidadNegocioID"].Text);
                        objBEUnidadesDeNegocio_Areas.AreaID = Convert.ToInt32(item["AreaID"].Text);
                        objBEUnidadesDeNegocio_Areas.Participacion = Participacion;
                        objBEUnidadesDeNegocio_Areas.EstablecimientoID = Convert.ToInt32(Session["EmpresaID"]);
                        objBEUnidadesDeNegocio_Areas.Hotel = Convert.ToInt32(Session["HotelID"]);

                        objBEUnidadesDeNegocio_Areas.BEAuditores.UsuarioID = Convert.ToInt32(Session["UsuarioID"]);
                        objBEUnidadesDeNegocio_Areas.BEAuditores.UsuarioIdAutorizado = 0;
                        objBEUnidadesDeNegocio_Areas.BEAuditores.IPEquipo = Cls_Enums.f_DatosPC.IPPC;
                        objBEUnidadesDeNegocio_Areas.BEAuditores.UsuarioActualEquipo = Cls_Enums.f_DatosPC.UsuarioPC;
                        objBEUnidadesDeNegocio_Areas.BEAuditores.NombreEquipo = Cls_Enums.f_DatosPC.NombrePC;
                        objBEUnidadesDeNegocio_Areas.BEAuditores.TablaMovimientoID = Cls_Enums.TablaMovimientos.UnidadesDeNegocio_Areas;

                        objBLUnidadesDeNegocio_Areas.fnInsUpdUnidadesDeNegocio(objBEUnidadesDeNegocio_Areas);
                    }
                }
            }
            else
            {
                showMessage("El total de la Participacion debe ser menor que 100");
            }
        }

        private Decimal Total()
        {
            Decimal Total = 0;
            String ValorAct = "";
            foreach (GridDataItem gr in GridDistribucionAreas.Items)
            {
                ValorAct = ((RadNumericTextBox)gr.FindControl("txtImporte")).Text;
                if (ValorAct != "")
                {
                    Total += Convert.ToDecimal(ValorAct);
                }
                else
                {
                    Total += 0;
                }
            }
            return Total;
        }

       
        private DataTable CreateDataTable()
        {
            DataTable myDataTable = new DataTable();

            //DataColumn myDataColumn;

            myDataTable.Columns.Add("id", typeof(int)).AutoIncrement = true; //------0
            myDataTable.Columns.Add("AsientoContableDetalleID", typeof(String)); //------1
            myDataTable.Columns.Add("AsientoContableID", typeof(String)); //------2

            myDataTable.Columns.Add("MontoDebe", typeof(Decimal)); //------3
            myDataTable.Columns.Add("MontoHaber", typeof(Decimal)); //------4

            myDataTable.Columns.Add("CanalContableID", typeof(String)); //------5
            myDataTable.Columns.Add("EmpresaID", typeof(String)); //------6
            myDataTable.Columns.Add("TipoDocumentoID", typeof(String)); //-----7
            myDataTable.Columns.Add("ProyectoID", typeof(String)); //------8
            myDataTable.Columns.Add("Dia", typeof(DateTime)); //------9
            myDataTable.Columns.Add("Referencia", typeof(String)); //------10
            myDataTable.Columns.Add("FechaEmision", typeof(DateTime)); //------11
            myDataTable.Columns.Add("FechaVencimiento", typeof(DateTime)); //------12
            myDataTable.Columns.Add("AreaID", typeof(String)); //------13
            myDataTable.Columns.Add("NumeroDocumento", typeof(String)); //------14
            myDataTable.Columns.Add("TransaccionDocumentoID", typeof(String)); //------15
            myDataTable.Columns.Add("FlujoCajaID", typeof(String)); //------16
            myDataTable.Columns.Add("PlanCuentaID", typeof(String)); //------17
            myDataTable.Columns.Add("AsientoContableDetalleIDTransferencia", typeof(String)); //------18
            myDataTable.Columns.Add("PeriodoID", typeof(String)); //------19

            myDataTable.Columns.Add("CanalContableIDNombre", typeof(String)); //------20
            myDataTable.Columns.Add("EmpresaIDNombre", typeof(String)); //------21
            myDataTable.Columns.Add("TipoDocumentoIDNombre", typeof(String)); //------22
            myDataTable.Columns.Add("ProyectoIDNombre", typeof(String)); //------23
            myDataTable.Columns.Add("AreaIDNombre", typeof(String)); //------24
            myDataTable.Columns.Add("FlujoCajaIDNombre", typeof(String)); //------25
            myDataTable.Columns.Add("PlanCuentaIDNombre", typeof(String)); //------26

            myDataTable.Columns.Add("Transferencia", typeof(String)); //------27

            myDataTable.Columns.Add("MontoDebe2", typeof(Decimal)); //------28
            myDataTable.Columns.Add("MontoHaber2", typeof(Decimal)); //------29

            myDataTable.Columns.Add("ImporteSoles", typeof(Decimal)); //------30
            myDataTable.Columns.Add("ImporteDolares", typeof(Decimal)); //------31

            myDataTable.Columns.Add("TipoCambio", typeof(Decimal)); //------32
            myDataTable.Columns.Add("Moneda", typeof(Decimal)); //------33

            myDataTable.Columns.Add("Estado", typeof(String));//34 

            //myDataTable.Columns.Add("UnidadNegocioID", typeof(Int32));//35
            //myDataTable.Columns.Add("Discrepancia", typeof(Int32));//36

            myDataTable.Columns.Add("ImporteAnteriorSoles", typeof(Decimal));//35
            myDataTable.Columns.Add("ImporteAnteriorDolares", typeof(Decimal));//36

            myDataTable.Columns.Add("UnidadNegocioID_1", typeof(Int32));//39//37
            myDataTable.Columns.Add("ImporteSoles_1", typeof(Decimal));//40//38
///////////////*FRANCO*/  myDataTable.Columns.Add("MonedaNombre", typeof(String)); //------39 
///////////////*FRANCO*/  myDataTable.Columns.Add("TipoConversionMonedaID", typeof(Int32));//40
            myDataTable.Columns.Add("ImporteDolares_1", typeof(Decimal));//41//39
            myDataTable.Columns.Add("NombreUnidadNegocio_1", typeof(String));//42//40
            myDataTable.Columns.Add("Participacion_1", typeof(Decimal));//43//41

            myDataTable.Columns.Add("UnidadNegocioID_2", typeof(Int32));//42
            myDataTable.Columns.Add("ImporteSoles_2", typeof(Decimal));
            myDataTable.Columns.Add("ImporteDolares_2", typeof(Decimal));
            myDataTable.Columns.Add("NombreUnidadNegocio_2", typeof(String));
            myDataTable.Columns.Add("Participacion_2", typeof(Decimal));

            myDataTable.Columns.Add("UnidadNegocioID_3", typeof(Int32));//47
            myDataTable.Columns.Add("ImporteSoles_3", typeof(Decimal));
            myDataTable.Columns.Add("ImporteDolares_3", typeof(Decimal));
            myDataTable.Columns.Add("NombreUnidadNegocio_3", typeof(String));
            myDataTable.Columns.Add("Participacion_3", typeof(Decimal));

            myDataTable.Columns.Add("UnidadNegocioID_4", typeof(Int32));//52
            myDataTable.Columns.Add("ImporteSoles_4", typeof(Decimal));
            myDataTable.Columns.Add("ImporteDolares_4", typeof(Decimal));
            myDataTable.Columns.Add("NombreUnidadNegocio_4", typeof(String));
            myDataTable.Columns.Add("Participacion_4", typeof(Decimal));

            myDataTable.Columns.Add("UnidadNegocioID_5", typeof(Int32));//57
            myDataTable.Columns.Add("ImporteSoles_5", typeof(Decimal));
            myDataTable.Columns.Add("ImporteDolares_5", typeof(Decimal));
            myDataTable.Columns.Add("NombreUnidadNegocio_5", typeof(String));
            myDataTable.Columns.Add("Participacion_5", typeof(Decimal));

            myDataTable.Columns.Add("UnidadNegocioID_6", typeof(Int32));//62
            myDataTable.Columns.Add("ImporteSoles_6", typeof(Decimal));
            myDataTable.Columns.Add("ImporteDolares_6", typeof(Decimal));
            myDataTable.Columns.Add("NombreUnidadNegocio_6", typeof(String));
            myDataTable.Columns.Add("Participacion_6", typeof(Decimal));

            myDataTable.Columns.Add("UnidadNegocioID_7", typeof(Int32));//67
            myDataTable.Columns.Add("ImporteSoles_7", typeof(Decimal));
            myDataTable.Columns.Add("ImporteDolares_7", typeof(Decimal));
            myDataTable.Columns.Add("NombreUnidadNegocio_7", typeof(String));
            myDataTable.Columns.Add("Participacion_7", typeof(Decimal));

            myDataTable.Columns.Add("UnidadNegocioID_8", typeof(Int32));//72
            myDataTable.Columns.Add("ImporteSoles_8", typeof(Decimal));
            myDataTable.Columns.Add("ImporteDolares_8", typeof(Decimal));
            myDataTable.Columns.Add("NombreUnidadNegocio_8", typeof(String));
            myDataTable.Columns.Add("Participacion_8", typeof(Decimal));

            myDataTable.Columns.Add("UnidadNegocioID_9", typeof(Int32));//77
            myDataTable.Columns.Add("ImporteSoles_9", typeof(Decimal));
            myDataTable.Columns.Add("ImporteDolares_9", typeof(Decimal));
            myDataTable.Columns.Add("NombreUnidadNegocio_9", typeof(String));
            myDataTable.Columns.Add("Participacion_9", typeof(Decimal));

            myDataTable.Columns.Add("UnidadNegocioID_10", typeof(Int32));//82
            myDataTable.Columns.Add("ImporteSoles_10", typeof(Decimal));
            myDataTable.Columns.Add("ImporteDolares_10", typeof(Decimal));
            myDataTable.Columns.Add("NombreUnidadNegocio_10", typeof(String));
            myDataTable.Columns.Add("Participacion_10", typeof(Decimal));


            /*FRANCO*/
            myDataTable.Columns.Add("MonedaNombre", typeof(String)); //------39////87
            /*FRANCO*/
            myDataTable.Columns.Add("TipoConversionMonedaID", typeof(Int32));//40//88
          //TEMP
            myDataTable.Columns.Add("UpdDetalleAsiento", typeof(Int32));//41//89

            //DIEGO 27/08/2013
            myDataTable.Columns.Add("SegmentoID", typeof(Int32));
            myDataTable.Columns.Add("PaisID", typeof(Int32));
            myDataTable.Columns.Add("PaqueteTOID", typeof(String));
            myDataTable.Columns.Add("PeriodoGPA", typeof(String));
            //FIN DIEGO 27/08/2013 
            //DIEGO 06/10/2014
            myDataTable.Columns.Add("NombreMedioPago",typeof(String));
            myDataTable.Columns.Add("NombrePlanCuentaCaja", typeof(String));
            //FIN 06/10/2014
            //DIEGO 29/10/2014
            myDataTable.Columns.Add("MedioPagoID", typeof(String));
            myDataTable.Columns.Add("NroOperacion",typeof(String));
            //myDataTable.Columns.Add("MedioPagoIDNombre", typeof(String));
            //FIN 29/10/2014

            return myDataTable;
        }

        private void DelDataToTable(string cont, DataTable myTable)
        {
            if (myTable.Rows.Count > 0)
            {
                //DataRow[] rowUN = myTable.Select("AsientoContableDetalleIDTransferencia=" + MyTable.Rows[cont]["AsientoContableDetalleID"].ToString());
                myTable.Rows.Remove(myTable.Rows[Convert.ToInt32(cont)]);
            }
        }
        
        private void AddDataToTable(string[] ParametrosDetalle, DataTable myTable)
        {
            DataRow row;
            String cant = myDt.Rows.Count.ToString();

            row = myTable.NewRow();

            
            if (ViewState["CodigoTablaID"] != null)
            {
                DataRow[] rowDetalle = myDt.Select("ID=" + ViewState["CodigoTablaID"]);
                //rowDetalle["AsientoContableDetalleID"]=
            }
            
            //ParametrosDetalle[0] = ""; //Codigo de Tabla Temporal
            ParametrosDetalle[1] = ViewState["AsientoDetalleID"].ToString();
            ParametrosDetalle[2] = ViewState["ID"].ToString();//Asiento Contable ID

            ParametrosDetalle[5] = cbxCanalId.SelectedValue.ToString().Trim();//Canal contable
            ParametrosDetalle[6] = Session["EMPID"].ToString();//Empresa
            ParametrosDetalle[7] = cbxTipoDocumento.SelectedValue.ToString();
            ParametrosDetalle[8] = cbxProyectoID.SelectedValue.ToString();




            //row["id"] = ParametrosDetalle[0]; // DateTime.Now.ToString().GetHashCode().ToString("x"); // Guid.NewGuid().ToString(); 
            row["AsientoContableDetalleID"] = ParametrosDetalle[1];
            row["AsientoContableID"] = ParametrosDetalle[2];
            row["MontoDebe"] = ParametrosDetalle[3];
            //row["MontoDebe"] = lol;
            row["MontoHaber"] = ParametrosDetalle[4];
            row["CanalContableID"] = ParametrosDetalle[5];
            row["EmpresaID"] = ParametrosDetalle[6];
            row["TipoDocumentoID"] = ParametrosDetalle[7];
            row["ProyectoID"] = ParametrosDetalle[8];
            row["Dia"] = ParametrosDetalle[9];
            row["Referencia"] = ParametrosDetalle[10];
            row["FechaEmision"] = ParametrosDetalle[11];
            if (ParametrosDetalle[12] == "") { row["FechaVencimiento"] = DBNull.Value; } else { row["FechaVencimiento"] = ParametrosDetalle[12]; }
            row["AreaID"] = ParametrosDetalle[13];
            row["NumeroDocumento"] = ParametrosDetalle[14];
            row["TransaccionDocumentoID"] = ParametrosDetalle[15];
            row["FlujoCajaID"] = ParametrosDetalle[16];
            row["PlanCuentaID"] = ParametrosDetalle[17];
            row["AsientoContableDetalleIDTransferencia"] = ParametrosDetalle[18];
            row["PeriodoID"] = ParametrosDetalle[19];

            row["CanalContableIDNombre"] = ParametrosDetalle[20];
            row["EmpresaIDNombre"] = ParametrosDetalle[21];
            row["TipoDocumentoIDNombre"] = ParametrosDetalle[22];
            row["ProyectoIDNombre"] = ParametrosDetalle[23];
            row["AreaIDNombre"] = ParametrosDetalle[24];
            row["FlujoCajaIDNombre"] = ParametrosDetalle[25];
            row["PlanCuentaIDNombre"] = ParametrosDetalle[26];
            row["Transferencia"] = ParametrosDetalle[27];

            row["MontoDebe2"] = ParametrosDetalle[28];
            row["MontoHaber2"] = ParametrosDetalle[29];

            row["ImporteSoles"] = ParametrosDetalle[30];
            row["ImporteDolares"] = ParametrosDetalle[31];

            row["TipoCambio"] = ParametrosDetalle[32];
            row["Moneda"] = ParametrosDetalle[33];

            row["Estado"] = ParametrosDetalle[34];

            row["UnidadNegocioID"] = ParametrosDetalle[35];
            row["Discrepancia"] = ParametrosDetalle[36];

            row["ImporteAnteriorSoles"] = ParametrosDetalle[37];
            row["ImporteAnteriorDolares"] = ParametrosDetalle[38];

            //myTable.Rows.Add(row);
            myTable.Rows.Add(row);
        }

        private void UpdDataToTable(string[] ParametrosDetalle, DataTable myTable)
        {
            DataRow[] changedRows = ((DataTable)Session["DtDetalleAsiento"]).Select("ID=" + ParametrosDetalle[0]);
            Hashtable newValues = new Hashtable();

            //.Item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem);
            DataRow changedRow = changedRows[0];
            changedRow.BeginEdit();

            //row["id"] = ParametrosDetalle[0]; // DateTime.Now.ToString().GetHashCode().ToString("x"); // Guid.NewGuid().ToString(); 
            changedRow["AsientoContableDetalleID"] = ParametrosDetalle[1];
            changedRow["AsientoContableID"] = ParametrosDetalle[2];
            changedRow["MontoDebe"] = ParametrosDetalle[3];
            changedRow["MontoHaber"] = ParametrosDetalle[4];
            changedRow["CanalContableID"] = ParametrosDetalle[5];
            changedRow["EmpresaID"] = ParametrosDetalle[6];
            changedRow["TipoDocumentoID"] = ParametrosDetalle[7];
            changedRow["ProyectoID"] = ParametrosDetalle[8];
            changedRow["Dia"] = ParametrosDetalle[9];
            changedRow["Referencia"] = ParametrosDetalle[10];
            if (ParametrosDetalle[11] == "")
            {
                changedRow["FechaEmision"] = DBNull.Value;
            }
            else
            {
                changedRow["FechaEmision"] = Convert.ToDateTime(ParametrosDetalle[11]);
            }
            if (ParametrosDetalle[12] == "")
            {
                changedRow["FechaVencimiento"] = DBNull.Value;
            }
            else
            {
                changedRow["FechaVencimiento"] = Convert.ToDateTime(ParametrosDetalle[12]);
            }
            changedRow["AreaID"] = ParametrosDetalle[13];
            changedRow["NumeroDocumento"] = ParametrosDetalle[14];
            changedRow["TransaccionDocumentoID"] = ParametrosDetalle[15];
            changedRow["FlujoCajaID"] = ParametrosDetalle[16];
            changedRow["PlanCuentaID"] = ParametrosDetalle[17];
            changedRow["AsientoContableDetalleIDTransferencia"] = ParametrosDetalle[18];
            changedRow["PeriodoID"] = ParametrosDetalle[19];

            changedRow["CanalContableIDNombre"] = ParametrosDetalle[20];
            changedRow["EmpresaIDNombre"] = ParametrosDetalle[21];
            changedRow["TipoDocumentoIDNombre"] = ParametrosDetalle[22];
            changedRow["ProyectoIDNombre"] = ParametrosDetalle[23];
            changedRow["AreaIDNombre"] = ParametrosDetalle[24];
            changedRow["FlujoCajaIDNombre"] = ParametrosDetalle[25];
            changedRow["PlanCuentaIDNombre"] = ParametrosDetalle[26];

            changedRow["MontoDebe2"] = ParametrosDetalle[28];
            changedRow["MontoHaber2"] = ParametrosDetalle[29];

            changedRow["ImporteSoles"] = ParametrosDetalle[30];
            changedRow["ImporteDolares"] = ParametrosDetalle[31];

            changedRow["TipoCambio"] = ParametrosDetalle[32];
            changedRow["Moneda"] = ParametrosDetalle[33];

            changedRow["Estado"] = ParametrosDetalle[34];

            changedRow["UnidadNegocioID"] = ParametrosDetalle[35];
            changedRow["Discrepancia"] = ParametrosDetalle[36];

            //changedRow["ImporteAnteriorSoles"] = ParametrosDetalle[37];
            //changedRow["ImporteAnteriorDolares"] = ParametrosDetalle[38];

            changedRow.EndEdit();
        }

        private DataTable CreateDataTableEliminar()
        {
            DataTable myDataTableElimina = new DataTable();

            myDataTableElimina.Columns.Add("id", typeof(int)).AutoIncrement = true;
            myDataTableElimina.Columns.Add("AsientoContableDetalleID", typeof(String));
            return myDataTableElimina;
        }

        private void AddDataToTableElimar(string ParametrosDetalle, DataTable myTable)
        {
            DataRow row;

            String cant = myDt.Rows.Count.ToString();

            row = myTable.NewRow();

            row["AsientoContableDetalleID"] = ParametrosDetalle;
            myTable.Rows.Add(row);
        }

    
        private void AddDetalleAsiento()
        {
            DataRow row = ((DataTable)Session["DtDetalleAsiento"]).NewRow();
           // row["AsientoContableDetalleID"] = ViewState["AsientoDetalleID"].ToString();//"1212"; //
            string testcontador = Cls_Utilitaria.f_Contador_ACD_Id().ToString();
            row["AsientoContableDetalleID"] = ViewState["AsientoDetalleID"] == "0" ? testcontador : ViewState["AsientoDetalleID"].ToString();
            row["AsientoContableID"] = ViewState["ID"].ToString();
            Int32 TipoMoneda = Convert.ToInt32(cbxMonda.SelectedValue);
            Decimal TipoCambio = Convert.ToDecimal(txtTipoCambio.Text);
            if (TipoMoneda == 1)
            {
                if (String.IsNullOrEmpty(txtDebe.Text.ToString().Trim()))
                {
                    row["MontoDebe"]= "0";
                    row["MontoDebe2"] = "0";
                }
                else
                {
                    row["MontoDebe"] = txtDebe.Text.ToString().Trim();
                    row["MontoDebe2"] = Math.Round(Convert.ToDecimal(txtDebe.Text.ToString().Trim()) / TipoCambio, 2, MidpointRounding.AwayFromZero).ToString();
                };
                if (String.IsNullOrEmpty(txtHaber.Text.ToString().Trim()))
                {
                    row["MontoHaber"] = "0";
                    row["MontoHaber2"] = "0";
                }
                else
                {
                    row["MontoHaber"] = txtHaber.Text.ToString().Trim();
                    row["MontoHaber2"] = Math.Round(Convert.ToDecimal(txtHaber.Text.ToString().Trim()) / TipoCambio, 2, MidpointRounding.AwayFromZero).ToString();
                };
            }
            else
            {
                if (String.IsNullOrEmpty(txtDebe.Text.ToString().Trim()))
                {
                    row["MontoDebe2"] = "0";
                    row["MontoDebe"] = "0";
                }
                else
                {
                    row["MontoDebe2"] = txtDebe.Text.ToString().Trim();
                    row["MontoDebe"] = (Convert.ToDecimal(txtDebe.Text.ToString().Trim()) * TipoCambio).ToString();
                };
                if (String.IsNullOrEmpty(txtHaber.Text.ToString().Trim()))
                {
                    row["MontoHaber2"] = "0";
                    row["MontoHaber"] = "0";
                }
                else
                {
                    row["MontoHaber2"] = txtHaber.Text.ToString().Trim();
                    row["MontoHaber"] = (Convert.ToDecimal(txtHaber.Text.ToString().Trim()) * TipoCambio).ToString();
                };
            }

            if (TipoMoneda == 1)
            {
                row["ImporteSoles"] = (Convert.ToDecimal(row["MontoDebe"]) + Convert.ToDecimal(row["MontoHaber"])).ToString();
                row["ImporteDolares"] = Math.Round(Convert.ToDecimal(row["ImporteSoles"]) / TipoCambio, 2, MidpointRounding.AwayFromZero).ToString();
            }
            else
            {
                row["ImporteDolares"] = (Convert.ToDecimal(row["MontoDebe2"]) + Convert.ToDecimal(row["MontoHaber2"])).ToString();
                row["ImporteSoles"] = Math.Round(Convert.ToDecimal(row["ImporteDolares"]) * TipoCambio, 2, MidpointRounding.AwayFromZero).ToString();
            }

            row["CanalContableID"] = cbxCanalId.SelectedValue.ToString().Trim();//Canal contable
            row["EmpresaID"] = Session["EMPID"].ToString();//Empresa
            row["TipoDocumentoID"] = cbxTipoDocumento.SelectedValue.ToString();
            row["ProyectoID"] = cbxProyectoID.SelectedValue.ToString();

            if (txtDia.SelectedDate.ToString() == null) { row["Dia"] = ""; } else { row["Dia"] = txtDia.SelectedDate.ToString().Substring(0, 10); }
            
            row["Referencia"] = txtReferencia.Text.ToString();

            if (txtFechaEmision.SelectedDate.ToString().Length.Equals(0))
                row["FechaEmision"] = "";
            else
                row["FechaEmision"] = this.txtFechaEmision.SelectedDate.ToString().Substring(0, 10);

            if (txtFechaVencimiento.SelectedDate.ToString().Length.Equals(0))
                row["FechaVencimiento"] = DBNull.Value;
            else
                row["FechaVencimiento"] = this.txtFechaVencimiento.SelectedDate.ToString().Substring(0, 10);

            row["AreaID"] = cbxAreaID.SelectedValue.ToString().Trim();
            row["NumeroDocumento"] = txtDocumento.Text.ToString();
            row["TransaccionDocumentoID"] = ""; // no se de donde llama este parametro ParametrosDetalle[15];
            row["FlujoCajaID"] = cbxFlujoCaja.SelectedValue.Trim();
            //DIEGO 29/10/2014
            row["MedioPagoID"] = cbxMedioPago.SelectedValue.ToString().Trim();
            //FIN DIEGO 29/10/2014
            row["PlanCuentaID"] = Session["PCID"].ToString();
            row["AsientoContableDetalleIDTransferencia"] = "0"; // cuando aya cambios ParametrosDetalle[18];
            row["PeriodoID"] = Convert.ToDateTime(txtDia.DbSelectedDate).Month.ToString();

            row["CanalContableIDNombre"] = cbxCanalId.Text.ToString().Trim();
            row["EmpresaIDNombre"] = txtEmpresa.Text;//cbxEmpresa.Text.ToString();
            row["TipoDocumentoIDNombre"] = cbxTipoDocumento.Text.ToString();
            row["ProyectoIDNombre"] = cbxProyectoID.Text.ToString();
            row["AreaIDNombre"] = cbxAreaID.Text.ToString().Trim();
            row["FlujoCajaIDNombre"] = cbxFlujoCaja.Text.ToString();
            //Diego 29/10/2014
            row["NombreMedioPago"] = cbxMedioPago.Text.ToString();
            row["NroOperacion"] = txtoperacion.Text.ToString();
            //Fin Diego 29/10/2014
            row["PlanCuentaIDNombre"] = ViewState["NombrePlanCuenta"].ToString();
            row["Transferencia"] = "0";

            row["TipoCambio"] = Convert.ToDecimal(txtTipoCambio.Text);
            row["Moneda"] = cbxMonda.SelectedValue.ToString().Trim();
            row["MonedaNombre"] = cbxMonda.Text.ToString().Trim();
            row["TipoConversionMonedaID"] = cbxTipoConversionMoneda.SelectedValue.ToString().Trim();
            row["Estado"] = "N";

            row["ImporteAnteriorSoles"] = "0";
            row["ImporteAnteriorDolares"] = "0";
            //DIEGO 27/08/2013
            if (cbxSegmento.SelectedValue.ToString() == "")
            {
                row["SegmentoID"] = 0;
            }
            else
            {
                row["SegmentoID"] = cbxSegmento.SelectedValue.ToString();
            }
            if (cbxPais.SelectedValue.ToString() == "")
            {
                row["PaisID"] = 0;
            }
            else
            {
                row["PaisID"] = cbxPais.SelectedValue.ToString();
            }
            if (txtPaquete.Text == "")
            {
                row["PaqueteTOID"] = 0;
            }
            else
            {
                row["PaqueteTOID"] = txtPaquete.Text;
            }
            if (txtPeriodo.Text == "")
            {
                row["PeriodoGPA"] = 0;
            }
            else
            {
                row["PeriodoGPA"] = this.txtPeriodo.Text.ToString().Trim();
            }
            
            //FIN DIEGO 27/08/2013

            if (Session["rqArea"] != null)
            {
                if (Session["rqArea"].ToString() == "1")
                {
                    Int32 Cont1 = 0;
                    for (Int32  i = 0; i < GridDistribucionAreas.Items.Count; i++)
                    {
                        String Importe = ((RadNumericTextBox)GridDistribucionAreas.Items[i].FindControl("txtImporte")).Text;
                        Decimal ImporteActual;
                        try
                            {
                            ImporteActual = Convert.ToDecimal(Importe);
                        }
                        catch
                        {
                            ImporteActual = 0;
                        }
                        if (ImporteActual != 0)
                        {
                            row["UnidadNegocioID_" + (Cont1 + 1).ToString()] = GridDistribucionAreas.Items[i]["UnidadNegocioID"].Text;
                            row["NombreUnidadNegocio_" + (Cont1 + 1).ToString()] = GridDistribucionAreas.Items[i]["BEUnidadesDeNegocio.NombreUnidadNegocio"].Text.Trim();
                            row["Participacion_" + (Cont1 + 1).ToString()] = GridDistribucionAreas.Items[i]["BEUnidadesDeNegocio_Areas.Participacion"].Text;
                            if (TipoMoneda == 1)
                            {
                                row["ImporteSoles_" + (Cont1 + 1).ToString()] = ImporteActual;
                                row["ImporteDolares_" + (Cont1 + 1).ToString()] = Math.Round(Convert.ToDecimal(ImporteActual / TipoCambio), 2, MidpointRounding.AwayFromZero);
                            }
                            else
                            {
                                row["ImporteSoles_" + (Cont1 + 1).ToString()] = Math.Round(Convert.ToDecimal(ImporteActual * TipoCambio), 2, MidpointRounding.AwayFromZero);
                                row["ImporteDolares_" + (Cont1 + 1).ToString()] = ImporteActual;
                            }
                            Cont1++;
                        }
                    }
                    Int32 Cont2 = 1;
                    for (Int32  i = 0; i < GridDistribucionAreas.Items.Count; i++)
                    {
                        String Importe = ((RadNumericTextBox)GridDistribucionAreas.Items[i].FindControl("txtImporte")).Text;
                        Decimal ImporteActual;
                        try
                        {
                            ImporteActual = Convert.ToDecimal(Importe);
                        }
                        catch
                        {
                            ImporteActual = 0;
                        }
                        if (ImporteActual == 0)
                        {
                            row["UnidadNegocioID_" + (Cont1 + Cont2).ToString()] = GridDistribucionAreas.Items[i]["UnidadNegocioID"].Text;
                            row["NombreUnidadNegocio_" + (Cont1 + Cont2).ToString()] = GridDistribucionAreas.Items[i]["BEUnidadesDeNegocio.NombreUnidadNegocio"].Text.Trim();
                            row["Participacion_" + (Cont1 + Cont2).ToString()] = GridDistribucionAreas.Items[i]["BEUnidadesDeNegocio_Areas.Participacion"].Text;
                            row["ImporteSoles_" + (Cont1 + Cont2).ToString()] = ImporteActual;
                            row["ImporteDolares_" + (Cont1 + Cont2).ToString()] = Math.Round(Convert.ToDecimal(ImporteActual / TipoCambio), 2, MidpointRounding.AwayFromZero);
                            Cont2++;
                        }
                    }
                    for (int i = GridDistribucionAreas.Items.Count + 1; i < 11; i++)
                    {
                        row["UnidadNegocioID_" + (i).ToString()] = "0";
                        row["NombreUnidadNegocio_" + (i).ToString()] = "";
                        row["Participacion_" + (i).ToString()] = "0";
                        row["ImporteSoles_" + (i).ToString()] = "0";
                        row["ImporteDolares_" + (i).ToString()] = "0";
                    }
                }
                else
                {
                    for (int i = 1; i < 11; i++)
                    {
                        row["UnidadNegocioID_" + (i).ToString()] = "0";
                        row["NombreUnidadNegocio_" + (i).ToString()] = "";
                        row["Participacion_" + (i).ToString()] = "0";
                        row["ImporteSoles_" + (i).ToString()] = "0";
                        row["ImporteDolares_" + (i).ToString()] = "0";
                    }
                }
            }
            else
            {
                for (int i = 1; i < 11; i++)
                {
                    row["UnidadNegocioID_" + (i).ToString()] = "0";
                    row["NombreUnidadNegocio_" + (i).ToString()] = "";
                    row["Participacion_" + (i).ToString()] = "0";
                    row["ImporteSoles_" + (i).ToString()] = "0";
                    row["ImporteDolares_" + (i).ToString()] = "0";
                }
            }
            //FRANCO 
            /*agregamos la fila para saber cuando es una adicion a la tabla o cuando es modificacion
             * 0 = nuevo 
             * 1 = modificacion
            */
            row["UpdDetalleAsiento"] = ViewState["UpdDetalleAsiento"];
            ((DataTable)Session["DtDetalleAsiento"]).Rows.Add(row);
        }

        private void UpdDetalleAsiento()
        {
            DataRow[] rows = ((DataTable)Session["DtDetalleAsiento"]).Select("ID=" + ViewState["CodigoTablaID"]);

            DataRow row = rows[0];
            row.BeginEdit();
            //MODIFICACION PARA EDITAR EL DETALLE MIENTRAS QUE SE CREA EL ENCABEZADO
            //row["AsientoContableDetalleID"] = ViewState["AsientoDetalleID"].ToString();
            row["AsientoContableDetalleID"] = 0;
            row["AsientoContableID"] = ViewState["ID"].ToString();
            if (Request.QueryString["ID"].ToString() == "")//Diego 16/09/2014
            {
                ViewState["AsientoDetalleID"] = 0;
            }
             
            //showMessage(ViewState["AsientoDetalleID"].ToString());


            Int32 TipoMoneda = Convert.ToInt32(cbxMonda.SelectedValue);
            Decimal TipoCambio = Convert.ToDecimal(txtTipoCambio.Text);
            if (TipoMoneda == 1)
            {
                if (String.IsNullOrEmpty(txtDebe.Text.ToString().Trim()))
                {
                    row["MontoDebe"] = "0";
                    row["MontoDebe2"] = "0";
                }
                else
                {
                    row["MontoDebe"] = Math.Round(Convert.ToDecimal(txtDebe.Text.ToString().Trim()), 2, MidpointRounding.AwayFromZero).ToString();
                    row["MontoDebe2"] = Math.Round(Convert.ToDecimal(txtDebe.Text.ToString().Trim()) / TipoCambio, 2, MidpointRounding.AwayFromZero).ToString();
                };
                if (String.IsNullOrEmpty(txtHaber.Text.ToString().Trim()))
                {
                    row["MontoHaber"] = "0";
                    row["MontoHaber2"] = "0";
                }
                else
                {
                    row["MontoHaber"] = Math.Round(Convert.ToDecimal(txtHaber.Text.ToString().Trim()), 2, MidpointRounding.AwayFromZero).ToString();
                    row["MontoHaber2"] = Math.Round(Convert.ToDecimal(txtHaber.Text.ToString().Trim()) / TipoCambio, 2, MidpointRounding.AwayFromZero).ToString();
                };
            }
            else
            {
                if (String.IsNullOrEmpty(txtDebe.Text.ToString().Trim()))
                {
                    row["MontoDebe2"] = "0";
                    row["MontoDebe"] = "0";
                }
                else
                {
                    row["MontoDebe2"] = Math.Round(Convert.ToDecimal(txtDebe.Text.ToString().Trim()), 2, MidpointRounding.AwayFromZero).ToString();
                    row["MontoDebe"] = Math.Round((Convert.ToDecimal(txtDebe.Text.ToString().Trim()) * TipoCambio), 2, MidpointRounding.AwayFromZero).ToString();
                };
                if (String.IsNullOrEmpty(txtHaber.Text.ToString().Trim()))
                {
                    row["MontoHaber2"] = "0";
                    row["MontoHaber"] = "0";
                }
                else
                {
                    row["MontoHaber2"] = Math.Round(Convert.ToDecimal(txtHaber.Text.ToString().Trim()), 2, MidpointRounding.AwayFromZero).ToString();
                    row["MontoHaber"] = Math.Round((Convert.ToDecimal(txtHaber.Text.ToString().Trim()) * TipoCambio), 2, MidpointRounding.AwayFromZero).ToString();
                };
            }

            if (TipoMoneda == 1)
            {
                row["ImporteSoles"] = Math.Round(Convert.ToDecimal((Convert.ToDecimal(row["MontoDebe"]) + Convert.ToDecimal(row["MontoHaber"])).ToString()), 2, MidpointRounding.AwayFromZero).ToString();
                row["ImporteDolares"] = Math.Round(Convert.ToDecimal(row["ImporteSoles"]) / TipoCambio, 2, MidpointRounding.AwayFromZero).ToString();
            }
            else
            {
                row["ImporteDolares"] = Math.Round(Convert.ToDecimal((Convert.ToDecimal(row["MontoDebe2"]) + Convert.ToDecimal(row["MontoHaber2"])).ToString()), 2, MidpointRounding.AwayFromZero).ToString();
                row["ImporteSoles"] = Math.Round(Convert.ToDecimal(row["ImporteDolares"]) * TipoCambio, 2, MidpointRounding.AwayFromZero).ToString();
            }

            row["CanalContableID"] = cbxCanalId.SelectedValue.ToString().Trim();//Canal contable
            row["EmpresaID"] = Session["EMPID"].ToString();//Empresa
            row["TipoDocumentoID"] = cbxTipoDocumento.SelectedValue.ToString();
            row["ProyectoID"] = cbxProyectoID.SelectedValue.ToString();

            if (txtDia.SelectedDate.ToString() == null) { row["Dia"] = ""; } else { row["Dia"] = txtDia.SelectedDate.ToString().Substring(0, 10); }

            row["Referencia"] = txtReferencia.Text.ToString();

            if (txtFechaEmision.SelectedDate.ToString().Length.Equals(0))
                row["FechaEmision"] = "";
            else
                row["FechaEmision"] = this.txtFechaEmision.SelectedDate.ToString().Substring(0, 10);

            if (txtFechaVencimiento.SelectedDate.ToString().Length.Equals(0))
                row["FechaVencimiento"] = DBNull.Value;
            else
                row["FechaVencimiento"] = this.txtFechaVencimiento.SelectedDate.ToString().Substring(0, 10);

            row["AreaID"] = cbxAreaID.SelectedValue.ToString().Trim();
            row["NumeroDocumento"] = txtDocumento.Text.ToString();
            row["TransaccionDocumentoID"] = ""; // no se de donde llama este parametro ParametrosDetalle[15];
            row["FlujoCajaID"] = cbxFlujoCaja.SelectedValue.Trim();
            //DIEGO 29/10/2014
            row["MedioPagoID"] = cbxMedioPago.SelectedValue.ToString().Trim();
            row["NroOperacion"] = txtoperacion.Text.Trim();
            //FIN Diego 29/10/2014
            row["PlanCuentaID"] = Session["PCID"].ToString();
            //row["AsientoContableDetalleIDTransferencia"] = ""; // cuando aya cambios ParametrosDetalle[18];
            row["PeriodoID"] = Convert.ToDateTime(txtDia.DbSelectedDate).Month.ToString();

            row["CanalContableIDNombre"] = cbxCanalId.Text.ToString().Trim();
            row["EmpresaIDNombre"] = txtEmpresa.Text;//cbxEmpresa.Text.ToString();
            row["TipoDocumentoIDNombre"] = cbxTipoDocumento.Text.ToString();
            row["ProyectoIDNombre"] = cbxProyectoID.Text.ToString();
            row["AreaIDNombre"] = cbxAreaID.Text.ToString().Trim();
            row["FlujoCajaIDNombre"] = cbxFlujoCaja.Text.ToString();
            //DIEGO 29/10/2014
            row["NombreMedioPago"] = cbxMedioPago.Text.ToString();
            row["NroOperacion"] = txtoperacion.Text.ToString();
            //FIN DIEGO 29/10/2014
            row["PlanCuentaIDNombre"] = ViewState["NombrePlanCuenta"].ToString();
            row["Transferencia"] = "0";
            //DIEGO 04/10/2013
            row["TipoConversionMonedaID"] = cbxTipoConversionMoneda.SelectedValue.ToString();
            //FIN DIEGO 04/10/2013
            row["TipoCambio"] = Convert.ToDecimal(txtTipoCambio.Text);
            row["Moneda"] = Convert.ToInt32(cbxMonda.SelectedValue);
            row["MonedaNombre"] = cbxMonda.Text.ToString().Trim();

            //DIEGO 17/09/2013 UPDATE NUEVOS CONTROLES
            row["SegmentoID"] = this.cbxSegmento.SelectedValue.ToString().Trim();
            row["PaisID"] = this.cbxPais.SelectedValue.ToString().Trim();
            row["PaqueteTOID"] = this.txtPaquete.Text.ToString().Trim();
            row["PeriodoGPA"] = this.txtPeriodo.Text.ToString().Trim();
            //FIN DIEGO 17/09/2013 UPDATE NUEVOS CONTROLES

            if (ViewState["AsientoDetalleID"].ToString() == "0")
                row["Estado"] = "N";
            else
                row["Estado"] = "M";

            //row["ImporteAnteriorSoles"] = "0";
            //row["ImporteAnteriorDolares"] = "0";

            if (Session["rqArea"] != null)
            {
                if (ActivarUnidadNegocioValor == 1) // Diego Activar Unidad Negocio
                {
                    if (Session["rqArea"].ToString() == "1")
                    {
                        Int32 Cont1 = 0;
                        for (Int32 i = 0; i < GridDistribucionAreas.Items.Count; i++)
                        {
                            String Importe = ((RadNumericTextBox)GridDistribucionAreas.Items[i].FindControl("txtImporte")).Text;
                            Decimal ImporteActual;
                            try
                            {
                                ImporteActual = Math.Round(Convert.ToDecimal(Importe), 2, MidpointRounding.AwayFromZero);
                            }
                            catch
                            {
                                ImporteActual = 0;
                            }
                            if (ImporteActual != 0)
                            {
                                row["UnidadNegocioID_" + (Cont1 + 1).ToString()] = GridDistribucionAreas.Items[i]["UnidadNegocioID"].Text;
                                row["NombreUnidadNegocio_" + (Cont1 + 1).ToString()] = GridDistribucionAreas.Items[i]["BEUnidadesDeNegocio.NombreUnidadNegocio"].Text.Trim();
                                row["Participacion_" + (Cont1 + 1).ToString()] = GridDistribucionAreas.Items[i]["BEUnidadesDeNegocio_Areas.Participacion"].Text;
                                if (TipoMoneda == 1)
                                {
                                    row["ImporteSoles_" + (Cont1 + 1).ToString()] = ImporteActual;
                                    row["ImporteDolares_" + (Cont1 + 1).ToString()] = Math.Round(Convert.ToDecimal(ImporteActual / TipoCambio), 2, MidpointRounding.AwayFromZero);
                                }
                                else
                                {
                                    row["ImporteSoles_" + (Cont1 + 1).ToString()] = Math.Round(Convert.ToDecimal(ImporteActual * TipoCambio), 2, MidpointRounding.AwayFromZero);
                                    row["ImporteDolares_" + (Cont1 + 1).ToString()] = ImporteActual;
                                }
                                Cont1++;
                            }
                        }
                        Int32 Cont2 = 1;
                        for (Int32 i = 0; i < GridDistribucionAreas.Items.Count; i++)
                        {
                            String Importe = ((RadNumericTextBox)GridDistribucionAreas.Items[i].FindControl("txtImporte")).Text;
                            Decimal ImporteActual;
                            try
                            {
                                ImporteActual = Convert.ToDecimal(Importe);
                            }
                            catch
                            {
                                ImporteActual = 0;
                            }
                            if (ImporteActual == 0)
                            {
                                row["UnidadNegocioID_" + (Cont1 + Cont2).ToString()] = GridDistribucionAreas.Items[i]["UnidadNegocioID"].Text;
                                row["NombreUnidadNegocio_" + (Cont1 + Cont2).ToString()] = GridDistribucionAreas.Items[i]["BEUnidadesDeNegocio.NombreUnidadNegocio"].Text.Trim();
                                row["Participacion_" + (Cont1 + Cont2).ToString()] = GridDistribucionAreas.Items[i]["BEUnidadesDeNegocio_Areas.Participacion"].Text;
                                row["ImporteSoles_" + (Cont1 + Cont2).ToString()] = ImporteActual;
                                row["ImporteDolares_" + (Cont1 + Cont2).ToString()] = Math.Round(Convert.ToDecimal(ImporteActual / TipoCambio), 2, MidpointRounding.AwayFromZero);
                                Cont2++;
                            }
                        }
                        for (int i = GridDistribucionAreas.Items.Count + 1; i < 11; i++)
                        {
                            row["UnidadNegocioID_" + (i).ToString()] = "0";
                            row["NombreUnidadNegocio_" + (i).ToString()] = "";
                            row["Participacion_" + (i).ToString()] = "0";
                            row["ImporteSoles_" + (i).ToString()] = "0";
                            row["ImporteDolares_" + (i).ToString()] = "0";
                        }
                    }
                    else
                    {
                        for (int i = 1; i < 11; i++)
                        {
                            row["UnidadNegocioID_" + (i).ToString()] = "0";
                            row["NombreUnidadNegocio_" + (i).ToString()] = "";
                            row["Participacion_" + (i).ToString()] = "0";
                            row["ImporteSoles_" + (i).ToString()] = "0";
                            row["ImporteDolares_" + (i).ToString()] = "0";
                        }
                    }
                }
                else
                {
                    for (int i = 1; i < 11; i++)
                    {
                        row["UnidadNegocioID_" + (i).ToString()] = "0";
                        row["NombreUnidadNegocio_" + (i).ToString()] = "";
                        row["Participacion_" + (i).ToString()] = "0";
                        row["ImporteSoles_" + (i).ToString()] = "0";
                        row["ImporteDolares_" + (i).ToString()] = "0";
                    }
                }
                }
                

            //FRANCO 
            /*agregamos la fila para saber cuando es una adicion a la tabla o cuando es modificacion
             * 0 = nuevo 
             * 1 = modificacion
            */
            row["UpdDetalleAsiento"] = ViewState["AsientoDetalleID"].ToString();//ViewState["AsientoContableDetalleID"].ToString();//ViewState["UpdDetalleAsiento"];
           
            row.EndEdit();
        }

        /// <summary>
        /// Agrega al Data Table Temporal DtDetalleAsiento cuando se Actualiza un asiento
        /// </summary>
        /// <param name="loList"></param>
        private void AddDetalleAsiento(List<BEAsientosContablesDetalle> loList)
        {
            for (Int32  i = 0; i < loList.Count; i++)
            {
                DataRow row = ((DataTable)Session["DtDetalleAsiento"]).NewRow();

                row["AsientoContableDetalleID"] = loList[i].AsientoContableDetalleID;
                row["AsientoContableID"] = loList[i].AsientoContableID;

   /* FRANCO */             //Int32 TipoMoneda = Convert.ToInt32(cbxMonda.SelectedValue.ToString());
                Int32 TipoMoneda = loList[i].MonedaID;
                if (TipoMoneda == 1)
                {
                    row["MontoDebe"] = loList[i].MontoDebe.ToString();
                    row["MontoHaber"] = loList[i].MontoHaber.ToString();

                    if (Convert.ToDecimal(loList[i].MontoDebe.ToString()) != 0)
                    {
                        row["MontoDebe2"] = loList[i].ImporteDolares.ToString();
                        row["MontoHaber2"] = "0";
                    }
                    else
                    {
                        row["MontoDebe2"] = "0";
                        row["MontoHaber2"] = loList[i].ImporteDolares.ToString();
                    }
                }
                else
                {
                    row["MontoDebe2"] = loList[i].MontoDebe.ToString();
                    row["MontoHaber2"] = loList[i].MontoHaber.ToString();
                    if (Convert.ToDecimal(loList[i].MontoDebe.ToString()) != 0)
                    {
                        row["MontoDebe"] = loList[i].ImporteSoles.ToString();
                        row["MontoHaber"] = "0";
                    }
                    else
                    {
                        row["MontoDebe"] = "0";
                        row["MontoHaber"] = loList[i].ImporteSoles.ToString();
                    }
                }

                row["CanalContableID"] = loList[i].CanalContableID;
                row["EmpresaID"] = loList[i].EmpresaID;
                row["TipoDocumentoID"] = loList[i].TipoDocumentoID;
                row["ProyectoID"] = loList[i].ProyectoID;
                row["Dia"] = loList[i].Dia;
                row["Referencia"] = loList[i].Referencia;

                if (loList[i].FechaEmision == null)
                    row["FechaEmision"] = DBNull.Value;
                else
                    row["FechaEmision"] = loList[i].FechaEmision; 

              //  row["FechaEmision"] = loList[i].FechaEmision;
                if (loList[i].FechaVencimiento == null)
                    row["FechaVencimiento"] = DBNull.Value;
                else
                    row["FechaVencimiento"] = loList[i].FechaVencimiento; ;

                row["AreaID"] = loList[i].AreaID;
                row["NumeroDocumento"] = loList[i].NumeroDocumento;
                row["TransaccionDocumentoID"] = loList[i].TransaccionDocumentoID;
                row["FlujoCajaID"] = loList[i].FlujoCajaID;
                row["PlanCuentaID"] = loList[i].PlanCuentaID;
                row["AsientoContableDetalleIDTransferencia"] = loList[i].AsientoContableDetalleIDTransferencia;
                row["PeriodoID"] = loList[i].PeriodoID;

                row["CanalContableIDNombre"] = loList[i].CanalContableIDNombre;
                row["EmpresaIDNombre"] = loList[i].EmpresaIDRuc;
                row["TipoDocumentoIDNombre"] = loList[i].TipoDocumentoIDNombre;
                row["ProyectoIDNombre"] = loList[i].ProyectoIDNombre;
                row["AreaIDNombre"] = loList[i].AreaIDNombre;

                if (loList[i].FlujoCajaIDNombre.Length > 10)
                {
                    row["FlujoCajaIDNombre"] = loList[i].FlujoCajaIDNombre.Substring(0, 10) + "...";
                }
                else
                {
                    row["FlujoCajaIDNombre"] = loList[i].FlujoCajaIDNombre;
                }

                
                row["PlanCuentaIDNombre"] = loList[i].PlanCuentaIDNombre;
                row["Transferencia"] = loList[i].Transferencia;

/* FRANCO */ // row["TipoCambio"] = Convert.ToDecimal(txtTipoCambio.Text);
/* FRANCO *///  row["Moneda"] = Convert.ToInt32(cbxMonda.SelectedValue);
                row["TipoConversionMonedaID"] = loList[i].TipoConversionMonedaID;
                row["TipoCambio"] = loList[i].TipoCambio;
                row["Moneda"] = loList[i].MonedaID;
                //se resta para que cuadre en numero de items (0 soles, 1 dolares) con los IDs de moneda (1 Soles 2 Dolares)
                //row["MonedaNombre"] = cbxMonda.Items[loList[i].MonedaID - 1].Text;
                
                //Diego 11/09/2013
                if (loList[i].MonedaID == 1)
                {
                    row["MonedaNombre"] = "Soles";
                }
                else
                {
                    row["MonedaNombre"] = "Dolares";
                }
                //Diego 11/09/2013    
                
                row["Estado"] = "C";

                row["ImporteSoles"] = loList[i].ImporteSoles;
                row["ImporteDolares"] = loList[i].ImporteDolares;

                row["ImporteAnteriorSoles"] = loList[i].ImporteSoles;
                row["ImporteAnteriorDolares"] = loList[i].ImporteDolares;

                row["UnidadNegocioID_1"] = loList[i].UnidadNegocioID_1;
                row["ImporteSoles_1"] = loList[i].ImporteSoles_1;
                row["ImporteDolares_1"] = loList[i].ImporteDolares_1;
                row["NombreUnidadNegocio_1"] = loList[i].NombreUnidadNegocio_1;
                row["Participacion_1"] = 100;
                //DIEGO 28/08/2013
                row["SegmentoID"] = loList[i].SegmentoID;
                row["PaisID"] = loList[i].PaisID;
                row["PaqueteTOID"] = loList[i].PaqueteTOID;
                row["PeriodoGPA"] = loList[i].PeriodoGPA;
                row["NombreMedioPago"] = loList[i].NombreMedioPago;
                row["NombrePlanCuentaCaja"] = loList[i].NombrePlanCuentaCaja;
                //FIN DIEGO 28/08/2013
                //DIEGO 29/10/2014
                row["MedioPAgoID"] = loList[i].MedioPagoID;
                row["NroOperacion"] = loList[i].NroOperacion;
                //FIN DIEGO 29/10/2014
                ((DataTable)Session["DtDetalleAsiento"]).Rows.Add(row);
            }
        }

        private void EliminaAUN( Int32 ID_AUN)
        {
            for (int i = 0; i < Cls_Propiedades.TempAsientoDetalleAUN.Count; i++)
            {
                if (Cls_Propiedades.TempAsientoDetalleAUN[i].UnidadNegocioID == ID_AUN)
                {
                    Cls_Propiedades.TempAsientoDetalleAUN.RemoveAt(i);
                    break;
                }
            }
        }  
    /*FRANCO*/
    /***
    * faltaba un metodo para saber la unidadnegocioId a partir del nombre.
    */
        //private void EliminaAUN(String Nombre_AUN)
        //{
        //    for (int i = 0; i < Cls_Propiedades.TempAsientoDetalleAUN.Count; i++)
        //    {
        //        if (Cls_Propiedades.TempAsientoDetalleAUN[i].BEUnidadesDeNegocio.NombreUnidadNegocio.Equals(Nombre_AUN))
        //        {
        //            Cls_Propiedades.TempAsientoDetalleAUN.RemoveAt(i);
        //            break;
        //        }
        //    }
        //} 



        public void cbxPlanes_CheckedChanged(object sender, EventArgs e)
        {
            if (!txtPlanCuenta.Text.Equals("") && cbxPlanes.Checked==true)
            {
                txtPlanCuenta.ReadOnly = true;

            }
            if (!txtPlanCuenta.Text.Equals("") && cbxPlanes.Checked == false)
            {
                txtPlanCuenta.Text = "";
                txtPlanCuenta.ReadOnly = false;
            }
            else if (txtPlanCuenta.Text.Equals(""))
            {
                txtPlanCuenta.ReadOnly = false;
                cbxPlanes.Checked = false;
                showMessage("Debe llenar la casilla del plan de cuentas antes de congelarla");
            }
            
        }


        protected void btnEmpresa_Click1(object sender, ImageClickEventArgs e)
        {
            String PlanCuentaID = Session["PCID"].ToString().Trim();
            BLPlanDeCuentas objBLPlanDeCuentas = new BLPlanDeCuentas();


            // String Categoria = ViewState["CategoriaId"].ToString(); //objBLPlanDeCuentas.fnSelPlanDeCuentasDin("PlanCuentaID=" + PlanCuentaID + " and pdc.EstablecimientoID=" + Session["EmpresaID"].ToString().Trim(), "CodigoPlanCuenta", 0)[0].CategoriaID.ToString();

            //  ScriptManager.RegisterStartupScript(this, this.GetType(), "", "openWinE('" + txtEmpresa.Text + "','" + Categoria + "');", true);
            ScriptManager.RegisterStartupScript(this, this.GetType(), "", "openWinE('" + txtEmpresa.Text + "','" + null + "');", true);
        }

        protected void btn_buscar_paquete_Click(object sender, ImageClickEventArgs e)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "", "openWinP();", true);
        }

       
      
}