using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using AloExpress = LLNet.Tienda.Aloprepago.AloExpress;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
using System.IO;
using System.Collections;
using System.Threading;
using LLNet.Utils;
using LLNet.GUI;

namespace LLNet.Tienda.MainForms.Forms.Monedero
{
    /*************************DLQG***********************************/
    public partial class FrmMonedero : Form
    {
        #region variables
        public bool exito = false;//Indica si la transacción se realizó
        private string varEntMEA, varUsrMEA, varPwdMEA, varMontoR, varDoc, varMoned;
        private string sec_moalo, llavepago;
        #endregion

        public FrmMonedero(string moneda, string montoReal, string doc)
        {            
            varMoned = moneda;
            varMontoR = montoReal;
            varDoc = doc;
            
            InitializeComponent();
            LlenarParametros();
            CServicio();
        }

       
        /// <summary>Obtiene los parámetros necesarios de cada tienda </summary>
        private void LlenarParametros()
        {
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            //qp.AddReplaceParam("pUsuario", GUI.CApp.usuario);// pUsuario
            //CONSULTA LOS PARÁMETROS DE LA BD
            DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "C_PM", qp);

            object[] datos = new object[3];
            datos = dsB.Tables[0].Rows[0].ItemArray;

            varEntMEA = datos[0].ToString();
            varUsrMEA = datos[1].ToString();
            varPwdMEA = datos[2].ToString();           
        }

        /// <summary>Consulta las Asociaciones</summary>
        private void CServicio()
        {            
            try
            {
                //gridCtrlAguaPend.DataSource = null;
                //gridCtrlAguaPend.Refresh();

                //
                AloExpress.ConsultarServicio CSerReq = new AloExpress.ConsultarServicio();
                //
                AloExpress.ConsultarServicioOutput CSerRes = new AloExpress.ConsultarServicioOutput();

                 //WEB SERVICE CON SUS MÉTODOS
                AloExpress.INTEGRACIONSP WSMONEDEROAE = new AloExpress.INTEGRACIONSP();
               
                //Datos de seguridad
                AloExpress.tipoInfoSeguridad4 TS = new AloExpress.tipoInfoSeguridad4();
                TS.Entidad = varEntMEA;
                TS.Usuario = varUsrMEA;
                TS.Clave = varPwdMEA;                

                //Info Servicio
                AloExpress.tipoInfoServicio1 TIS = new AloExpress.tipoInfoServicio1();
                TIS.Servicio = "29";
                TIS.TipoLlave = "12";

                CSerReq.InfoSeguridad = TS;
                CSerReq.InfoServicio = TIS;
                
                CSerRes = WSMONEDEROAE.ConsultarServicio(CSerReq);

                if (CSerRes.infoServicios != null)
                {                    
                    ArrayList LInfServ = new ArrayList(CSerRes.infoServicios);
                    
                    //AloExpress.tipoinfoServicios Asocs = LAsoc[0];
                    
                    //AloExpress.tipoServicioConsultado Asocs = LAsoc[0];

                    ArrayList LAsoc = new ArrayList();

                    foreach (AloExpress.tipoinfoServicios LServ in LInfServ)
                    {
                        AloExpress.tipoServicioConsultado Asoc = LServ.ServicioConsultado;
                        //CREAR UN ARRAY DE CONVENIOS                       
                        LAsoc.Add(Asoc);                        
                    }
                        
                    cBoxAso.DataSource = LAsoc;
                    cBoxAso.DisplayMember = "Nombre";
                    cBoxAso.ValueMember = "Identificacion";
                }
                else
                {
                    GUI.CApp.ShowMessage("No tiene recibos pendientes", "Recibos", false);
                }

                //Crear un objeto serializado para la clase contactos
                XmlSerializer objWriter = new XmlSerializer(typeof(AloExpress.ConsultarServicio));
                //Crear un objeto file de tipo StremWriter para almacenar el documento xml
                StreamWriter objfile = new StreamWriter("C://ConsultarServicio.xml");
                //Serializar y crear el documento XML
                objWriter.Serialize(objfile, CSerReq);
                //Cerrar el archivo
                objfile.Close();

                //Crear un objeto serializado para la clase contactos
                XmlSerializer objWriter2 = new XmlSerializer(typeof(AloExpress.ConsultarServicioOutput));
                //Crear un objeto file de tipo StremWriter para almacenar el documento xml
                StreamWriter objfile2 = new StreamWriter("C://ConsultarServicioOutput.xml");
                //Serializar y crear el documento XML
                objWriter2.Serialize(objfile2, CSerRes);
                //Cerrar el archivo
                objfile2.Close();               
               
            }
            catch (SoapException err)
            {
                GUI.CApp.ShowMessage(Convert.ToString(err.Detail.FirstChild.Value), "ERROR", true);
                // BitacoraIntentosE(id, Convert.ToString(err.Detail.FirstChild.Value));
            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            }
        }


