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.Utils;
using LLNet.GUI;
using Microsoft.Win32;
using System.Threading;
using System.Collections;

namespace LLNet.Tienda.MainForms.Forms.CreditEko
{
    public partial class FrmValCupon : Form
    {
        private bool vAplicarDescuento = false;
        private bool vContinuar = false;
        private static string subTipoDocumentoPreimpreso;
        private static long documentoPreimpreso;
        private decimal vMontoCupon = 0;

        public FrmValCupon()
        {
            InitializeComponent();
        }

        public bool Continuar
        {
            get
            {
                return vContinuar;
            }
        }

        #region mDatosIniciales
        /// <summary>
        /// Carga los datos del total de factura, monto cupón y monto del cupón aplicable a la factura
        /// </summary>
        private void mDatosIniciales()
        {
            decimal vDocumento = 0;
            decimal vMontoAplicable = 0;// Contendrá el monto aplicable del cupón, a la factura
            vMontoCupon = 0;

            Program.FrmMainPos.RefreshData();

            if (Program.FrmMainPos != null && Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS.Count > 0 &&
               Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS[0].DOCUMENTO != 0)
            {
                vDocumento = Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS[0].DOCUMENTO;
            }

            /*
            QueryParams vParametros = new QueryParams();
            //
            vParametros.AddReplaceParam("DOCUMENTO", vDocumento.ToString());
            // Obtiene el monto del cupón credie
            vMontoCupon = Convert.ToDecimal(GUI.CApp.bll.GetSingleValue("POS_F_MONTO_CUPON",
                vParametros, "PDV"));
            */

            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("pDOCUMENTO", vDocumento.ToString());
            //CONSULTA LOS PARÁMETROS DE LA BD
            DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "POS_MONTOSCUPONCREDIE", qp);

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

            vMontoCupon = decimal.Parse(datos[0].ToString());
            if (vMontoCupon > 0)
            {
                vMontoAplicable = decimal.Parse(datos[1].ToString());
            }


            rowMontoAplicable.Properties.Value = vMontoAplicable;
            rowMontoCupon.Properties.Value = vMontoCupon;
            rowTotalFactura.Properties.Value = Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS[0].TOTAL;
        }
        #endregion

        private void CrearCupon()
        {
            //Almacena el cupon datos en nuestra Base d Datos
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            //pTARJETA,pCEDULA,pNOMBRE,pAPELLIDO1,pAPELLIDO2,pTELEFONO1,pTELEFONO2,pEMAIL,pFECHA_NAC,pGENERO,pPROVINCIA,pCANTON,pDISTRITO,pPERTENECE_A
            qp.AddReplaceParam("pJORNADA", Program.Jornada.ToString());
            qp.AddReplaceParam("pUSUARIO", GUI.CApp.usuario);
            qp.AddReplaceParam("pDOCUMENTO", Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS[0].DOCUMENTO.ToString());
            // Llama el procedimiento que almacena la tarjeta 
            GUI.CApp.bll.ExecuteSql("EKO_P_CREAR_CUPON_CREDIE", qp, "PDV");          
        }

        private void AplicarCupon()
        {
            //SELECCIONA EL NUMERO DE CUPON DEL PEDIDO
            long id = 0;
            Utils.QueryParams qp0 = new LLNet.Utils.QueryParams();
            qp0.AddReplaceParam("pDOCUMENTO", Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS[0].DOCUMENTO.ToString());
            id = long.Parse(GUI.CApp.bll.GetSingleValue("POS_CCUPONCREDIE", qp0, "PDV").ToString());


            //Aplica el cupon en la compra actual
            //BEGIN eko_p_aplica_cupone( &&p_documento&& , &&p_cupon&&, '&&p_local&&' )
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            //pTARJETA,pCEDULA,pNOMBRE,pAPELLIDO1,pAPELLIDO2,pTELEFONO1,pTELEFONO2,pEMAIL,pFECHA_NAC,pGENERO,pPROVINCIA,pCANTON,pDISTRITO,pPERTENECE_A
            qp.AddReplaceParam("p_local", "S");
            qp.AddReplaceParam("p_cupon", id.ToString() );
            qp.AddReplaceParam("p_documento", Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS[0].DOCUMENTO.ToString());
            // Llama el procedimiento que almacena la tarjeta 
            GUI.CApp.bll.ExecuteSql("EKO_P_APLICA_CUPONE", qp, "PDV");          
        }

