using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LLNet.GUI;

namespace LLNet.Tienda.MainForms.Forms.Express
{
    public partial class FrmExpress : GUI.FormBases.frmBase
    {
        string CnxTienda, DescripTienda, CnxTiendaExp, DescripTiendaExp, DefaultConnNameT, DefaultConnNameE, bdga, maxkilometros;
        private DataSet dsd;

        public FrmExpress()
        {
            InitializeComponent();

            bdga = Utils.Helpers.ObjToStr(GUI.CApp.GetParam("BREE"));
            ConexionExpress(true);
            
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            maxkilometros = Utils.Helpers.ObjToStr(GUI.CApp.GetParam("MDKR"));
            lblLeyenda.Text = "(La entrega a domicilio en RURAL solo llega a " + maxkilometros + " kilómetros de la tienda más cercana)";

            LlenarCombBox();
            mProvincias();
                 
        }

        #region --------------Conexiones-------------------
        
        private void ConexionExpress(bool tipo)
        {
            if (tipo)
            {
                this.CnxTienda = GUI.CApp.conexion;
                this.DescripTienda = GUI.CApp.cnnDescription;
                this.DefaultConnNameT = GUI.CApp.bll.DefaultConnName;
            }
            this.CnxTiendaExp = "Oracle.EKONOAPP";
            this.DescripTiendaExp = "EKONOAPP";
            //this.CnxTiendaExp = "Oracle.MARCHAMOS";
            //this.DescripTiendaExp = "MARCHAMOS";
            this.DefaultConnNameE = CnxTiendaExp;

            GUI.CApp.conexion = CnxTiendaExp;
            GUI.CApp.cnnDescription = DescripTiendaExp;
            GUI.CApp.bll.DefaultConnName = CnxTiendaExp;
            
        }

        private void ConexionLocal()
        {
            GUI.CApp.conexion = CnxTienda;
            GUI.CApp.cnnDescription = DescripTienda;
            GUI.CApp.bll.DefaultConnName = CnxTienda;
        }
        
        #endregion

        private void LlenarCombBox()
        {
            iCBoxOrigen.Properties.Items.Clear();
            iCBoxDestino.Properties.Items.Clear();
            try
            {
                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("pBREE", bdga);
            
                DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "ORIGENEXP",qp);

                foreach (DataRow Fila in dsB.Tables[0].Rows)
                {
                    DevExpress.XtraEditors.Controls.ComboBoxItem item;
                    item = new DevExpress.XtraEditors.Controls.ImageComboBoxItem(Fila[0].ToString(), Fila[1].ToString());
                    iCBoxOrigen.Properties.Items.Add(item);
                }

                dsd = GUI.CApp.bll.getDataSet("PDV", "DESTINOSEXP");

                foreach (DataRow Fila in dsd.Tables[0].Rows)
                {
                    DevExpress.XtraEditors.Controls.ComboBoxItem item;
                    item = new DevExpress.XtraEditors.Controls.ImageComboBoxItem(Fila[0].ToString(), Fila[1].ToString());
                    iCBoxDestino.Properties.Items.Add(item);
                }
                if (iCBoxOrigen.Properties.Items.Count > 0)
                    iCBoxOrigen.SelectedIndex = 0;

                if (iCBoxDestino.Properties.Items.Count > 0)
                    iCBoxDestino.SelectedIndex = 0;
            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            }
            
        }

        private void valtxtcompl()
        {
            if (iCBoxOrigen.Properties.Items[iCBoxOrigen.SelectedIndex].Value.ToString() == string.Empty)
            {
                GUI.CApp.ShowMessage("Debe seleccionar el origen", "ERROR", true);
                return;
            }
            if (iCBoxDestino.Properties.Items[iCBoxDestino.SelectedIndex].Value.ToString() == string.Empty)
            {
                GUI.CApp.ShowMessage("Debe seleccionar el destino", "ERROR", true);
                return;
            }
            if (txtnombr.Text.Trim() == string.Empty)
            {
                GUI.CApp.ShowMessage("Debe ingresar el nombre de quien recibe", "ERROR", true);
                return;
            }
            if (txtnombree.Text.Trim() == string.Empty)
            {
                GUI.CApp.ShowMessage("Debe ingresar el nombre de quien envía", "ERROR", true);
                return;
            }
            if (txtapel1e.Text.Trim() == string.Empty || txtapel2e.Text.Trim() == string.Empty)
            {
                GUI.CApp.ShowMessage("Debe ingresar el apellido de quien envía", "ERROR", true);
                return;
            }
            if (txtapel1r.Text.Trim() == string.Empty || txtapel2r.Text.Trim() == string.Empty)
            {
                GUI.CApp.ShowMessage("Debe ingresar el apellido de quien recibe", "ERROR", true);
                return;
            }
            if (txttele.Text.Trim() == string.Empty)
            {
                GUI.CApp.ShowMessage("Debe ingresar el teléfono de quien envía", "ERROR", true);
                return;
            }
            if (txttelr.Text.Trim() == string.Empty)
            {
                GUI.CApp.ShowMessage("Debe ingresar el teléfono de quien recibe", "ERROR", true);
                return;
            }
            if (txtmonto.Text.Trim() == string.Empty)
            {
                GUI.CApp.ShowMessage("Debes calcular antes de cotizar", "ERROR", true);
                return;
            }
            if (txtpeso.Text.Trim() == string.Empty)
            {
                GUI.CApp.ShowMessage("Ingresa el peso", "ERROR", true);
                return;
            }
            if (txtcede.Text.Trim() == string.Empty)
            {
                GUI.CApp.ShowMessage("Debe ingresar la cédula de quien envía", "ERROR", true);
                return;
            }
            if (txtcedr.Text.Trim() == string.Empty)
            {
                GUI.CApp.ShowMessage("Debe ingresar la cédula de quien recibe", "ERROR", true);
                return;
            }            
        }