        AloExpress.ConsultarServicio CSerReq = new AloExpress.ConsultarServicio();
                //
        AloExpress.ConsultarServicioOutput CSerRes = new AloExpress.ConsultarServicioOutput();

        /// <summary>Consulta el crédito para un cliente </summary>
        /// <param name="identificador"></param>
        private void CServicio(string identificador)
        {
            sec_moalo = Sec_MoAlo();
            try
            {   
                //
               
                //WEB SERVICE CON SUS MÉTODOS
                AloExpress.INTEGRACIONSP WSMONEDEROAE = new AloExpress.INTEGRACIONSP();

                //Datos de seguridad
                AloExpress.tipoInfoSeguridad4 TS = new AloExpress.tipoInfoSeguridad4();
                TS.Entidad = varEntMEA;
                TS.Usuario = varUsrMEA;
                TS.Clave = varPwdMEA;

                //Adicional
                AloExpress.tipoItem3 ti1 = new AloExpress.tipoItem3();
                ti1.Etiqueta = "asociacion";
                ti1.Formato = "cadena";
                ti1.Nombre = "asociacion";
                //ti3.Tipo = "";
                //ti1.Valor = "1";
               MessageBox.Show(cBoxAso.SelectedValue.ToString()); // QUITAR
               ti1.Valor = cBoxAso.SelectedValue.ToString();

                //Adicional
                AloExpress.tipoItem3 ti2 = new AloExpress.tipoItem3();
                ti2.Etiqueta = "cedula";
                ti2.Formato = "cadena";
                ti2.Nombre = "cedula";
                //ti2.Tipo = "";
                ti2.Valor = identificador;

                //Adicional
                AloExpress.tipoItem3 ti3 = new AloExpress.tipoItem3();
                ti3.Etiqueta = "monto";
                ti3.Formato = "cadena";
                ti3.Nombre = "monto";
                //ti2.Tipo = "";
                ti3.Valor = varMontoR;

                AloExpress.tipoItem3[] aAdicionales = new  AloExpress.tipoItem3[3];
                aAdicionales[0] = ti1;
                aAdicionales[1] = ti2;
                aAdicionales[2] = ti3;

                ArrayList LAdicionales = new ArrayList();
                LAdicionales.Add(ti1);
                LAdicionales.Add(ti2);
                LAdicionales.Add(ti3);
                
                //Info Servicio
                AloExpress.tipoInfoServicio1 TIS = new AloExpress.tipoInfoServicio1();
                TIS.Servicio = "29";
                TIS.TipoLlave = "1";
                TIS.Llave = identificador;
                TIS.Adicionales = aAdicionales;
                
                CSerReq.InfoSeguridad = TS;
                CSerReq.InfoServicio = TIS;

                

                RegBDConsCodAuto(cBoxAso.Text, cBoxAso.SelectedValue.ToString(),identificador,varMontoR,sec_moalo);

                CSerRes = WSMONEDEROAE.ConsultarServicio(CSerReq);

                if (CSerRes.ErrorCodigo == "00")
                {//correcto
                    AloExpress.tipoServicioConsultado tscr = CSerRes.infoServicios[0].ServicioConsultado;
                    AloExpress.tipoRecibo trcb = tscr.Recibos[0] ;
                    
                    RegBDLlavePago(trcb.LlavePago,trcb.Nombre, sec_moalo);

                    llavepago = trcb.LlavePago;

                    GUI.CApp.ShowMessage(CSerRes.ErrorDes + ",favor ingresar el código de autorización", "Monedero Aló Express", false);
                }
                else
                {//almacena el error
                    GUI.CApp.ShowMessage(CSerRes.ErrorDes, "Error", false);
                    string er = CSerRes.ErrorCodigo + " " + CSerRes.ErrorDes;
                    if(er.Length > 250)
                    er = er.Substring(0, 249);
                    ErrorCodAuto(CSerRes.ErrorDes, sec_moalo, "ConsultarServicio");
                }
                        
                
                //Crear un objeto serializado para la clase contactos
                XmlSerializer objWriter = new XmlSerializer(typeof(AloExpress.ConsultarServicio));
                //Crear un objeto file de tipo StremWriter para almacenar el documento xml
                StreamWriter objfile = new StreamWriter("C://ConsultarServicio1.xml");
                //Serializar y crear el documento XML
                objWriter.Serialize(objfile, CSerReq);
                //Cerrar el archivo
                objfile.Close();

                //Crear un objeto serializado para la clase contactos
                XmlSerializer objWriter2 = new XmlSerializer(typeof(AloExpress.ConsultarServicioOutput));
                //Crear un objeto file de tipo StremWriter para almacenar el documento xml
                StreamWriter objfile2 = new StreamWriter("C://ConsultarServicioOutput1.xml");
                //Serializar y crear el documento XML
                objWriter2.Serialize(objfile2, CSerRes);
                //Cerrar el archivo
                objfile2.Close();

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

         AloExpress.PagarServicio PSerReq = new AloExpress.PagarServicio();
                //
         AloExpress.PagarServicioOutput PSerRes = new AloExpress.PagarServicioOutput();

        private void PServicio(string cod_autoriz)
        {           
            try
            { 
                //Registra el codigo suministrado por el usuario
                RegBDCodAutoPago(cod_autoriz,sec_moalo);

                //WEB SERVICE CON SUS MÉTODOS
                AloExpress.INTEGRACIONSP WSMONEDEROAE = new AloExpress.INTEGRACIONSP();

                //Datos de seguridad
                AloExpress.tipoInfoSeguridad5 TS = new AloExpress.tipoInfoSeguridad5();
                TS.Entidad = varEntMEA;
                TS.Usuario = varUsrMEA;
                TS.Clave = varPwdMEA;               
                             
                 //Adicional
                AloExpress.tipoItem7 ti7 = new AloExpress.tipoItem7();
                ti7.Etiqueta = "cod_autoriza";
                ti7.Formato = "numerico";
                ti7.Nombre = "cod_autoriza";
                //ti2.Tipo = "";
                ti7.Valor = cod_autoriz;

                AloExpress.tipoItem7[] aAdicionales = new AloExpress.tipoItem7[1];
                aAdicionales[0] = ti7;

                ArrayList LAdicionales = new ArrayList();
                LAdicionales.Add(ti7);
                
                AloExpress.tipoServicioConsultado tscr = CSerRes.infoServicios[0].ServicioConsultado;
                AloExpress.tipoRecibo trcb = tscr.Recibos[0];

                //Info Servicio
                AloExpress.tipoInfoServicio2 TIS = new AloExpress.tipoInfoServicio2();
                TIS.Servicio = "29";
                TIS.TipoLlave = "1";
                TIS.Llave = trcb.Numero;
                TIS.Identificador = trcb.Numero;
                TIS.LlavePago = trcb.LlavePago;
                TIS.TotalPago = trcb.Monto;
                TIS.Referencia = sec_moalo;
                
                TIS.Adicional = aAdicionales;

                PSerReq.InfoSeguridad = TS;
                PSerReq.InfoServicio = TIS;

                PSerRes = WSMONEDEROAE.PagarServicio(PSerReq);

                if (PSerRes.ErrorCodigo == "00")
                {//correcto                                      
                    //Registrar exito de la transaccion
                    RegBDPagoExito(sec_moalo);
                    exito = true;
                    imprimir(sec_moalo);
                }
                else
                {//almacena el error
                    GUI.CApp.ShowMessage(PSerRes.ErrorDesc, "Error", false);
                    string er = PSerRes.ErrorCodigo + " " + PSerRes.ErrorDesc;
                    if (er.Length > 250)
                        er = er.Substring(0, 249);
                    ErrorCodAuto(PSerRes.ErrorDesc, sec_moalo, "Pagar Servicio");
                }

                //Crear un objeto serializado para la clase contactos
                XmlSerializer objWriter = new XmlSerializer(typeof(AloExpress.PagarServicio));
                //Crear un objeto file de tipo StremWriter para almacenar el documento xml
                StreamWriter objfile = new StreamWriter("C://PagarServicio1.xml");
                //Serializar y crear el documento XML
                objWriter.Serialize(objfile, PSerReq);
                //Cerrar el archivo
                objfile.Close();

                //Crear un objeto serializado para la clase contactos
                XmlSerializer objWriter2 = new XmlSerializer(typeof(AloExpress.PagarServicioOutput));
                //Crear un objeto file de tipo StremWriter para almacenar el documento xml
                StreamWriter objfile2 = new StreamWriter("C://PagarServicioOutput1.xml");
                //Serializar y crear el documento XML
                objWriter2.Serialize(objfile2, PSerRes);
                //Cerrar el archivo
                objfile2.Close();

            }
            catch (SoapException err)
            {
                GUI.CApp.ShowMessage(Convert.ToString(err.Detail.FirstChild.Value), "ERROR", true);
                // BitacoraIntentosE(id, Convert.ToString(err.Detail.FirstChild.Value));
            }
            catch (Exception er)
            {
                GUI.CApp.ShowMessage(er.Message, "ERROR", true);
                //BitacoraIntentosE(id, Convert.ToString(er.Message));
            }
            this.Dispose();
        }

        //Registrar en BD la transaccion de consultar codigo de autorizacion
        private void RegBDConsCodAuto(string ASOCIACION, string CODASOCIACION, string IDENTIFICACION,
                      string MONTO, string REFERENCIA)
        {

            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            if (ASOCIACION == "")
            {
                qp.AddReplaceParam("pASOCIACION", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pASOCIACION", ASOCIACION);
            }
            if (CODASOCIACION == "")
            {
                qp.AddReplaceParam("pCODASOCIACION", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pCODASOCIACION", CODASOCIACION);
            }
            if (IDENTIFICACION == "")
            {
                qp.AddReplaceParam("pIDENTIFICACION", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pIDENTIFICACION", IDENTIFICACION);
            }
            if (MONTO == "")
            {
                qp.AddReplaceParam("pMONTO", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pMONTO", MONTO);
            }           
            if (REFERENCIA == "")
            {
                qp.AddReplaceParam("pREFERENCIA", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pREFERENCIA", REFERENCIA);
            }
            qp.AddReplaceParam("pjornada", Program.Jornada.ToString());
            //Pedido
            qp.AddReplaceParam("pdoc", varDoc);

            // Llama el procedimiento que almacena los datos d la consulta en la BD
            GUI.CApp.bll.ExecuteSql("WMS_P_ICMONEDEROALO", qp, "PDV");
        }

        //Registrar en BD la llave de pago de la consulta de credito
        private void RegBDLlavePago(string LLAVEPAGO, string NOMBRE, string REFERENCIA)
        { // EKO_P_IKEYMONEDEROALO('&&pLLAVEPAGO&&','&&pNOMBRE&&', &&pREFERENCIA&&);

            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            if (LLAVEPAGO == "")
            {
                qp.AddReplaceParam("pLLAVEPAGO", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pLLAVEPAGO", LLAVEPAGO);
            }
            if (NOMBRE == "")
            {
                qp.AddReplaceParam("pNOMBRE", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pNOMBRE", NOMBRE);
            }
            if (REFERENCIA == "")
            {
                qp.AddReplaceParam("pREFERENCIA", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pREFERENCIA", REFERENCIA);
            }
            
            /*//Jornada
            qp.AddReplaceParam("pjornada", Program.Jornada.ToString());

            //Pedido
            qp.AddReplaceParam("pdoc", varDoc);*/

            // Llama el procedimiento que almacena los datos d la consulta en la BD
            GUI.CApp.bll.ExecuteSql("WMS_P_ILLAVEMONEDALO", qp, "PDV");
        }

        //Registrar en BD el codigo de autorizacion suministrado por el cliente
        private void RegBDCodAutoPago(string codauto, string REFERENCIA)
        { 
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            if (codauto == "")
            {
                qp.AddReplaceParam("pCODAUTORIZ", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pCODAUTORIZ", codauto);
            }           
            if (REFERENCIA == "")
            {
                qp.AddReplaceParam("pREFERENCIA", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pREFERENCIA", REFERENCIA);
            }

            /*//Jornada
            qp.AddReplaceParam("pjornada", Program.Jornada.ToString());

            //Pedido
            qp.AddReplaceParam("pdoc", varDoc);*/

            // Llama el procedimiento que almacena los datos d la consulta en la BD
            GUI.CApp.bll.ExecuteSql("WMS_P_ICODAUTOMONEDALO", qp, "PDV");
        }

        //Registrar exito en la transaccion de Pago
        private void RegBDPagoExito(string REFERENCIA)
        {
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            if (REFERENCIA == "")
            {
                qp.AddReplaceParam("pREFERENCIA", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pREFERENCIA", REFERENCIA);
            }

            // Llama el procedimiento que almacena los datos d la consulta en la BD
            GUI.CApp.bll.ExecuteSql("WMS_P_IPMONEDEROALO", qp, "PDV");
        }

        //almacena los errores devueltos por el Web Service
        private void ErrorCodAuto(string error, string REFERENCIA,string WS)
        { //&&pREFERENCIA&&,'&&pERROR&&','&&pWEBSERVICE&&'
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();

            qp.AddReplaceParam("pREFERENCIA", REFERENCIA);
            qp.AddReplaceParam("pERROR", error);
            qp.AddReplaceParam("pWEBSERVICE", WS);
          
            // Llama el procedimiento que almacena los datos dl pago en la BD
            GUI.CApp.bll.ExecuteSql("WMS_P_ERRORCodAuto", qp, "PDV");
        }

        ////Registrar en BD el recibo del pago
        //private void RegBDRecibo()
        //{            

        //    Utils.QueryParams qp = new LLNet.Utils.QueryParams();
        //    if (LLAVEPAGO == "")
        //    {
        //        qp.AddReplaceParam("pLLAVEPAGO", DBNull.Value.ToString().ToString());
        //    }
        //    else
        //    {
        //        qp.AddReplaceParam("pLLAVEPAGO", LLAVEPAGO);
        //    }
        //    if (NOMBRE == "")
        //    {
        //        qp.AddReplaceParam("pNOMBRE", DBNull.Value.ToString().ToString());
        //    }
        //    else
        //    {
        //        qp.AddReplaceParam("pNOMBRE", NOMBRE);
        //    }
        //    if (REFERENCIA == "")
        //    {
        //        qp.AddReplaceParam("pREFERENCIA", DBNull.Value.ToString().ToString());
        //    }
        //    else
        //    {
        //        qp.AddReplaceParam("pREFERENCIA", REFERENCIA);
        //    }

        //    /*//Jornada
        //    qp.AddReplaceParam("pjornada", Program.Jornada.ToString());

        //    //Pedido
        //    qp.AddReplaceParam("pdoc", varDoc);*/

        //    // Llama el procedimiento que almacena los datos d la consulta en la BD
        //    GUI.CApp.bll.ExecuteSql("WMS_P_ILLAVEMONEDALO", qp, "PDV");
        //}


        private string Sec_MoAlo()
        {
            string secmoalo = "";
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            secmoalo = Convert.ToString(GUI.CApp.bll.GetSingleValue("SEC_MOALO", qp, "PDV"));
            return secmoalo;
        }

        #region imprimirVoucher

        private void imprimir(string id)
        {
            try
            {
                object FormatoTipoImpresion = null;
                QueryParams qparams = new LLNet.Utils.QueryParams();
                qparams = new LLNet.Utils.QueryParams();
                qparams.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'VMA");
                Model.General.CgRefCodes dsDocTienda = new LLNet.Model.General.CgRefCodes();
                Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsDocTienda.GetType(), dsDocTienda.DOMAINS.TableName, qparams), dsDocTienda);
                string format = Utils.Helpers.Nvl(FormatoTipoImpresion, dsDocTienda.DOMAINS[0].RV_MPCC02).ToString();
                imprimirVoucher(Convert.ToInt64(id), "", Convert.ToInt64(format));
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Vouchers Monedero Aló", false);
            }
        }


        /// <summary> Imprime el voucher</summary>
        /// <param name="voucher">Id voucher</param>
        /// <param name="Impresora"></param>
        /// <param name="formato">Formato impresión</param>
        private void imprimirVoucher(long voucher, string Impresora, long formato)
        {
            string Ruta = Application.StartupPath;
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            if (Ruta != string.Empty)
            {
                System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(Ruta + "\\" + "imprimir.bat ");
                startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

                string Args = "";
                string varTipoTxt = Utils.Helpers.ObjToStr(GUI.CApp.GetParam("TTXT"));

                if (varTipoTxt == "U") // SI EL TIPO DE GENERACION DE ARCHIVO ES POR USUARIO O DOCUMENTO
                {
                    Args = GUI.CApp.usuario + ".txt ";
                }
                else
                {
                    long pDocumento = voucher;
                    Args = pDocumento + ".txt ";
                }

                startInfo.Arguments = Args;
                try
                {
                    qp.AddReplaceParam("ID_TR_TARJ", voucher.ToString());
                    qp.AddReplaceParam("FORMATO", formato.ToString());
                    qp.AddReplaceParam("USUARIO", GUI.CApp.usuario.ToString());
                    GUI.CApp.bll.ExecuteSql("WMS_P_GENERAR_IMPRVO", qp, "PDV");
                    Thread.Sleep(2000);  // se deja un delay para esperar a que la base contruya el archivo
                    System.Diagnostics.Process.Start(startInfo);

                    #region Imprimir copia voucher
                    string valor = Helpers.Nvl(CApp.GetParam("HCV"), "").ToString();
                    if (valor == "1")//Si valor es 1, se imprime la copia del voucher
                    {
                        qp.AddReplaceParam("ID_TR_TARJ", voucher.ToString());
                        qp.AddReplaceParam("FORMATO", formato.ToString());
                        qp.AddReplaceParam("USUARIO", GUI.CApp.usuario.ToString());
                        GUI.CApp.bll.ExecuteSql("WMS_P_GENERAR_IMPRVO", qp, "PDV");
                        Thread.Sleep(2000);  // se deja un delay para esperar a que la base contruya el archivo
                        System.Diagnostics.Process.Start(startInfo);
                    }
                    #endregion
                }
                catch (Exception ex)
                {
                    GUI.CApp.ShowMessage(ex.Message, "Impresion de Documentos", false);
                }
            }
            else
            {
                throw new Exception("No esta Definido el Parametro UATI");
            }
        }
        #endregion

        private void btnSalir_Click(object sender, EventArgs e)
        {
            exito = false;            
            this.Dispose();           
        }

        private void sBtnConsCredito_Click(object sender, EventArgs e)
        {
            CServicio(txtced.Text.Trim());
        }

        private void btnAcptr_Click(object sender, EventArgs e)
        {
            if (txtcodauto.Text.Trim() == "")
            {
                GUI.CApp.ShowMessage("Favor Ingrese el Código de Autorización", "Monedero Aló Express", false);
            }
            else
            {
                PServicio(txtcodauto.Text.Trim());
            }
        }

        private void FrmMonedero_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.F4:
                    sBtnConsCredito_Click(null, null);
                    break;
                case Keys.F5:
                    btnAcptr_Click(null, null);
                    break;
                case Keys.Escape:
                    btnSalir_Click(null, null);
                    break;
            }
        }

    }
}