        /// <summary>Imprime la factura </summary>
        /// <param name="doc"></param>
        private void ImpCuponCredie(long pdoc)
        {
            //SELECCIONA EL NUMERO DE CUPON DEL PEDIDO
            long id = 0;
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("pDOCUMENTO", Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS[0].DOCUMENTO.ToString());
            id = long.Parse(GUI.CApp.bll.GetSingleValue("POS_CCUPONCREDIE", qp, "PDV").ToString());

            object FormatoTipoImpresion = null;
            QueryParams qparams = new LLNet.Utils.QueryParams();
            qparams = new LLNet.Utils.QueryParams();
            qparams.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'CPCE");
            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();

            imprimirDocumentoDOS(id, "", Convert.ToInt64(format));

            //Cantidad de impresiones
            //QueryParams qp = new LLNet.Utils.QueryParams();
            //qp.AddReplaceParam("DOCUMENTO", pdoc.ToString());
            //CApp.bll.ExecuteSql("WMS_P_RECARGIMPRESIONES", qp, "PDV");

        }

        #region Impresion y Abrir el cajón de Dinero

        private static int EsDeCredito(long pDocumento)
        {
            QueryParams qp = new QueryParams();
            qp.AddReplaceParam("DOCUMENTO", Convert.ToString(pDocumento));
            int Credito = Convert.ToInt16(CApp.bll.GetSingleValue("ImpresionesCredito", qp, "PDV"));
            return Credito;
        }