        private void cotizar()
        {
            /*PBODORIGEN&&'  , '&&PBODDESTINO&&'  , 
                     '&&PNOMBCLI_E&&'  , '&&PNOMBCLI_R&&'  , '&&PAPEL1CLI_E&&'  , 
                     '&&PAPEL2CLI_E&&'  , '&&PAPEL1CLI_R&&'  , '&&PAPEL2CLI_R&&'  , 
                     '&&PTELEFCLI_E&&'  , '&&PTELEFCLI_R&&'  , &&PMONTO&& , &&PPESO&& , 
                     '&&PCREADO_POR */

            string varOrigen = iCBoxOrigen.Properties.Items[iCBoxOrigen.SelectedIndex].Value.ToString();
            string varDest = iCBoxDestino.Properties.Items[iCBoxDestino.SelectedIndex].Value.ToString();
            
            //Almacena los datos de la cotización realizada
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("PBODORIGEN", varOrigen);
            qp.AddReplaceParam("PBODDESTINO", varDest);
            qp.AddReplaceParam("PNOMBCLI_E", txtnombree.Text);
            qp.AddReplaceParam("PNOMBCLI_R", txtnombr.Text);
            qp.AddReplaceParam("PAPEL1CLI_E", txtapel1e.Text);
            qp.AddReplaceParam("PAPEL1CLI_R", txtapel1r.Text);
            qp.AddReplaceParam("PAPEL2CLI_E", txtapel2e.Text);
            qp.AddReplaceParam("PAPEL2CLI_R", txtapel2r.Text);
            qp.AddReplaceParam("PTELEFCLI_E", txttele.Text);
            qp.AddReplaceParam("PTELEFCLI_R", txttelr.Text);
            qp.AddReplaceParam("PMONTO", txtmonto.Text);
            qp.AddReplaceParam("PPESO", txtpeso.Text);
            qp.AddReplaceParam("PCREADO_POR", GUI.CApp.usuario);
            qp.AddReplaceParam("PCEDCLI_E", txtcede.Text);
            qp.AddReplaceParam("PCEDCLI_R", txtcedr.Text);            
            if (rBtnTienda.Checked)
            {
                qp.AddReplaceParam("PTIPO", "T");
            }
            else
            {
                qp.AddReplaceParam("PTIPO", "D");
            }
            qp.AddReplaceParam("PDIRECCION", rTxtBoxDirec.Text);
            // Llama el procedimiento que almacena los datos 
            GUI.CApp.bll.ExecuteSql("COTIZARUMEXP", qp, "PDV");

            CApp.ShowMessage("Cotización almacenada con éxito", "Ekono Express", true);
            DesHabBtn();
            Limpiarcotizar();
            txtmonto.Text = string.Empty;
        }

