/// <summary>
        /// Realizar liquidacion
        /// </summary>
        /// <param name="co"></param>
        /// <param name="ordersChain"></param>
        protected void doLiquidation(Users user, string ordersChain, Transporters_Guides shipping, string typeLiq, Decimal _varpercepcion)
        {
            List <Order_Dtl> order = (List <Order_Dtl>)HttpContext.Current.Session[""];

            // Generar liquidación.
            string[] noOrder = Liquidations_Hdr.Gua_Mod_Liquidacion(user._bas_id, 0, "", 0, 0, "", "", order, 0, 1, ordersChain, "", 1);//  .liquidation(user._usv_co, ordersChain, shipping, typeLiq,_varpercepcion);
            if (!noOrder[0].Equals("-1"))
            {
                /*if (!string.IsNullOrEmpty(_typeLiq))
                 *  Liquidations_Hdr.updateStatusLiquidation(co, noOrder[0], _typeLiq);*/
                //enviar correo
                string verror = "";
                sbenviarcorreo(noOrder[0], ref verror);

                // Async
                //Log_Transaction.registerUserInfo(user, "CREATE LIQUIDATION:" + noOrder[0] + " STATUS:" + typeLiq);

                // Reporte de liquidacion
                string url = _pageLiquidReport + "?noLiq=" + noOrder[0] + "&typeLiq=" + typeLiq;//"?NoOrder=" + noOrder + "&TypeReport=2";
                //
                Response.Redirect(url);
            }
            else
            {
                string script = "closeDialogLoad()";
                System.Web.UI.ScriptManager.RegisterStartupScript(upMsg, Page.GetType(), "CloseDialog", script, true);
                msnMessage.LoadMessage("Error en la generación de la liquidación; intente de nuevo." + noOrder[1], UserControl.ucMessage.MessageType.Error);
            }
        }
        public static object ajaxSetShipping(string name, string phone, string movil, string shippingAdd, string shippingBlock, string city, string depto)
        {
            Transporters_Guides shipping = new Transporters_Guides
            {
                _tgv_name_cust   = name,
                _tgv_phone_cust  = phone,
                _tgv_movil_cust  = movil,
                _tgv_shipp_add   = shippingAdd,
                _tgv_shipp_block = shippingBlock,
                _tgv_city        = city,
                _tgv_depto       = depto
            };

            HttpContext.Current.Session["ShippingInfoObj"] = shipping;

            return(new object());
        }
        //#endregion

        #region < Funciones de inicio >

        /// <summary>
        /// Load de la pagina
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            // Vencimiento de sesion
            if (Session[Constants.NameSessionUser] == null)
            {
                Utilities.logout(Page.Session, Page.Response);
            }
            else
            {
                _user = (Users)Session[Constants.NameSessionUser];
            }

            if (!IsPostBack)
            {
                Session["codigo_promotor"]           = null;
                Session["aplica_percepcion_cliente"] = null;
                h_numConfigPagoPOS.Value             = ConfigurationManager.AppSettings["ID_Num_Tarjeta_POS"];
                hdestado.Value                = "0";
                Session[_nameSessionData]     = new object();
                Session[_nameSessionShipTo]   = new Transporters_Guides();
                Session[_nameSessionCustomer] = new Coordinator();

                if ((_user._usu_tip_id == "02"))
                {
                    this.formForCustomer();
                }
                else
                {
                    this.formForEmployee();
                }

                if (_user._usu_flete != "1")
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "invocarfuncion", "ocultarTab();", true);
                }

                txtDateStart.Text = DateTime.Today.ToString("dd/MM/yyyy");
                txtDateEnd.Text   = DateTime.Today.ToString("dd/MM/yyyy");

                //if (_user._usv_employee)
                //    this.formForEmployee();
                //else if (_user._usv_customer)
                //    this.formForCustomer();
            }
        }
        /// <summary>
        /// Generación de nueva liquidación
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btCreateLiq_Click(object sender, EventArgs e)
        {
            Transporters_Guides shipping = (Transporters_Guides)Session[_nameSessionShipTo];
            string typeLiq = string.Empty;

            if (ConfigLiq.getTypeLiqRc())
            {
                typeLiq = Constants.IdStatusLiqRecolCed;
                shipping._tgn_transport = Constants.IdTypeTransportPerson;
            }
            else
            {
                typeLiq = string.Empty;
                shipping._tgn_transport = decimal.Zero;
                if (ConfigLiq.getConfigShipping())
                {
                    shipping._configShipping = true;
                }
                else
                {
                    shipping._configShipping = false;
                }
            }

            string ordersChain = string.Empty;

            getGvCheckRows(out ordersChain);

            string articulo = "";
            string talla    = "";



            if (!string.IsNullOrEmpty(ordersChain))
            {
                bool valida_pedido = ordersChain.Contains(",");

                if (valida_pedido)
                {
                    msnMessage.LoadMessage("Solo Puedes Seleccionar un pedido", UserControl.ucMessage.MessageType.Error);
                    string script = string.Empty;
                    script += "closeDialogLoad();scrollTopOfPage();";
                    System.Web.UI.ScriptManager.RegisterStartupScript(upMsg, Page.GetType(), "CloseDialog", script, true);
                    return;
                }

                if (!(Liquidations_Hdr.fvalidastockpedido(ordersChain, ref articulo, ref talla)))
                {
                    msnMessage.LoadMessage("No se ha generado la liquidación, porque no hay stock en el Producto: " + articulo + " Talla: " + talla + " ; por favor edite el pedido para generar su liquidacion", UserControl.ucMessage.MessageType.Error);
                    string script = string.Empty;
                    script += "closeDialogLoad();scrollTopOfPage();";
                    System.Web.UI.ScriptManager.RegisterStartupScript(upMsg, Page.GetType(), "CloseDialog", script, true);
                    return;
                }
            }

            if (!string.IsNullOrEmpty(ordersChain))
            {
                doLiquidation(_user, ordersChain, shipping, typeLiq, -1);
            }
            else
            {
                msnMessage.LoadMessage("No ha seleccionado ningún pedido borrador para generar la liquidación; debe al menos seleccionar uno.", UserControl.ucMessage.MessageType.Error);
                string script = string.Empty;
                script += "closeDialogLoad();scrollTopOfPage();";
                System.Web.UI.ScriptManager.RegisterStartupScript(upMsg, Page.GetType(), "CloseDialog", script, true);
            }
        }
        /// <summary>
        /// Mostrar informacion del cliente
        /// </summary>
        /// <param name="dsCustomer"></param>
        protected void paintInfoCustomer(DataSet dsCustomer)
        {
            msnMessage.HideMessage();
            if (dsCustomer == null || dsCustomer.Tables[0].Rows.Count <= 0)
            {
                return;
            }

            pnlCustInfo.Visible = true;
            DataRow dRow = dsCustomer.Tables[0].Rows[0];

            Session["aplica_percepcion_cliente"] = Convert.ToBoolean(dRow["aplica_percepcion"].ToString());

            Coordinator cust = new Coordinator
            {
                //_co = dRow["cov_co"].ToString(),
                _commission = Convert.ToDecimal(dRow["Con_Fig_PorcDesc"]),
                _idCust     = Convert.ToDecimal(dRow["bas_id"]),
                //_idWare = dRow["cov_warehouseid"].ToString(),
                _taxRate = Convert.ToDecimal(dRow["Con_Fig_Igv"]),
                _commission_POS_visaUnica = Convert.ToDecimal(dRow["Con_Fig_PorcDescPos"]),
                _percepcion        = Convert.ToDecimal(dRow["Con_Fig_Percepcion"]),
                _email             = dRow["bas_correo"].ToString(),
                _nombrecompleto    = dRow["nombrecompleto"].ToString(),
                _usuTipo           = dRow["Bas_Per_Tip_Id"].ToString(),
                _aplica_percepcion = Convert.ToBoolean(dRow["aplica_percepcion"].ToString())
            };

            Session[_nameSessionCustomer] = cust;

            Transporters_Guides shipping = new Transporters_Guides
            {
                _tgv_name_cust  = dRow["nombrecompleto"].ToString(),
                _tgv_phone_cust = dRow["Bas_Telefono"].ToString(),
                _tgv_movil_cust = dRow["Bas_Celular"].ToString(),
                _tgv_shipp_add  = dRow["Bas_Direccion"].ToString(),
                _tgv_city       = dRow["dis_descripcion"].ToString(),
                _tgv_depto      = dRow["dis_dep_id"].ToString()
            };

            Session[_nameSessionShipTo] = shipping;

            // Documento
            lblDocument.Text = dRow["Bas_Documento"].ToString();
            // Nombre completo
            lblFullName.Text    = dRow["NombreCompleto"].ToString();
            lblFullName.ToolTip = dRow["NombreCompleto"].ToString();
            // Dirección y telefono
            lblDirPhones.Text    = dRow["Bas_Direccion"].ToString() + " - " + dRow["Bas_Telefono"].ToString() + " - " + dRow["Bas_Celular"].ToString();
            lblDirPhones.ToolTip = dRow["Bas_Direccion"].ToString() + " - " + dRow["Bas_Telefono"].ToString() + " - " + dRow["Bas_Celular"].ToString();
            // E-Mail
            lblMail.Text    = (string.IsNullOrEmpty(dRow["bas_correo"].ToString()) ? "Sin correo" : "<a href='mailto:" + dRow["bas_correo"].ToString() + "' target='_Blank'>" + dRow["bas_correo"].ToString() + "</a>");
            lblMail.ToolTip = "Clcik sobre la dirección de correo electronico para enviar un mensaje.";
            // Ubicacion customer
            lblUbication.Text    = dRow["Ubicacion"].ToString();
            lblUbication.ToolTip = dRow["Ubicacion"].ToString();

            lblagencia.Text    = dRow["Bas_Agencia"].ToString();
            lblagencia.ToolTip = dRow["Bas_Agencia"].ToString();

            lbldestino.Text    = dRow["Bas_Destino"].ToString();
            lbldestino.ToolTip = dRow["Bas_Destino"].ToString();

            // Logistica
            lblLogistica.Text = dRow["Are_Descripcion"].ToString();// +", " + dRow["arv_description"].ToString();

            lblasesor.Text = dRow["asesor"].ToString();

            lblPremio.Text = "Sin premio";

            lblPremio.Text = dRow["Premio"].ToString();
        }