        /*Imprimir abrir cajón*/
        private static void imprimirDocumentoDOS(long documento, string Impresora, long formato, string prefijo, string BatName)
        {
            if (BatName == "")
                BatName = "imprimir.bat";
            string Ruta = Application.StartupPath;
            QueryParams qp = new QueryParams();
            if (Ruta != string.Empty)
            {
                System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(Ruta + "\\" + BatName);
                startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                string Args = "";

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

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

                try
                {
                    qp.AddReplaceParam("DOCUMENTO", documento.ToString());
                    qp.AddReplaceParam("FORMATO", formato.ToString());
                    qp.AddReplaceParam("USUARIO", CApp.usuario.ToString());
                    CApp.bll.ExecuteSql("GENERAR_IMPRESION_POS", qp, "PDV");
                    Thread.Sleep(3000); // SE LE DA TIEMPO A LA BD DE GENERAR EL ARCHIVO DE TEXTO
                    System.Diagnostics.Process.Start(startInfo);
                }
                catch (Exception ex)
                {
                    CApp.ShowMessage(ex.Message, "Impresion de Documentos", true);
                }
            }
            else
            {
                throw new Exception("No esta Definido el Parametro UATI");
            }
            //startInfo.UseShellExecute = false; 
        }
        private static void imprimirDocumentoDOS(long documento, string Impresora, long formato)
        {
            imprimirDocumentoDOS(documento, Impresora, formato, "", "");
        }
        private static void imprimirDocumentoDOS(long documento, string Impresora, long formato, string batName)
        {
            imprimirDocumentoDOS(documento, Impresora, formato, "", batName);
        }
        private static void imprimirFacturaPreimpresa(long documento, string codigoReporte)
        {
            //System.Diagnostics.Process.Start("START", "/min notepad /P" + " C:\\" + GUI.CApp.usuario + ".txt");            
            string PreimpresaXvariables = Helpers.ObjToStr(CApp.GetParam("PIXV"));

            if (PreimpresaXvariables == "NO")
            {
                Hashtable ht = new Hashtable();
                QueryParams QueryParams = new QueryParams();
                QueryParams.AddReplaceParam("DOCUMENTO", documento.ToString());
                ht.Add("TDA_V_REP_DOCUMENTOS", QueryParams);
                ht.Add("TDA_V_REP_DET_DOCUMENTOS", QueryParams);

                LLNet.Reports.BaseReports.XRInfo Info;
                Info = Reports.BaseReports.XRBase.SetInfo(codigoReporte);

                RegistryKey key = Registry.CurrentUser;
                key = key.OpenSubKey(@"Software\Logistika\POS Retail 8.0.0\Impresoras\Preimpresos", true);

                string printerFactura = "";

                if (key != null)
                    printerFactura = Helpers.ObjToStr(key.GetValue("Factura", ""));


                if (printerFactura != string.Empty)
                    Info.PrinterName = printerFactura;

                LLNet.Reports.BaseReports.XRBase xrBase = new LLNet.Reports.BaseReports.XRBase(Info.BaseReport, Info.CodeReport);
                xrBase.Parametros = Info;
                xrBase.BllInstance = CApp.bll;
                xrBase.ExePath = CApp.ExeDir;

                xrBase.ExecuteReport(LLNet.Reports.BaseReports.XRExecution.XRPrint, false, ht);

                //xrBase.Report.ExportToText("c:/logistika/factura.txt");
            }
            else
            {
                //Impresion.Impresion imp = new Impresion.Impresion();
                //imp.ImprimirFacturaMedianteVariables();
                int Formato = 2;
                int numImpresiones = 1;
                // int EsCredito = 0;
                QueryParams qp = new QueryParams();
                switch (subTipoDocumentoPreimpreso)
                {
                    case "C":
                        qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'CF");
                        break;
                    case "T":
                        qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'TKT");
                        break;
                    case "E":
                        qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'EX");
                        break;
                    case "L":
                        qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'LI");
                        break;
                    case "S":
                        qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'SI");
                        break;
                    default:
                        qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'FAP");
                        break;
                }


                Model.General.CgRefCodes dsDocTienda = new LLNet.Model.General.CgRefCodes();
                Helpers.Merge(CApp.bll.getTypedDataSet(dsDocTienda.GetType(), dsDocTienda.DOMAINS.TableName, qp), dsDocTienda);

                if (dsDocTienda.DOMAINS.Count > 0)
                {
                    // imprimirTicketPreimpresa(documentoPreimpreso, dsDocTienda.DOMAINS[0].RV_MPCC00, Convert.ToInt32(dsDocTienda.DOMAINS[0].RV_MPNC02), Convert.ToInt64(dsDocTienda.DOMAINS[0].RV_MPCC02));
                    imprimirTicketPreimpresa(documentoPreimpreso, dsDocTienda.DOMAINS[0].RV_MPCC00, Convert.ToInt32(dsDocTienda.DOMAINS[0].RV_MPNC02), Convert.ToInt64(dsDocTienda.DOMAINS[0].RV_MPCC02));
                }
            }
        }
        private static void imprimirDocumentoPreimpresaDOS(long documento, string Impresora, string codigoReporte, string formato)
        {
            imprimirDocumentoPreimpresaDOS(documento, Impresora, codigoReporte, formato, "", "");
        }
        private static void imprimirDocumentoPreimpresaDOS(long documento, string Impresora, string codigoReporte, string batName, string formato)
        {
            imprimirDocumentoPreimpresaDOS(documento, Impresora, codigoReporte, formato, batName, "");
        }
        private static void imprimirDocumentoPreimpresaDOS(long documento, string Impresora, string codigoReporte, string formato, string batName, string prefijo)
        {
            //System.Diagnostics.Process.Start("START", "/min notepad /P" + " C:\\" + GUI.CApp.usuario + ".txt");            
            string PreimpresaXvariables = Helpers.ObjToStr(CApp.GetParam("PIXV"));

            if (PreimpresaXvariables == "NO")
            {
                Hashtable ht = new Hashtable();
                QueryParams QueryParams = new QueryParams();
                QueryParams.AddReplaceParam("DOCUMENTO", documento.ToString());
                ht.Add("TDA_V_REP_DOCUMENTOS", QueryParams);
                ht.Add("TDA_V_REP_DET_DOCUMENTOS", QueryParams);

                LLNet.Reports.BaseReports.XRInfo Info;
                Info = Reports.BaseReports.XRBase.SetInfo(codigoReporte);

                RegistryKey key = Registry.CurrentUser;
                key = key.OpenSubKey(@"Software\Logistika\POS Retail 8.0.0\Impresoras\Preimpresos", true);

                string printerFactura = "";

                if (key != null)
                    printerFactura = Helpers.ObjToStr(key.GetValue("Factura", ""));


                if (printerFactura != string.Empty)
                    Info.PrinterName = printerFactura;

                LLNet.Reports.BaseReports.XRBase xrBase = new LLNet.Reports.BaseReports.XRBase(Info.BaseReport, Info.CodeReport);
                xrBase.Parametros = Info;
                xrBase.BllInstance = CApp.bll;
                xrBase.ExePath = CApp.ExeDir;

                xrBase.ExecuteReport(LLNet.Reports.BaseReports.XRExecution.XRPrint, false, ht);

                //xrBase.Report.ExportToText("c:/logistika/factura.txt");
            }
            else
            {
                //Impresion.Impresion imp = new Impresion.Impresion();
                //imp.ImprimirFacturaMedianteVariables();                
                int numImpresiones = 1;
                // int EsCredito = 0;
                QueryParams qp = new QueryParams();
                switch (subTipoDocumentoPreimpreso)
                {
                    case "C":
                        qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'CF");
                        break;
                    case "T":
                        qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'TKT");
                        break;
                    case "E":
                        qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'EX");
                        break;
                    case "L":
                        qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'LI");
                        break;
                    case "S":
                        qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'SI");
                        break;
                    default:
                        qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'RR");
                        break;
                }


                Model.General.CgRefCodes dsDocTienda = new LLNet.Model.General.CgRefCodes();
                Helpers.Merge(CApp.bll.getTypedDataSet(dsDocTienda.GetType(), dsDocTienda.DOMAINS.TableName, qp), dsDocTienda);

                if (dsDocTienda.DOMAINS.Count > 0)
                {

                    imprimirDocumentoDOS(documento, Impresora, Convert.ToInt32(formato), prefijo, batName);
                }
            }
        }