        private void Calcular()
        {
            try
            {//PORIGEN&&','&&PDESTINO&&','&&PPESO

                string varOrigen = iCBoxOrigen.Properties.Items[iCBoxOrigen.SelectedIndex].Value.ToString();
                string varDest = iCBoxDestino.Properties.Items[iCBoxDestino.SelectedIndex].Value.ToString();
                //varInstit = iCBoxAgua_Inst.Properties.Items[iCBoxAgua_Inst.SelectedIndex].Description.ToString();

                //iCBoxAgua_Conv.Properties.Items.Clear();
                //iCBoxAgua_Conv.SelectedIndex = -1;

                /*ANTES
                Utils.QueryParams qp = new Utils.QueryParams();
                qp.AddReplaceParam("PORIGEN",varOrigen);
                qp.AddReplaceParam("PDESTINO", varOrigen);
                qp.AddReplaceParam("PPESO", txtpeso.Text);
                DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "CALCULOSEXP",qp);
                */
                Utils.QueryParams qp = new Utils.QueryParams();
                qp.AddReplaceParam("PORIGEN", varOrigen);
                qp.AddReplaceParam("PDESTINO", varDest);
                qp.AddReplaceParam("PPESO", txtpeso.Text);
                if (rBtnTienda.Checked)
                {
                    qp.AddReplaceParam("P_TIPO_DEST", "T");
                }
                else
                {
                    qp.AddReplaceParam("P_TIPO_DEST", "D");
                }

                DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "CALCULOSUMEXP", qp);

                foreach (DataRow Fila in dsB.Tables[0].Rows)
                {
                    if (Fila[0].ToString() == "-1")
                    {
                        GUI.CApp.ShowMessage("Peso Mayor al Permitido", "ERROR", true);
                    }
                    else
                    {
                        txtdias.Text = Fila[1].ToString();
                        txtmonto.Text = Fila[0].ToString();
                    }
                }

            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            }
        }

        private void facturar()
        {
            /*EXPRESS_CAMBIOESTADO( &&pOrden&&, '&&pEstado&&', '&&pUsername*/

            //Actualiza los datos de la orden
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("pOrden", txtIdOrdenC.Text);
            //qp.AddReplaceParam("pEstado", "F"); //F = Facturado
            qp.AddReplaceParam("pFactura", txtSerie.Text.Trim() + "-" + txtnodoc.Text.Trim()); //F = Factura
            qp.AddReplaceParam("pUsername", GUI.CApp.usuario);
            // Llama el procedimiento que almacena los datos 
            GUI.CApp.bll.ExecuteSql("ESTADOFACTEXP", qp, "PDV");

            CApp.ShowMessage("Facturado almacenado con éxito", "Ekono Express", true);
            txtSerie.Text = string.Empty;
            txtnodoc.Text = string.Empty;
        }
        
        private void EntregarCliente()
        {
            /*EXPRESS_CAMBIOESTADO( &&pOrden&&, '&&pEstado&&', '&&pUsername*/

            //Actualiza los datos de la orden
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("pOrden", txtidei.Text);
            //qp.AddReplaceParam("pEstado", "F"); //F = Facturado
            qp.AddReplaceParam("pEstado", "EC"); //EC = Entregado Cliente
            qp.AddReplaceParam("pUsername", GUI.CApp.usuario);
            // Llama el procedimiento que almacena los datos 
            GUI.CApp.bll.ExecuteSql("CESTADOEXP", qp, "PDV");

            CApp.ShowMessage("Entregado al cliente almacenado con éxito", "Ekono Express", true);
        }

        private void Reversar()
        {
            /*EXPRESS_CAMBIOESTADO( &&pOrden&&, '&&pEstado&&', '&&pUsername*/

            //Actualiza los datos de la orden
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("pOrden", txtidei.Text);
            //qp.AddReplaceParam("pEstado", "F"); //F = Facturado
            qp.AddReplaceParam("pEstado", "EI"); //EI = Entregado Tienda
            qp.AddReplaceParam("pUsername", GUI.CApp.usuario);
            // Llama el procedimiento que almacena los datos 
            GUI.CApp.bll.ExecuteSql("CESTADOEXP", qp, "PDV");

            CApp.ShowMessage("Reversar Entregado al cliente realizado con éxito", "Ekono Express", true);
        }

        #region mBuscarNumOrden
        /// <summary>
        /// Se realiza la búsqueda de la factura del cliente por la opción escogida por el usuario
        /// </summary>
        private void mBuscarNumOrden()
        {
            Utils.QueryParams vQP = new LLNet.Utils.QueryParams();
            vQP.AddReplaceParam("pDestino", bdga); //BODEGA

            if (this.cbxOpcionesBusqueda.SelectedIndex >= 0)
            {
                if (cbxOpcionesBusqueda.Text == "IDORDEN")
                {
                    vQP.AddReplaceParam("FILTRO", "idorden = '" + txtBusqueda.Text + "'");
                }
                else
                {
                    vQP.AddReplaceParam("FILTRO", "guia = '" + txtBusqueda.Text + "'");
                }
            }

            dsd = GUI.CApp.bll.getDataSet("PDV", "ENTREGTIENDAEXPF", vQP);

            if (dsd.Tables.Count > 0)
            {
                gdCtrlEntrT.DataSource = dsd.Tables[0];

                if (dsd.Tables[0].Rows.Count > 0)
                {

                    //inicio ************

                    foreach (int handle in gdVEntrT.GetSelectedRows())
                    {
                        if (gdVEntrT.RowCount > 0 && gdVEntrT.Columns.Count > 0)
                        {
                            txtidei.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[0]));
                            txtclienteei.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[5]));
                            txtmontoei.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[8]));
                            txtguiaei.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[1]));
                            txtEstado.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[10]));
                        }
                    }

                    //FIN ***************              
                }
                else
                {
                    gdCtrlEntrT.DataSource = null;
                    gdCtrlEntrT.Refresh();
                    txtidei.Text = string.Empty;
                    txtclienteei.Text = string.Empty;
                    txtmontoei.Text = string.Empty;
                    txtguiaei.Text = string.Empty;
                    txtEstado.Text = string.Empty;
                }
            }
            else
            {
                gdCtrlEntrT.DataSource = null;
                gdCtrlEntrT.Refresh();
                txtidei.Text = string.Empty;
                txtclienteei.Text = string.Empty;
                txtmontoei.Text = string.Empty;
                txtguiaei.Text = string.Empty;
                txtEstado.Text = string.Empty;
            }
        }
        #endregion

        private void LlenarCotizaciones()
        {
            gdCtrlCotizado.DataSource = null;
            gdCtrlCotizado.Refresh();
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("pUsuario", GUI.CApp.usuario); //Usuario
            //qp.AddReplaceParam("pJornada", Program.Jornada.ToString()); //Jornada
            //Consulta cotizaciones
            DataSet dsE = GUI.CApp.bll.getDataSet("PDV", "COTIZEXP", qp);

            if (dsE.Tables.Count > 0)
            {
                gdCtrlCotizado.DataSource = dsE.Tables[0];

                if (dsE.Tables[0].Rows.Count > 0)
                {

                    //inicio ************
                    foreach (int handle in gdVCotizar.GetSelectedRows())
                    {
                        if (gdVCotizar.RowCount > 0 && gdVCotizar.Columns.Count > 0)
                        {
                            txtIdOrdenC.Text = Convert.ToString(gdVCotizar.GetRowCellValue(handle, gdVCotizar.Columns[0]));
                            txtCliEnvC.Text = Convert.ToString(gdVCotizar.GetRowCellValue(handle, gdVCotizar.Columns[4]));
                            txtMontoC.Text = Convert.ToString(gdVCotizar.GetRowCellValue(handle, gdVCotizar.Columns[7]));
                        }
                    }

                    //FIN ***************
                }
                else
                {
                    gdCtrlCotizado.DataSource = null;
                    gdCtrlCotizado.Refresh();
                    txtSerie.Text = string.Empty;
                    txtnodoc.Text = string.Empty;
                    txtIdOrdenC.Text = string.Empty;
                    txtCliEnvC.Text = string.Empty;
                    txtMontoC.Text = string.Empty;
                }
            }
            else
            {
                gdCtrlCotizado.DataSource = null;
                gdCtrlCotizado.Refresh();
                txtSerie.Text = string.Empty;
                txtnodoc.Text = string.Empty;
                txtIdOrdenC.Text = string.Empty;
                txtCliEnvC.Text = string.Empty;
                txtMontoC.Text = string.Empty;
            }
        }

        
        #region mGenerarGuia
        private void mGenerarGuia()
        {
            try
            {
                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("PORDEN", txtIdOrdenF.Text); // id de la orden facturada
                qp.AddReplaceParam("pUsername", GUI.CApp.usuario); // usuario
                // Llama el procedimiento que crea la guía 
                GUI.CApp.bll.ExecuteSql("GGUIAEXP", qp, "PDV");

                // selecciona el número de guía
                string v_guia = Convert.ToString(GUI.CApp.bll.GetSingleValue("GUIAEXP", qp, "PDV"));

                GUI.CApp.ShowMessage("El registro de la guía " + v_guia + " fue exitoso.", "Guía ekono Express", true);

                FrmImprGuia fipf = new FrmImprGuia(v_guia, txtIdOrdenF.Text);
                fipf.Show();
            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            }                
        }

        #endregion


        private void LlenarFacturados()
        {
            gdCtrlFacturado.DataSource = null;
            gdCtrlFacturado.Refresh();
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("pUsuario", GUI.CApp.usuario); //Usuario
            //qp.AddReplaceParam("pJornada", Program.Jornada.ToString()); //Jornada
            //Consulta cotizaciones
            DataSet dsE = GUI.CApp.bll.getDataSet("PDV", "FACTEXP", qp);

            if (dsE.Tables.Count > 0)
            {
                gdCtrlFacturado.DataSource = dsE.Tables[0];

                if (dsE.Tables[0].Rows.Count > 0)
                {

                    //inicio ************
                    foreach (int handle in gdVFacturar.GetSelectedRows())
                    {
                        if (gdVFacturar.RowCount > 0 && gdVFacturar.Columns.Count > 0)
                        {
                            txtIdOrdenF.Text = Convert.ToString(gdVFacturar.GetRowCellValue(handle, gdVFacturar.Columns[0]));
                            txtCliEnvF.Text = Convert.ToString(gdVFacturar.GetRowCellValue(handle, gdVFacturar.Columns[4]));
                            txtMontoF.Text = Convert.ToString(gdVFacturar.GetRowCellValue(handle, gdVFacturar.Columns[7]));
                        }
                    }

                    //FIN ***************
                }
                else
                {
                    gdCtrlFacturado.DataSource = null;
                    gdCtrlFacturado.Refresh();
                    txtIdOrdenF.Text = string.Empty;
                    txtCliEnvF.Text = string.Empty;
                    txtMontoF.Text = string.Empty;
                }
            }
            else
            {
                gdCtrlFacturado.DataSource = null;
                gdCtrlFacturado.Refresh();
                txtIdOrdenF.Text = string.Empty;
                txtCliEnvF.Text = string.Empty;
                txtMontoF.Text = string.Empty;
            }
        }

        private void LlenarEntregadoTienda()
        {
            gdCtrlEntrT.DataSource = null;
            gdCtrlEntrT.Refresh();

            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("pDestino", bdga); //BODEGA
            //qp.AddReplaceParam("pJornada", Program.Jornada.ToString()); //Jornada
            //Consulta cotizaciones
            DataSet dsE = GUI.CApp.bll.getDataSet("PDV", "ENTREGTIENDAEXP", qp);

            if (dsE.Tables.Count > 0)
            {
                gdCtrlEntrT.DataSource = dsE.Tables[0];

                if (dsE.Tables[0].Rows.Count > 0)
                {

                    //inicio ************

                    foreach (int handle in gdVEntrT.GetSelectedRows())
                    {
                        if (gdVEntrT.RowCount > 0 && gdVEntrT.Columns.Count > 0)
                        {
                            txtidei.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[0]));
                            txtclienteei.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[5]));
                            txtmontoei.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[8]));
                            txtguiaei.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[1]));
                            txtEstado.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[10]));
                        }
                    }

                    //FIN ***************              
                }
                else
                {
                    gdCtrlEntrT.DataSource = null;
                    gdCtrlEntrT.Refresh();
                    txtidei.Text = string.Empty;
                    txtclienteei.Text = string.Empty;
                    txtmontoei.Text = string.Empty;
                    txtguiaei.Text = string.Empty;
                    txtEstado.Text = string.Empty;
                }
            }
            else
            {
                gdCtrlEntrT.DataSource = null;
                gdCtrlEntrT.Refresh();
                txtidei.Text = string.Empty;
                txtclienteei.Text = string.Empty;
                txtmontoei.Text = string.Empty;
                txtguiaei.Text = string.Empty;
                txtEstado.Text = string.Empty;
            }
        }

        private void LlenarGuiasGeneradas()
        {

            gdCtrlGuiaRI.DataSource = null;

            gdCtrlGuiaRI.Refresh();
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("pUsuario", GUI.CApp.usuario); //Usuario
            //qp.AddReplaceParam("pJornada", Program.Jornada.ToString()); //Jornada
            //Consulta cotizaciones

            DataSet dsE = GUI.CApp.bll.getDataSet("PDV", "GUIASEXP", qp);
            if (dsE.Tables.Count > 0)
            {
                gdCtrlGuiaRI.DataSource = dsE.Tables[0];

                if (dsE.Tables[0].Rows.Count > 0)
                {

                    //inicio ************

                    foreach (int handle in gdVGuiaRI.GetSelectedRows())
                    {
                        if (gdVGuiaRI.RowCount > 0 && gdVGuiaRI.Columns.Count > 0)
                        {
                            txtidordenRI.Text = Convert.ToString(gdVGuiaRI.GetRowCellValue(handle, gdVGuiaRI.Columns[0]));
                            txtclienteRI.Text = Convert.ToString(gdVGuiaRI.GetRowCellValue(handle, gdVGuiaRI.Columns[5]));
                            txtmontoRI.Text = Convert.ToString(gdVGuiaRI.GetRowCellValue(handle, gdVGuiaRI.Columns[8]));
                            txtguiaRI.Text = Convert.ToString(gdVGuiaRI.GetRowCellValue(handle, gdVGuiaRI.Columns[1]));
                        }
                    }

                    //FIN ***************              
                }
                else
                {
                    gdCtrlGuiaRI.DataSource = null;
                    gdCtrlGuiaRI.Refresh();
                    txtidordenRI.Text = string.Empty;
                    txtclienteRI.Text = string.Empty;
                    txtmontoei.Text = string.Empty;
                    txtguiaRI.Text = string.Empty;
                }
            }
            else
            {
                gdCtrlGuiaRI.DataSource = null;
                gdCtrlGuiaRI.Refresh();
                txtidordenRI.Text = string.Empty;
                txtclienteRI.Text = string.Empty;
                txtmontoei.Text = string.Empty;
                txtguiaRI.Text = string.Empty;
            }
        }

        private void DesHabBtn()
        {
            txtnombree.ReadOnly = true;
            txtapel1e.ReadOnly = true;
            txtapel2e.ReadOnly = true;
            txttele.ReadOnly = true;
            txtcede.ReadOnly = true;

            txtnombr.ReadOnly = true;
            txtapel1r.ReadOnly = true;
            txtapel2r.ReadOnly = true;
            txttelr.ReadOnly = true;
            txtcedr.ReadOnly = true;          
        }

        private void Limpiarcotizar()
        {
            txtmonto.Text = string.Empty;
            txtdias.Text = string.Empty;
            //txtpeso.Text = string.Empty;

            txtnombree.Text = string.Empty;
            txtapel1e.Text = string.Empty;
            txtapel2e.Text = string.Empty;
            txttele.Text = string.Empty;
            txtcede.Text = string.Empty;
            
            txtnombr.Text = string.Empty;
            txtapel1r.Text = string.Empty;
            txtapel2r.Text = string.Empty;
            txttelr.Text = string.Empty;
            txtcedr.Text = string.Empty;
        }

        private void HabBtn()
        {
            txtnombree.ReadOnly = false;
            txtapel1e.ReadOnly = false;
            txtapel2e.ReadOnly = false;
            txttele.ReadOnly = false;
            txtcede.ReadOnly = false;

            txtnombr.ReadOnly = false;
            txtapel1r.ReadOnly = false;
            txtapel2r.ReadOnly = false;
            txttelr.ReadOnly = false;
            txtcedr.ReadOnly = false;          

        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            DesHabBtn();
            ConexionLocal();
            this.Close();
        }

        private void sbtnCotizar_Click(object sender, EventArgs e)
        {
            tabControl1.SelectedIndex = 0;

        }

        private void FrmExpress_FormClosing(object sender, FormClosingEventArgs e)
        {
            ConexionLocal();
        }

        private void btnCalcular_Click(object sender, EventArgs e)
        {
            if (iCBoxDestino.Properties.Items.Count <= 0)
            {
                GUI.CApp.ShowMessage("No se encuentran Tiendas en este distrito", "Información", true);
                return;
            }
            if (txtpeso.Text.Trim() == string.Empty)
            {
                GUI.CApp.ShowMessage("Favor ingresar el peso", "ERROR", true);
            }
            else
            {
                Calcular();
                HabBtn();
            }
        }

        private void iCBoxDestino_SelectedIndexChanged(object sender, EventArgs e)
        {
            DesHabBtn();
            Limpiarcotizar();
            if (rBtnTienda.Checked)
            {
                rTxtBoxDirec.Text = dsd.Tables[0].Rows[iCBoxDestino.SelectedIndex].ItemArray[2].ToString();
            }
            else
            {
                rTxtBoxDirec.Text = string.Empty;
            }
        }

        private void txtcede_Leave(object sender, EventArgs e)
        {
            try
            {
                Utils.QueryParams qp = new Utils.QueryParams();
                qp.AddReplaceParam("PCEDULA", txtcede.Text);
                DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "CLIENTEEXP", qp);

                foreach (DataRow Fila in dsB.Tables[0].Rows)
                {
                    txtcede.Text = Fila[0].ToString();
                    txtnombree.Text = Fila[1].ToString();
                    txtapel1e.Text = Fila[2].ToString();
                    txtapel2e.Text = Fila[3].ToString();
                    txttele.Text = Fila[4].ToString();
                }
            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
            }
        }

        private void txtcedr_Leave(object sender, EventArgs e)
        {
            try
            {
                Utils.QueryParams qp = new Utils.QueryParams();
                qp.AddReplaceParam("PCEDULA", txtcedr.Text);
                DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "CLIENTEEXP", qp);

                foreach (DataRow Fila in dsB.Tables[0].Rows)
                {
                    txtcedr.Text = Fila[0].ToString();
                    txtnombr.Text = Fila[1].ToString();
                    txtapel1r.Text = Fila[2].ToString();
                    txtapel2r.Text = Fila[3].ToString();
                    txttelr.Text = Fila[4].ToString();
                }
            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            }
        }

        private void sbtnICotizar_Click(object sender, EventArgs e)
        {
            if (txtmonto.Text.Trim() == string.Empty)
            {
                CApp.ShowMessage("No se puede cotizar sin calcular", "Ekono Express", true);
            }
            else
            {
                if (iCBoxOrigen.Properties.Items[iCBoxOrigen.SelectedIndex].Value.ToString() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe seleccionar el origen", "ERROR", true);
                    return;
                }
                if (iCBoxDestino.Properties.Items[iCBoxDestino.SelectedIndex].Value.ToString() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe seleccionar el destino", "ERROR", true);
                    return;
                }
                if (txtnombr.Text.Trim() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe ingresar el nombre de quien recibe", "ERROR", true);
                    return;
                }
                if (txtnombree.Text.Trim() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe ingresar el nombre de quien envía", "ERROR", true);
                    return;
                }
                if (txtapel1e.Text.Trim() == string.Empty || txtapel2e.Text.Trim() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe ingresar el apellido de quien envía", "ERROR", true);
                    return;
                }
                if (txtapel1r.Text.Trim() == string.Empty || txtapel2r.Text.Trim() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe ingresar el apellido de quien recibe", "ERROR", true);
                    return;
                }
                if (txttele.Text.Trim() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe ingresar el teléfono de quien envía", "ERROR", true);
                    return;
                }
                if (txttelr.Text.Trim() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe ingresar el teléfono de quien recibe", "ERROR", true);
                    return;
                }
                if (txtmonto.Text.Trim() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debes calcular antes de cotizar", "ERROR", true);
                    return;
                }
                if (txtpeso.Text.Trim() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Ingresa el peso", "ERROR", true);
                    return;
                }
                if (txtcede.Text.Trim() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe ingresar la cédula de quien envía", "ERROR", true);
                    return;
                }
                if (txtcedr.Text.Trim() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe ingresar la cédula de quien recibe", "ERROR", true);
                    return;
                }
                if (rBtnDomicilio.Checked && rTxtBoxDirec.Text.Trim() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe ingresar una dirección de entrega", "ERROR", true);
                    return;
                }
                cotizar();
            }
        }

        private void sbtnPago_Click(object sender, EventArgs e)
        {
            txtSerie.Text = string.Empty;
            txtnodoc.Text = string.Empty;
            tabControl1.SelectedIndex = 1;
            LlenarCotizaciones();
        }

        private void sBtnSalir2_Click(object sender, EventArgs e)
        {
            DesHabBtn();
            ConexionLocal();
            this.Close();
        }

        private void gdVCotizar_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
                if (gdVCotizar.Columns.Count > 0)
                {
                    foreach (int handle in gdVCotizar.GetSelectedRows())
                    {                        
                        txtIdOrdenC.Text = Convert.ToString(gdVCotizar.GetRowCellValue(handle, gdVCotizar.Columns[0]));
                        txtCliEnvC.Text = Convert.ToString(gdVCotizar.GetRowCellValue(handle, gdVCotizar.Columns[4]));
                        txtMontoC.Text = Convert.ToString(gdVCotizar.GetRowCellValue(handle, gdVCotizar.Columns[7]));                                        
                    }
                }
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Ekono Express", true);
            } 
        }

        private void sBtnFacturado_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtSerie.Text.Trim() == string.Empty || txtnodoc.Text.Trim() == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe digitar los datos de la factura", "ERROR", true);
                    return;
                }
                if (txtMontoC.Text.Trim() == string.Empty )
                {
                    GUI.CApp.ShowMessage("Debe seleccionar la cotización a facturar", "ERROR", true);
                    return;
                }

                //VALIDA SI ESTA FACTURADO Y EL MONTO
                ConexionLocal();
                //PSERIE&&','&&PNODOC&&','&&PMONTO
                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("PSERIE", txtSerie.Text.Trim()); //
                qp.AddReplaceParam("PNODOC", txtnodoc.Text.Trim()); //
                qp.AddReplaceParam("PMONTO", txtMontoC.Text); //
                string valfact = Convert.ToString(GUI.CApp.bll.GetSingleValue("VALIDAFACEXP", qp, "PDV"));

                if (valfact == "1")
                {//validacion correcta
                    //se actualiza como facturada
                    ConexionExpress(false);
                    facturar();
                }
                else
                {
                    if (valfact == "-1")
                    {
                        CApp.ShowMessage("No existe la factura", "Ekono Express", true);
                    }
                    else
                    {
                        if (valfact == "-2")
                        {
                            CApp.ShowMessage("Monto diferente al facturado", "Ekono Express", true);
                        }
                        else
                        {
                            if (valfact == "-3")
                            {
                                CApp.ShowMessage("La factura ya fue utilizada", "Ekono Express", true);
                            }
                            else
                            {
                                CApp.ShowMessage("Error al validar la factura", "Ekono Express", true);
                            }
                        }
                    }   
                }
                LlenarCotizaciones();
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Ekono Express", true);
            }
            finally
            {                
                ConexionExpress(false);
            }
        }

        private void sBtnSalir3_Click(object sender, EventArgs e)
        {
            DesHabBtn();
            ConexionLocal();
            this.Close();
        }

        private void sBtnGuia_Click(object sender, EventArgs e)
        {
            tabControl1.SelectedIndex = 2;
            LlenarFacturados();
        }

        private void gdVFacturar_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
                if (gdVFacturar.Columns.Count > 0)
                {
                    foreach (int handle in gdVFacturar.GetSelectedRows())
                    {
                        txtIdOrdenF.Text = Convert.ToString(gdVFacturar.GetRowCellValue(handle, gdVFacturar.Columns[0]));
                        txtCliEnvF.Text = Convert.ToString(gdVFacturar.GetRowCellValue(handle, gdVFacturar.Columns[4]));
                        txtMontoF.Text = Convert.ToString(gdVFacturar.GetRowCellValue(handle, gdVFacturar.Columns[7]));
                    }
                }
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Ekono Express", true);
            } 
        }

        private void iCBoxOrigen_SelectedIndexChanged(object sender, EventArgs e)
        {
            DesHabBtn();
        }

        private void txtpeso_TextChanged(object sender, EventArgs e)
        {
            DesHabBtn();
            Limpiarcotizar();
        }

        private void sBtnGGuia_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtIdOrdenF.Text.Trim() == string.Empty )
                {
                    GUI.CApp.ShowMessage("Debe seleccionar la orden facturada", "ERROR", true);
                    return;
                }
                mGenerarGuia();
                LlenarFacturados();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void tsbtnRefrescar_Click(object sender, EventArgs e)
        {
            LlenarEntregadoTienda();
        }

        private void sBtnReimprimir_Click(object sender, EventArgs e)
        {
            tabControl1.SelectedIndex = 3;
            LlenarGuiasGeneradas();
        }

        private void sBtnEntrega_Click(object sender, EventArgs e)
        {
            tabControl1.SelectedIndex = 4;
            LlenarEntregadoTienda();
        }

        private void sBtnSalir5_Click(object sender, EventArgs e)
        {
            DesHabBtn();
            ConexionLocal();
            this.Close();
        }

        private void sBtnSalir4_Click(object sender, EventArgs e)
        {
            DesHabBtn();
            ConexionLocal();
            this.Close();
        }

        private void sBtnEntregar_Click(object sender, EventArgs e)
        {
            if (txtidei.Text.Trim() == string.Empty)
            {
                GUI.CApp.ShowMessage("Debe seleccionar la orden a procesar", "ERROR", true);
                return;
            }
            if (txtEstado.Text == "Entregado Tienda")
            {
                ConexionExpress(false);
                EntregarCliente();
                tabControl1.SelectedIndex = 4;
                LlenarEntregadoTienda();
            }
            else
            {
                CApp.ShowMessage("La orden debe estar en estado Entregado Tienda para ser Entregada", "Ekono Express", true);
            }
        }

        private void gdVGuiaRI_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
                if (gdVGuiaRI.Columns.Count > 0)
                {
                    foreach (int handle in gdVGuiaRI.GetSelectedRows())
                    {
                        if (gdVGuiaRI.RowCount > 0 && gdVGuiaRI.Columns.Count > 0)
                        {
                            txtidordenRI.Text = Convert.ToString(gdVGuiaRI.GetRowCellValue(handle, gdVGuiaRI.Columns[0]));
                            txtclienteRI.Text = Convert.ToString(gdVGuiaRI.GetRowCellValue(handle, gdVGuiaRI.Columns[5]));
                            txtmontoRI.Text = Convert.ToString(gdVGuiaRI.GetRowCellValue(handle, gdVGuiaRI.Columns[8]));
                            txtguiaRI.Text = Convert.ToString(gdVGuiaRI.GetRowCellValue(handle, gdVGuiaRI.Columns[1]));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Ekono Express", true);
            } 
        }

        private void sBtnReprint_Click(object sender, EventArgs e)
        {
            try
            {
                // selecciona el número de guía
                string v_guia = txtguiaRI.Text.Trim();

                if (v_guia == string.Empty)
                {
                    GUI.CApp.ShowMessage("Debe seleccionar la guía a imprimir", "ERROR", true);
                    return;
                }

                FrmImprGuia fipf = new FrmImprGuia(v_guia, txtidordenRI.Text);
                fipf.Show();
            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            }                
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                if (cbxOpcionesBusqueda.Text != String.Empty && txtBusqueda.Text == String.Empty)
                {
                    CApp.ShowMessage("Favor ingrese un valor para hacer la búsqueda", "Ekono Express", true);
                    txtBusqueda.Focus();
                }
                else
                {
                    mBuscarNumOrden();
                }
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Ekono Express", true);
            }
        }

        private void gdVEntrT_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
                if (gdVEntrT.RowCount > 0 && gdVEntrT.Columns.Count > 0)
                {
                    foreach (int handle in gdVEntrT.GetSelectedRows())
                    {

                        txtidei.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[0]));
                        txtclienteei.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[5]));
                        txtmontoei.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[8]));
                        txtguiaei.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[1]));
                        txtEstado.Text = Convert.ToString(gdVEntrT.GetRowCellValue(handle, gdVEntrT.Columns[10]));
                    }
                }
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Ekono Express", true);
            } 
        }

        private void panelControl7_Paint(object sender, PaintEventArgs e)
        {

        }

        private void btnReversar_Click(object sender, EventArgs e)
        {
            if (txtEstado.Text == "Entregado Cliente")
            {
                ConexionExpress(false);
                Reversar();
                tabControl1.SelectedIndex = 4;
                LlenarEntregadoTienda();
            }
            else
            {
                CApp.ShowMessage("La orden debe estar en estado Entregado Cliente para ser reversada", "Ekono Express", true);
            }
        }

        private void gdVEntrT_FocusedRowChanged_1(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {

        }

        private void FrmExpress_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Modifiers == Keys.Alt)
            {
                switch (e.KeyCode)
                {
                    case Keys.C:
                        sbtnCotizar.PerformClick();
                        break;
                    case Keys.F:
                        sbtnPago.PerformClick();
                        break;
                    case Keys.G:
                        sBtnGuia.PerformClick();
                        break;
                    case Keys.P:
                        sBtnReimprimir.PerformClick();
                        break;
                    case Keys.E:
                        sBtnEntrega.PerformClick();
                        break;
                    case Keys.F7:
                        sBtnEntregar_Click(null, null);
                        break;
                    case Keys.F8:
                        sBtnReprint_Click(null, null);
                        break;
                    case Keys.F9:
                        sBtnGGuia_Click(null, null);
                        break;
                    case Keys.F10:
                        sBtnFacturado_Click(null, null);
                        break;
                    case Keys.F11:
                        sbtnICotizar_Click(null, null);
                        break;
                    case Keys.F12:
                        btnCalcular_Click(null, null);
                        break;
                }
            }
            if (e.Modifiers == Keys.None)
            {
                switch (e.KeyCode)
                {
                    case Keys.Escape:
                        btnCancelar.PerformClick();
                        break;
                }
            }
        }

        private void rBtnTienda_CheckedChanged(object sender, EventArgs e)
        {
            if (rBtnTienda.Checked)
            {
                iCbxProv.Enabled = false;
                iCbxCanton.Enabled = false;
                iCbxDistrito.Enabled = false;
                iCbxProv.Visible = false;
                iCbxCanton.Visible = false;
                iCbxDistrito.Visible = false;
                lblProvincia.Visible = false;
                lblCanton.Visible = false;
                lblDist.Visible = false;
                rTxtBoxDirec.ReadOnly = true;
                LlenarCombBox();
            }
            else
            {
                iCbxProv.Enabled = true;
                iCbxCanton.Enabled = true;
                iCbxDistrito.Enabled = true;
                iCbxProv.Visible = true;
                iCbxCanton.Visible = true;
                iCbxDistrito.Visible = true;
                lblProvincia.Visible = true;
                lblCanton.Visible = true;
                lblDist.Visible = true;
                rTxtBoxDirec.Text = string.Empty;
                rTxtBoxDirec.ReadOnly = false;
                mProvincias();
            }

            DesHabBtn();
            Limpiarcotizar();
            if (rBtnTienda.Checked)
            {
                rTxtBoxDirec.Text = dsd.Tables[0].Rows[iCBoxDestino.SelectedIndex].ItemArray[2].ToString();
            }
            else
            {
                rTxtBoxDirec.Text = string.Empty;
            }
        }

        #region mCantones
        /// <summary>
        /// Obtiene y carga los cantones
        /// </summary>
        private void mCantones()
        {
            iCbxCanton.Properties.Items.Clear();
            iCbxDistrito.Properties.Items.Clear();            
            try
            {
                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("pPROVINCIA", iCbxProv.Properties.Items[iCbxProv.SelectedIndex].Value.ToString());
                
                DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "CANTONES", qp);

                foreach (DataRow Fila in dsB.Tables[0].Rows)
                {
                    DevExpress.XtraEditors.Controls.ComboBoxItem item;
                    item = new DevExpress.XtraEditors.Controls.ImageComboBoxItem(Fila[0].ToString(), Fila[0].ToString());
                    iCbxCanton.Properties.Items.Add(item);
                }

             //   if (iCbxCanton.Properties.Items.Count > 0)
             //       iCbxCanton.SelectedIndex = 0;

            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            }

        }
        #endregion

        #region mDistritos
        /// <summary>
        /// Obtiene y carga los Distritos
        /// </summary>
        private void mDistritos()
        {
            iCbxDistrito.Properties.Items.Clear();
        
            try
            {
                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("pPROVINCIA", iCbxProv.Properties.Items[iCbxProv.SelectedIndex].Value.ToString());
                qp.AddReplaceParam("pCANTON", iCbxCanton.Properties.Items[iCbxCanton.SelectedIndex].Value.ToString());
                

                DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "DISTRITOS", qp);

                foreach (DataRow Fila in dsB.Tables[0].Rows)
                {
                    DevExpress.XtraEditors.Controls.ComboBoxItem item;
                    item = new DevExpress.XtraEditors.Controls.ImageComboBoxItem(Fila[0].ToString(), Fila[0].ToString());
                    iCbxDistrito.Properties.Items.Add(item);
                }

                //if (iCbxDistrito.Properties.Items.Count > 0)
                //    iCbxDistrito.SelectedIndex = 0;
                            
            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            }
        }
        #endregion

        #region mProvincias
        /// <summary>
        /// Obtiene y carga las provincias
        /// </summary>
        private void mProvincias()
        {
            iCbxProv.Properties.Items.Clear();
            iCbxCanton.Properties.Items.Clear();
            iCbxDistrito.Properties.Items.Clear();
            iCBoxDestino.Properties.Items.Clear();

            try
            {
                DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "PROVINCIAS");

                foreach (DataRow Fila in dsB.Tables[0].Rows)
                {
                    DevExpress.XtraEditors.Controls.ComboBoxItem item;
                    item = new DevExpress.XtraEditors.Controls.ImageComboBoxItem(Fila[0].ToString(), Fila[0].ToString());
                    iCbxProv.Properties.Items.Add(item);
                }

                //if (iCbxProv.Properties.Items.Count > 0)
                //    iCbxProv.SelectedIndex = 0;
               
            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            }            
        }
        #endregion

        private void iCbxProv_SelectedIndexChanged(object sender, EventArgs e)
        {
            mCantones();
        }

        private void iCbxCanton_SelectedIndexChanged(object sender, EventArgs e)
        {
            mDistritos();
        }

        private void lblLeyenda_Click(object sender, EventArgs e)
        {

        }

        private void groupBox2_Enter(object sender, EventArgs e)
        {

        }

        private void iCbxProv_SelectedValueChanged(object sender, EventArgs e)
        {
            
            iCBoxDestino.Properties.Items.Clear();
            try
            {                
                if (rBtnTienda.Checked)
                {
                    LlenarCombBox();
                }
                else
                {
                    Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                    qp.AddReplaceParam("pPROVINCIA", iCbxProv.Properties.Items[iCbxProv.SelectedIndex].Value.ToString());

                    dsd = GUI.CApp.bll.getDataSet("PDV", "DESTPROVEXP", qp);

                    foreach (DataRow Fila in dsd.Tables[0].Rows)
                    {
                        DevExpress.XtraEditors.Controls.ComboBoxItem item;
                        item = new DevExpress.XtraEditors.Controls.ImageComboBoxItem(Fila[0].ToString(), Fila[1].ToString());
                        iCBoxDestino.Properties.Items.Add(item);
                    }

                    if (iCBoxDestino.Properties.Items.Count > 0)
                    {
                        iCBoxDestino.SelectedIndex = 0;
                    }
                    else
                    {
                        iCBoxDestino.Properties.Items.Clear();
                        GUI.CApp.ShowMessage("No se encuentran Tiendas en esta provincia", "Información", true);
                    }
                }

            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            } 
            
        }

        private void iCbxCanton_SelectedValueChanged(object sender, EventArgs e)
        {    
            
            iCBoxDestino.Properties.Items.Clear();
            try
            {
                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("pPROVINCIA", iCbxProv.Properties.Items[iCbxProv.SelectedIndex].Value.ToString());

                if (rBtnTienda.Checked)
                {
                    LlenarCombBox();
                }
                else
                {
                    qp.AddReplaceParam("pCANTON", iCbxCanton.Properties.Items[iCbxCanton.SelectedIndex].Value.ToString());
                    dsd = GUI.CApp.bll.getDataSet("PDV", "DESTCANTONEXP", qp);

                    foreach (DataRow Fila in dsd.Tables[0].Rows)
                    {
                        DevExpress.XtraEditors.Controls.ComboBoxItem item;
                        item = new DevExpress.XtraEditors.Controls.ImageComboBoxItem(Fila[0].ToString(), Fila[1].ToString());
                        iCBoxDestino.Properties.Items.Add(item);
                    }

                    if (iCBoxDestino.Properties.Items.Count > 0){
                        iCBoxDestino.SelectedIndex = 0;
                    }
                    else
                    {
                        iCBoxDestino.Properties.Items.Clear();
                        GUI.CApp.ShowMessage("No se encuentran Tiendas en este cantón", "Información", true);
                    }
                }
            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            }
             
        }

        private void iCbxDistrito_SelectedValueChanged(object sender, EventArgs e)
        {
            iCBoxDestino.Properties.Items.Clear();
            try
            {
                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("pPROVINCIA", iCbxProv.Properties.Items[iCbxProv.SelectedIndex].Value.ToString());
                qp.AddReplaceParam("pCANTON", iCbxCanton.Properties.Items[iCbxCanton.SelectedIndex].Value.ToString());

                if (rBtnTienda.Checked)
                {
                    LlenarCombBox();
                }
                else
                {
                    qp.AddReplaceParam("pDIST", iCbxDistrito.Properties.Items[iCbxDistrito.SelectedIndex].Value.ToString());
                    dsd = GUI.CApp.bll.getDataSet("PDV", "DESTDISTEXP", qp);

                    foreach (DataRow Fila in dsd.Tables[0].Rows)
                    {
                        DevExpress.XtraEditors.Controls.ComboBoxItem item;
                        item = new DevExpress.XtraEditors.Controls.ImageComboBoxItem(Fila[0].ToString(), Fila[1].ToString());
                        iCBoxDestino.Properties.Items.Add(item);
                    }

                    if (iCBoxDestino.Properties.Items.Count > 0)
                    {
                        iCBoxDestino.SelectedIndex = 0;
                    }
                    else
                    {
                        iCBoxDestino.Properties.Items.Clear();
                        GUI.CApp.ShowMessage("No se encuentran Tiendas en este distrito", "Información", true);
                    }
                }

            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            }
        }


    }
}