        private static void imprimirTicket(long documento, string impresora, int copias, long formato)
        {
            Impresion.Impresion imp = new Impresion.Impresion();
            imp.Conexion = CApp.bll.ConnectionString;

            Impresion.MensajeImpresion prntMess = new Impresion.MensajeImpresion();
            RegistryKey key = Registry.CurrentUser;

            key = key.OpenSubKey(@"Software\Logistika\POS Retail 8.0.0\Impresoras\Ticket", true);

            string printerFactura = "";

            if (key != null)
                printerFactura = Helpers.ObjToStr(key.GetValue("Factura", ""));

            if (printerFactura != string.Empty)
                prntMess.Impresora = printerFactura;
            else
                prntMess.Impresora = impresora;

            prntMess.TipoFormato = Impresion.TipoFormato.Documentos;
            prntMess.Llave1 = documento;
            prntMess.Copias = copias;
            prntMess.Formato = formato;
            imp.SetMensajeImpresion(prntMess);

            try
            {
                imp.ImprimirDocumento();
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Impresion de Documentos", true);
            }
        }
        private static void imprimirTicketPreimpresa(long documento, string impresora, int copias, long formato)
        {
            Impresion.Impresion imp = new Impresion.Impresion();
            imp.Conexion = CApp.bll.ConnectionString;

            Impresion.MensajeImpresion prntMess = new Impresion.MensajeImpresion();
            RegistryKey key = Registry.CurrentUser;

            key = key.OpenSubKey(@"Software\Logistika\POS Retail 8.0.0\Impresoras\Preimpresos", true);

            string printerFactura = "";

            if (key != null)
                printerFactura = Helpers.ObjToStr(key.GetValue("Factura", ""));

            if (printerFactura != string.Empty)
                prntMess.Impresora = printerFactura;
            else
                prntMess.Impresora = impresora;

            prntMess.TipoFormato = Impresion.TipoFormato.Documentos;
            prntMess.Llave1 = documento;
            prntMess.Copias = copias;
            prntMess.Formato = formato;
            imp.SetMensajeImpresion(prntMess);

            try
            {
                imp.ImprimirDocumento();
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Impresion de Documentos", true);
            }
        }


        /// <summary> Imprime la factura
        /// </summary>
        /// <param name="documento"></param>
        public static void printInvoice(long documento)
        {
            string subtipodocumento = "";
            int Formato = 2;
            int numImpresiones = 1;
            object FormatoTipoImpresion = null;
            // int EsCredito = 0;
            QueryParams qp = new QueryParams();
            switch (Helpers.ObjToStr(subtipodocumento))
            {
                case "C":
                    qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'CF");
                    break;
                case "T":
                    qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'TKT");
                    break;
                case "E":
                    qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'EX");
                    break;
                case "L":
                    qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'LI");
                    break;
                case "S":
                    qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'SI");
                    break;
                default:
                    qp.AddReplaceParam("RV_DOMAIN", "DOCUMENTOS TIENDA' AND RV_LOW_VALUE = 'RR");
                    break;
            }


            Model.General.CgRefCodes dsDocTienda = new LLNet.Model.General.CgRefCodes();
            Helpers.Merge(CApp.bll.getTypedDataSet(dsDocTienda.GetType(), dsDocTienda.DOMAINS.TableName, qp), dsDocTienda);



            RegistryKey key = Registry.CurrentUser; // GUSTAVO MIRANDA
            key = key.OpenSubKey(@"Software\Logistika\POS Retail 8.0.0", true);
            if (key != null)
            {
                if (Convert.ToString(key.GetValue("FormatoImpresion", null)) != "")
                {
                    Formato = Convert.ToInt16(key.GetValue("FormatoImpresion", 2));
                }
            }

            RegistryKey keyImp = Registry.CurrentUser;

            keyImp = keyImp.OpenSubKey(@"Software\Logistika\POS Retail 8.0.0", true);
            if (keyImp != null)
            {
                if (Convert.ToString(keyImp.GetValue("FormatoTipoImpresion", null)) != "")
                {
                    FormatoTipoImpresion = keyImp.GetValue("FormatoTipoImpresion");
                }
            }
            if (Formato != 1)
            {
                if (Formato != 0)
                {
                    Formato = Convert.ToInt16(dsDocTienda.DOMAINS[0]["RV_MPNC03"]);
                }
            }

            // POR ALGUNA RAZON EL CODIGO NO SE EJECUTA BIEN POR ESO DE DEJAN LOS 2 IF ANIDADOS ARRIBA
            //  if (Formato != 0 || Formato != 1)
            //  {
            //     Formato = Convert.ToInt16(dsDocTienda.DOMAINS[0]["RV_MPNC03"]);
            // }

            if (dsDocTienda.DOMAINS.Count > 0)
            {
                // GUSTAVO MIRANDA  switch (Convert.ToInt16(dsDocTienda.DOMAINS[0].RV_MPNC03))
                numImpresiones = EsDeCredito(documento);

                switch (Formato)
                {
                    case 1:
                        for (int i = 0; i < numImpresiones; i++)
                        {
                            imprimirFacturaPreimpresa(documento, dsDocTienda.DOMAINS[0].RV_MPCC03);
                            ActualizaImpresiones(documento);
                        }

                        break;
                    case 3:
                        RegistryKey Printer = Registry.CurrentUser;
                        Printer = Printer.OpenSubKey(@"Software\Logistika\POS Retail 8.0.0\Impresoras\Preimpresos", true);

                        string printerFactura = "";

                        if (Printer != null)
                            printerFactura = Helpers.ObjToStr(Printer.GetValue("Factura", ""));
                        if (printerFactura == "")
                            printerFactura = dsDocTienda.DOMAINS[0].RV_MPCC00;
                        for (int i = 0; i < numImpresiones; i++)
                        {
                            imprimirDocumentoPreimpresaDOS(documento, printerFactura, dsDocTienda.DOMAINS[0].RV_MPCC03, Helpers.Nvl(FormatoTipoImpresion, dsDocTienda.DOMAINS[0].RV_MPCC02).ToString());
                            if (numImpresiones > 1)
                            {
                                Thread.Sleep(4000);  // SE DEJA ESTE TIEMPO PARA QUE NO SE LEA EL TXT ADECUADO
                            }
                            ActualizaImpresiones(documento);

                        }

                        break;

                    default:
                        for (int i = 0; i < numImpresiones; i++)
                        {
                            imprimirTicket(documento, dsDocTienda.DOMAINS[0].RV_MPCC00, Convert.ToInt32(dsDocTienda.DOMAINS[0].RV_MPNC02), Convert.ToInt64(dsDocTienda.DOMAINS[0].RV_MPCC02));
                        }
                        break;

                }
            }
        }

        private static void ActualizaImpresiones(long pDocumento)
        {
            QueryParams qp = new QueryParams();
            qp.AddReplaceParam("DOCUMENTO", Convert.ToString(pDocumento));
            CApp.bll.ExecuteSql("ActImpresiones", qp, "PDV");
        }

        #endregion

        #region btnCancelar_Click
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }
        #endregion

        #region FrmValCupon_KeyDown
        private void FrmValCupon_KeyDown(object sender, KeyEventArgs e)
        {

        }
        #endregion

        #region btnAceptar_Click
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            try
            {
                if (vMontoCupon > 0)
                {
                    //SI EL CUPON CREDIE ES APLICADO SE DEBEN ELIMINAR PRIMERO LOS
                    //DESCUENTOS ADICIONALES Y OFERTAS
                    QueryParams qpOF = new QueryParams();
                    qpOF.AddReplaceParam("DOCUMENTO", Program.FrmMainPos.Order.ToString());
                    CApp.bll.ExecuteSql("DeleteDiscountToDocument", qpOF, "PDV");
                    Program.FrmMainPos.RefreshData();
                    //LUEGO AHORA SI APLICAMOS EL CUPON
                    CrearCupon();
                    AplicarCupon();
                }
                vContinuar = true;
                this.Close();
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Validar Cupón Credie", true);
            }
        }


        #endregion

        #region btnConsultar_Click
        private void btnConsultar_Click(object sender, EventArgs e)
        {
            try
            {
                if (vMontoCupon > 0)
                {
                    CrearCupon();
                    ImpCuponCredie(long.Parse(Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS[0].DOCUMENTO.ToString()));
                }
                vContinuar = true;
                this.Close();
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Validar Cupón Credie", true);
            }
        }
        #endregion

        #region FrmValCupon_Load
        private void FrmValCupon_Load(object sender, EventArgs e)
        {
            try
            {
                mDatosIniciales();
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Validar Cupón Credie", true);
            }
        }
        #endregion
    }
}
