using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using LLNet.Utils;
using LLNet.GUI;
using System.Collections;
using Microsoft.Win32;
using PoswareRMS;
using DevExpress.XtraEditors;
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
using System.Xml;

namespace LLNet.Tienda.MainForms.Forms
{
    public partial class frmCierreJornada : LLNet.GUI.FormBases.frmBase
    {
        #region Declaraciones

        private bool cell_change;
        private decimal EfectivoC;
        private decimal EfectivoD;
        private decimal DevEfectivo;
        private decimal ApartadosAnu;
        private decimal MontoTarjetas;
        private DataSet dsEmisores = new DataSet();
        private DataSet dsemisor = new DataSet();
        private string TipoJornada;

        #endregion

        #region Constructor

        public frmCierreJornada()
        {
            InitializeComponent();

            GUI.CApp.TraducirForm(this);
        }

        #endregion

        #region Metodos Privados

        private void materializar_jornada(Utils.QueryParams qp)
        {
            try
            {
                GUI.CApp.bll.ExecuteSql("ACTUALIZAR_JORNADA", qp, "PDV").ToString();
            }
            catch (Exception ex)
            {
                GUI.CApp.ShowMessage(ex.Message, "Cierre de Jornada", true);
            }
        }

        private void diferencial_cambiario(Utils.QueryParams qp)
        {
            try
            {
                GUI.CApp.bll.ExecuteSql("DIFERENCIAL_CAMBIARIO", qp, "PDV").ToString();
            }
            catch (Exception ex)
            {
                GUI.CApp.ShowMessage(ex.Message, "Cierre de Jornada", true);
            }
        }

        private void actualizar()
        {
            // Actualizando informacion para Diferencia Cambiario
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());

            // Materializando informacion
            materializar_jornada(qp);

            dsPDV1.RET_V_DETALLE_PAGOS_X_JORNADA.Clear();
            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsPDV1.GetType(), dsPDV1.RET_V_DETALLE_PAGOS_X_JORNADA.TableName, qp), dsPDV1);
        }

        #endregion

        #region Metodos Sobreescritos

        public override void Init(object[] pArgs)
        {
            base.Init(pArgs);

            actualizar();
            TipoJornada = Utils.Helpers.Nvl(GUI.CApp.GetParam("TJPO"), "D").ToString();
            if (TipoJornada == "D")
            {
                tpJornadas.PageVisible = true;
                tpJornadasE.PageVisible = false;
            }
            else
            {
                tpJornadas.PageVisible = false;
                tpJornadasE.PageVisible = true;
            }

            dsPDV1.DOC_CUENTAS.Clear();
            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsPDV1.GetType(), dsPDV1.DOC_CUENTAS.TableName), dsPDV1);

            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            dsPDV1.RET_V_DETALLE_PAGOS_X_JORNADA.Clear();
            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsPDV1.GetType(), dsPDV1.RET_V_DETALLE_PAGOS_X_JORNADA.TableName, qp), dsPDV1);

            cell_change = false;

            gridView1.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.None;
            gridView1.OptionsView.ShowGroupPanel = false;
            gridView1.OptionsView.ColumnAutoWidth = false;
            //Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("RV_DOMAIN", "MONEDA");
            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsGeneral1.GetType(), dsGeneral1.CG_REF_CODES.TableName, qp), dsGeneral1);
            qp.Clear();
            qp.AddReplaceParam("RV_DOMAIN", "DENOMINACIONES ARQUEO");
            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsGeneral2.GetType(), dsGeneral2.CG_REF_CODES.TableName, qp), dsGeneral2);

            qp.Clear();
            qp.AddReplaceParam("RV_DOMAIN", "ESTADO ARQUEO");
            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsGeneral3.GetType(), dsGeneral3.CG_REF_CODES.TableName, qp), dsGeneral3);
            string SimboloMB = GUI.CApp.bll.GetSingleValue("SimboloMB", "PDV").ToString();
            string SimboloMA = GUI.CApp.bll.GetSingleValue("SimboloMA", "PDV").ToString();
            string Tarjeta1Desc = GUI.CApp.bll.GetSingleValue("Tarjeta1Desc", "PDV").ToString();
            string Tarjeta2Desc = GUI.CApp.bll.GetSingleValue("Tarjeta2Desc", "PDV").ToString();
            string Tarjeta3Desc = GUI.CApp.bll.GetSingleValue("Tarjeta3Desc", "PDV").ToString();
            rowEfectivoMB.Properties.Caption = rowEfectivoMB.Properties.Caption + " " + SimboloMB;
            rowEfectivoMA.Properties.Caption = rowEfectivoMA.Properties.Caption + " " + SimboloMA;

            rowRetirosMB.Properties.Caption = rowRetirosMB.Properties.Caption + " " + SimboloMB;
            rowRetirosMA.Properties.Caption = rowRetirosMA.Properties.Caption + " " + SimboloMA;

            rowTarjeta1.Properties.Caption = Tarjeta1Desc;
            rowTarjeta2.Properties.Caption = Tarjeta2Desc;
            rowTarjeta3.Properties.Caption = Tarjeta3Desc;
        }

        #endregion

        #region Eventos

        private void frmCierreJornada_Load(object sender, EventArgs e)
        {
            bool datosSistema = GUI.CApp.GetAccess("TDA_DatosSistema");

            colSISTEMA.Visible = datosSistema;
            colPAGADO.Visible = datosSistema;
            colPAGADO_OM.Visible = datosSistema;

            colSISTEMA.OptionsColumn.ShowInCustomizationForm = datosSistema;
            colPAGADO.OptionsColumn.ShowInCustomizationForm = datosSistema;
            colPAGADO_OM.OptionsColumn.ShowInCustomizationForm = datosSistema;

            gridView1.BestFitColumns();

            JornadasE();
            RefreshAmounts();

            Utils.QueryParams qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            qp.AddReplaceParam("USUARIO", GUI.CApp.usuario);
            GUI.CApp.bll.ExecuteSql("REGISTRO_CAJERO", qp, "PDV");

            DataSet ds_datos = new DataSet();
            ds_datos = GUI.CApp.bll.getDataSet("PDV", "ObtRegCaj", qp);
            this.gcRubros.DataSource = ds_datos;
            this.gcRubros.DataMember = ds_datos.Tables[0].ToString();

            DataSet ds_datos2 = new DataSet();
            ds_datos2 = GUI.CApp.bll.getDataSet("PDV", "ObtRegCajD", qp);
            this.gcRubrosD.DataSource = ds_datos2;
            this.gcRubrosD.DataMember = ds_datos2.Tables[0].ToString();

            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsPDV1.GetType(), dsPDV1.TDA_V_MONEDAS.TableName), dsPDV1);
            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsArqueos1.GetType(), dsArqueos1.CG_REF_CODES.TableName), dsArqueos1);
            cbxTipo.DataSource = dsArqueos1.CG_REF_CODES;
            this.cbxTipo.DisplayMember = "RV_MEANING";
            this.cbxTipo.ValueMember = "RV_LOW_VALUE";

            DatosDocsManuales();

            //FONABE
            //El parámetro indica si se habilita o no, el campo FONABE
            string bFONABE = GUI.CApp.GetParam("BEBF").ToString();
            if (bFONABE.Equals("N"))
                this.rowFONABE.Visible = false;
            /*else
            {
                qp = new QueryParams();
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                rowFONABE.Properties.Value = CApp.bll.GetSingleValue("WMS_F_FONABE", qp, "PDV");
            }*/

            //Verifica si el registro por cajero está cerrado
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            string result = Utils.Helpers.Nvl(GUI.CApp.bll.GetSingleValue("RegistCCerrado", qp, "PDV"), "").ToString();
            if (result != "")
            {
                if (result == "0")
                {
                    this.sbtnAgregar.Enabled = false;
                    this.sbtnGuardarRC.Enabled = false;
                    this.sbtnCerrarRC.Enabled = false;
                    this.sbtnQuitar.Enabled = false;
                    this.gcRubros.Enabled = false;
                    this.vGridControl1.Enabled = false;
                }
            }
        }

        private void JornadasE()
        {
            dsArqueos1.JORNADASE.Clear();
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsArqueos1.GetType(), dsArqueos1.JORNADASE.TableName, qp), dsArqueos1);

            qp.Clear();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            qp.AddReplaceParam("CAJA", Program.Caja.ToString());
            EfectivoC = Convert.ToDecimal(Utils.Helpers.Nvl(GUI.CApp.bll.GetSingleValue("EfectivoCaja", qp, "PDV"), 0));
            EfectivoD = Convert.ToDecimal(Utils.Helpers.Nvl(GUI.CApp.bll.GetSingleValue("EfectivoCajaD", qp, "PDV"), 0));
            MontoTarjetas = Convert.ToDecimal(Utils.Helpers.Nvl(GUI.CApp.bll.GetSingleValue("MontoTarjetas", qp, "PDV"), 0));

            qp.Clear();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            DevEfectivo = Convert.ToDecimal(Utils.Helpers.Nvl(GUI.CApp.bll.GetSingleValue("DevEfectivo", qp, "PDV"), 0));
            qp.Clear();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            ApartadosAnu = Convert.ToDecimal(Utils.Helpers.Nvl(GUI.CApp.bll.GetSingleValue("ApartadosAnulados", qp, "PDV"), 0));

            //FONABE
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal fonabe = Convert.ToDecimal(CApp.bll.GetSingleValue("WMS_F_FONABE", qp, "PDV").ToString());

            //RECARGAS Y SERVICIOS PUBLICOS
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal recargas_servp = Convert.ToDecimal(CApp.bll.GetSingleValue("TotalRecargas_ServP", qp, "PDV").ToString());
                       

            //CAJA CHICA
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal cajach = Convert.ToDecimal(CApp.bll.GetSingleValue("TotalCajaCH", qp, "PDV").ToString());

            //GIFT CARD
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal giftc = Convert.ToDecimal(CApp.bll.GetSingleValue("TotalGiftCard", qp, "PDV").ToString());

            //CREDIX
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal credx = Convert.ToDecimal(CApp.bll.GetSingleValue("TotalPagoCredix", qp, "PDV").ToString());


            //PAGOSCREDITO
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal pagoscredito = Convert.ToDecimal(CApp.bll.GetSingleValue("Totalpagocredi", qp, "PDV").ToString());


            //CREDICuotas
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal credicuotas = Convert.ToDecimal(CApp.bll.GetSingleValue("TotalCrediCuotas", qp, "PDV").ToString());

            //Dolares Recargas Nic
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal dolarecnic = Convert.ToDecimal(CApp.bll.GetSingleValue("DOLARCAJANIC", qp, "PDV").ToString());

            //Colones Recargas Nic
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal colonrecnic = Convert.ToDecimal(CApp.bll.GetSingleValue("COLONCAJANIC", qp, "PDV").ToString());

            //Colones Vueltos de facturas pagadas cn Dolares
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal vueltsFACTdol = Convert.ToDecimal(CApp.bll.GetSingleValue("VUELTFACDOL", qp, "PDV").ToString());

            
            dsArqueos1.JORNADASE.Rows[0]["Total_Sistema"] = EfectivoC + colonrecnic - DevEfectivo - fonabe - cajach + MontoTarjetas - ApartadosAnu + giftc + recargas_servp + credx + credicuotas + pagoscredito - vueltsFACTdol;
            rowTotalS.Properties.Value = EfectivoC - DevEfectivo - fonabe - cajach + MontoTarjetas - ApartadosAnu + giftc + recargas_servp + credx + credicuotas + pagoscredito ;

            //dsArqueos1.JORNADASE.Rows[0]["Total_SistemaD"] = EfectivoD - DevEfectivo ;
            dsArqueos1.JORNADASE.Rows[0]["Total_SistemaD"] = EfectivoD + dolarecnic ;
            //rowTotalSD.Properties.Value = EfectivoD - DevEfectivo ; //FALTAN LAS DEVOLUCIONES EN EFECTIVO
            rowTotalSD.Properties.Value = EfectivoD ; //FALTAN LAS DEVOLUCIONES EN EFECTIVO

            dsArqueos1.JORNADASE.Rows[0]["CrediCuotas"] = credicuotas;
            dsArqueos1.JORNADASE.Rows[0]["PagosCredito"] = pagoscredito;

            Utils.Helpers.Merge(GUI.CApp.bll.getDataSet("PDV", "EmisoresJornadasE"), dsEmisores);
            //Utils.Helpers.Merge(GUI.CApp.bll.getDataSet("PDV", "EmisoresPAGOSCREDITO"), dsemisor);
        }

        private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            object monto = gridView1.GetRowCellValue(e.RowHandle, colMONTO);
            object tasa_cambio = gridView1.GetRowCellValue(e.RowHandle, colTASA_CAMBIO);
            object monto_om = gridView1.GetRowCellValue(e.RowHandle, colMONTO_OM);

            if (cell_change == true)
            {
                cell_change = false;
                return;
            }

            if (monto == System.DBNull.Value || tasa_cambio == System.DBNull.Value || monto_om == System.DBNull.Value) return;
            if (System.Convert.ToDecimal(tasa_cambio.ToString()) <= 0) return;
            cell_change = true;

            switch (e.Column.FieldName)
            {
                case "MONTO":
                case "TASA_CAMBIO":
                    monto_om = Decimal.Round((Decimal)monto / (Decimal)tasa_cambio, 2);
                    gridView1.SetRowCellValue(e.RowHandle, colMONTO_OM, monto_om);
                    break;
                case "MONTO_OM":
                    monto = Decimal.Round((Decimal)monto_om * (Decimal)tasa_cambio, 2);
                    gridView1.SetRowCellValue(e.RowHandle, colMONTO, monto);
                    break;
            }

        }

        private void gridView1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
        {
            object editable = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, colEDITABLE);

            if (editable != System.DBNull.Value)
            {
                if (editable.ToString() == "NO")
                {
                    e.ErrorText = "Esta fila no es editable!";
                    e.Valid = false;
                }
            }
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (TipoJornada == "D")
            {
                GUI.CApp.bll.updateDataSet(dsPDV1, dsPDV1.RET_V_DETALLE_PAGOS_X_JORNADA.TableName);
                actualizar();
                //DialogResult = DialogResult.OK;
            }
            else
            {
                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("MONTO", Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Tarjeta1"], 0).ToString());
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                qp.AddReplaceParam("TIPO_PAGO", Utils.Helpers.Nvl(dsEmisores.Tables[0].Rows[0]["RV_LOW_VALUE"], 0).ToString());
                GUI.CApp.bll.ExecuteSql("UpdateJornadasE", qp, "PDV");
                qp.Clear();
                qp.AddReplaceParam("MONTO", Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["TARJETA2"], 0).ToString());
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                qp.AddReplaceParam("TIPO_PAGO", Utils.Helpers.Nvl(dsEmisores.Tables[0].Rows[1]["RV_LOW_VALUE"], 0).ToString());
                GUI.CApp.bll.ExecuteSql("UpdateJornadasE", qp, "PDV");
                qp.Clear();
                qp.AddReplaceParam("MONTO", Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["TARJETA3"], 0).ToString());
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                qp.AddReplaceParam("TIPO_PAGO", Utils.Helpers.Nvl(dsEmisores.Tables[0].Rows[2]["RV_LOW_VALUE"], 0).ToString());
                GUI.CApp.bll.ExecuteSql("UpdateJornadasE", qp, "PDV");
                qp.Clear();
                qp.AddReplaceParam("MONTO", Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["CREDIX"], 0).ToString());
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                qp.AddReplaceParam("TIPO_PAGO", Utils.Helpers.Nvl(dsEmisores.Tables[0].Rows[3]["RV_LOW_VALUE"], 0).ToString());
                GUI.CApp.bll.ExecuteSql("UpdateJornadasE", qp, "PDV");
                qp.Clear();
                qp.AddReplaceParam("MONTO", Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["CREDICUOTAS"], 0).ToString());
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                qp.AddReplaceParam("TIPO_PAGO", Utils.Helpers.Nvl(dsEmisores.Tables[0].Rows[4]["RV_LOW_VALUE"], 0).ToString());
                GUI.CApp.bll.ExecuteSql("UpdateJornadasE", qp, "PDV");





                GUI.CApp.bll.updateDataSet(dsPDV1, dsPDV1.RET_V_DETALLE_PAGOS_X_JORNADA.TableName);
                actualizar();
                //DialogResult = DialogResult.OK;
            }
        }

        private void frmCierreJornada_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Modifiers == Keys.Alt)
            {
                switch (e.KeyCode)
                {                   
                    case Keys.E:
                        btnCredCuotsEk_Click(null,null);
                        break;
                }
            }
            if (e.Modifiers == Keys.None)
            {
                switch (e.KeyCode)
                {
                    case Keys.F2:
                        sbtnCierreTienda_Click(null, null);
                        break;
                    case Keys.F5:
                        sbtnCierreTarj_Click(null, null);
                        break;
                    case Keys.F6:
                        btnCerrarJornada_Click(null, null);
                        break;
                    case Keys.F7:
                        if (tabJornadas.SelectedTabPageIndex == 3 && this.sbtnAgregar.Enabled)
                            sbtnAgregar_Click(null, null);
                        else
                            btnImprimirJ_Click(null, null);
                        break;
                    case Keys.F8:
                        if (tabJornadas.SelectedTabPageIndex == 3 && this.sbtnQuitar.Enabled)
                            sbtnQuitar_Click(null, null);
                        else
                            btnNuevoArq_Click(null, null);
                        break;
                    case Keys.F10:
                        if (tabJornadas.SelectedTabPageIndex == 3 && this.sbtnCerrarRC.Enabled)
                            sbtnCerrarRC_Click(null, null);
                        else
                            btnImprimir_Click(null, null);
                        break;
                    case Keys.F9:
                        if (tabJornadas.SelectedTabPageIndex == 1)
                            btnCorteParcial_Click(null, null);
                        else if (tabJornadas.SelectedTabPageIndex == 2)
                            btnGuardarArq_Click(null, null);
                        else if (tabJornadas.SelectedTabPageIndex == 3 && this.sbtnGuardarRC.Enabled)
                            sbtnGuardarRC_Click(null, null);
                        break;
                    case Keys.F11:
                        if (tabJornadas.SelectedTabPageIndex == 1)
                            btnRetiros_Click(null, null);
                        else if (tabJornadas.SelectedTabPageIndex == 2)
                            btnCerrarArq_Click(null, null);
                        else if (tabJornadas.SelectedTabPageIndex == 3)
                            sbtnReporteRC_Click(null, null);
                        else if (tabJornadas.SelectedTabPageIndex == 4)
                            sbtnReporteCC_Click(null, null);
                        break;
                    case Keys.F12:
                        if (tabJornadas.SelectedTabPageIndex == 4)
                            sbtnGuardarCC_Click(null, null);
                        else
                            btnAceptar_Click(null, null);
                        break;
                    case Keys.Escape:
                        btnSalir_Click(null, null);
                        break;
                }
            }
        }

        private void btnImprimir_Click(object sender, EventArgs e)
        {
            if (GUI.CApp.ValidateAccess("ResumenJornada", "Resumen de Jornada"))
            {
                using (frmResumenJornada rj = new frmResumenJornada())
                {
                    rj.Init(null);
                    rj.ShowDialog();
                }
            }
        }

        private void btnArqueo_Click(object sender, EventArgs e)
        {
            using (frmArqueoJornada arj = new frmArqueoJornada())
            {
                object[] obj = new object[] { Program.Jornada, gridView1.GetFocusedRowCellValue(colTIPO_PAGO) };
                arj.Init(obj);
                arj.ShowDialog(this);
            }
        }

        #endregion

        private void btnCorteParcial_Click(object sender, EventArgs e)
        {

        }

        private void btnRetiros_Click(object sender, EventArgs e)
        {
            if (GUI.CApp.ValidateAccess("Retiros", "Ingreso Retiros"))
            {
                using (frmRetiros ret = new frmRetiros())
                {
                    //object[] obj = new object[] { Program.Jornada, gridView1.GetFocusedRowCellValue(colTIPO_PAGO) };
                    //arj.Init(obj);
                    ret.ShowDialog(this);
                    if (tpJornadasE.PageVisible == true)
                    {
                        JornadasE();
                        RefreshAmounts();
                    }
                }
            }

        }

        private void xtraTabControl1_SelectedPageChanged(object sender, DevExpress.XtraTab.TabPageChangedEventArgs e)
        {
            if (e.Page.Text == tpJornadas.Text)
            {
                //btnArqueo.Visible = true;
                btnImprimir.Visible = true;
                btnRetiros.Visible = true;
                btnCorteParcial.Visible = true;
                if (tpJornadasE.PageVisible == true)
                {
                    JornadasE();
                    RefreshAmounts();
                }
            }
            else if (e.Page.Text == tpArqueos.Text)
            {
                btnArqueo.Visible = false;
                btnImprimir.Visible = false;
                btnRetiros.Visible = false;
                btnCorteParcial.Visible = false;
                LoadArqData();
            }
            else if (e.Page.Text == tpRegCajero.Text)
            {
                Utils.QueryParams qp = new QueryParams();
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                qp.AddReplaceParam("USUARIO", GUI.CApp.usuario);
                GUI.CApp.bll.ExecuteSql("REGISTRO_CAJERO", qp, "PDV");

                DataSet ds_datos = new DataSet();
                ds_datos = GUI.CApp.bll.getDataSet("PDV", "ObtRegCaj", qp);
                this.gcRubros.DataSource = ds_datos;
                this.gcRubros.DataMember = ds_datos.Tables[0].ToString();

                DataSet ds_datos2 = new DataSet();
                ds_datos2 = GUI.CApp.bll.getDataSet("PDV", "ObtRegCajD", qp);
                this.gcRubrosD.DataSource = ds_datos2;
                this.gcRubrosD.DataMember = ds_datos2.Tables[0].ToString();
            }
            else if (e.Page.Text == tpAsientoV.Text)
            {
                DatosCierreConsolidado();
            }
        }

        private void LoadArqData()
        {
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            //dsArqueos1.WMS_ARQUEOS.Clear();
            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsArqueos1.GetType(), dsArqueos1.WMS_ARQUEOS.TableName, qp), dsArqueos1);
            if (dsArqueos1.WMS_ARQUEOS.Rows.Count > 0)
            {
                qp.AddReplaceParam("ARQUEO", gvArqueos.GetFocusedRowCellValue(colARQUEO).ToString());
                Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsArqueos1.GetType(), dsArqueos1.WMS_DETALLE_ARQUEOS.TableName, qp), dsArqueos1);
            }

            EstadoArqueo();
        }

        private void gvArqueos_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            EstadoArqueo();
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("ARQUEO", gvArqueos.GetFocusedRowCellValue(colARQUEO).ToString());
            dsArqueos1.WMS_DETALLE_ARQUEOS.Clear();
            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsArqueos1.GetType(), dsArqueos1.WMS_DETALLE_ARQUEOS.TableName, qp), dsArqueos1);
        }

        private void EstadoArqueo()
        {
            if (dsArqueos1.WMS_ARQUEOS.Rows.Count > 0)
            {
                if (gvArqueos.GetFocusedRowCellValue(colESTADO).ToString() == "C")
                {
                    colCANTIDAD.OptionsColumn.AllowEdit = false;
                    colCANTIDAD.OptionsColumn.ReadOnly = true;
                }
                else
                {
                    colCANTIDAD.OptionsColumn.AllowEdit = true;
                    colCANTIDAD.OptionsColumn.ReadOnly = false;
                }
            }
        }

        private void btnNuevoArq_Click(object sender, EventArgs e)
        {
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            int ArqueosA = Convert.ToInt16(GUI.CApp.bll.GetSingleValue("ArqueosA", qp, "PDV"));

            if (ArqueosA <= 0)
            {

                string Arqueo = GUI.CApp.GetSecuence("WMS_S_ARQUEO").ToString();
                qp.AddReplaceParam("ARQUEO", Arqueo);
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                qp.AddReplaceParam("USUARIO", GUI.CApp.usuario);
                GUI.CApp.bll.ExecuteSql("NuevoArqueo", qp, "PDV");
                LoadArqData();
            }
            else
            {
                GUI.CApp.ShowMessage("Tiene al menos un Arqueo Abierto, debe Cerrarlo para poder crear uno Nuevo", "Nuevo Arqueo", true);

            }

        }

        private void btnGuardarArq_Click(object sender, EventArgs e)
        {
            gvArqueos.PostEditor();
            gvArqueos.UpdateCurrentRow();

            GUI.CApp.bll.updateDataSet(dsArqueos1, dsArqueos1.WMS_DETALLE_ARQUEOS.TableName);
            LoadArqData();
        }

        private void btnCerrarArq_Click(object sender, EventArgs e)
        {
            if (gvArqueos.GetFocusedRowCellValue(colESTADO).ToString() == "A")
            {
                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("ARQUEO", gvArqueos.GetFocusedRowCellValue(colARQUEO).ToString());
                GUI.CApp.bll.ExecuteSql("CerrarArqueo", qp, "PDV");
                LoadArqData();
            }
        }

        private void Vgc_CellValueChanged(object sender, DevExpress.XtraVerticalGrid.Events.CellValueChangedEventArgs e)
        {
            decimal TotalU = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Total_Retiros"], 0));
            decimal TotalRC = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["RetirosMB"], 0)); //TOTAL DE RETIROS EN COLONES
            decimal TotalRD = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["RetirosMA"], 0)); //TOTAL DE RETIROS EN DOLARES
            decimal Tarjeta1 = 0;
            decimal Tarjeta2 = 0;
            decimal Tarjeta3 = 0;
            decimal Credix = 0;
            decimal CrediCuotas = 0;
            

            Tarjeta1 = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["TArjeta1"], 0));
            Tarjeta2 = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["TArjeta2"], 0));
            Tarjeta3 = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["TArjeta3"], 0));
            Credix = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Credix"], 0));
            CrediCuotas = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["CrediCuotas"], 0));
            //PagosCredito = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["PagosCredito"], 0));


            if (e.Row.Name == "rowTarjeta1")
                Tarjeta1 = Convert.ToDecimal(Utils.Helpers.Nvl(e.Value, 0));
            if (e.Row.Name == "rowTarjeta2")
                Tarjeta2 = Convert.ToDecimal(Utils.Helpers.Nvl(e.Value, 0));
            if (e.Row.Name == "rowTarjeta3")
                Tarjeta3 = Convert.ToDecimal(Utils.Helpers.Nvl(e.Value, 0));
            if (e.Row.Name == "rowCredix")
                Credix = Convert.ToDecimal(Utils.Helpers.Nvl(e.Value, 0));
            if (e.Row.Name == "rowCrediCuotas")
                CrediCuotas = Convert.ToDecimal(Utils.Helpers.Nvl(e.Value, 0));
            /*if (e.Row.Name == "rowPagosCredito")
                PagosCredito = Convert.ToDecimal(Utils.Helpers.Nvl(e.Value, 0));*/

            //GIFT CARD
            QueryParams qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal giftc = Convert.ToDecimal(CApp.bll.GetSingleValue("TotalGiftCard", qp, "PDV").ToString());

            /*CREDIX
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal credx = Convert.ToDecimal(CApp.bll.GetSingleValue("TotalPagoCredix", qp, "PDV").ToString());
            */

            //Dolares Recargas Nic
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal dolarecnic = Convert.ToDecimal(CApp.bll.GetSingleValue("DOLARCAJANIC", qp, "PDV").ToString());

            //Colones Recargas Nic
            qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal colonrecnic = Convert.ToDecimal(CApp.bll.GetSingleValue("COLONCAJANIC", qp, "PDV").ToString());

            dsArqueos1.JORNADASE.Rows[0]["Total_Usuario"] = TotalRC + Tarjeta1 + Tarjeta2 + Tarjeta3 + giftc + Credix + CrediCuotas;
            //dsArqueos1.JORNADASE.Rows[0]["Total_Usuario"] = TotalRC + colonrecnic + Tarjeta1 + Tarjeta2 + Tarjeta3 + giftc + Credix + CrediCuotas;
            decimal Sobrante = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Total_Usuario"], 0)) - Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Total_Sistema"], 0));

            dsArqueos1.JORNADASE.Rows[0]["Total_UsuarioD"] = TotalRD;
            decimal SobranteDolar = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Total_UsuarioD"], 0)) - Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Total_SistemaD"], 0));


            dsArqueos1.JORNADASE.Rows[0]["Sobrante"] = Sobrante;
            dsArqueos1.JORNADASE.Rows[0]["Sobrante_Dolar"] = SobranteDolar;
            dsArqueos1.JORNADASE.Rows[0]["CrediCuotas"] = CrediCuotas;
            //dsArqueos1.JORNADASE.Rows[0]["PagosCredito"] = PagosCredito;
               
        }

        private void RefreshAmounts()
        {
            decimal TotalU = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Total_Retiros"], 0));
            decimal TotalRC = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["RetirosMB"], 0)); //TOTAL DE RETIROS EN COLONES
            decimal TotalRD = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["RetirosMA"], 0)); //TOTAL DE RETIROS EN DOLARES
           
            decimal Tarjeta1 = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["TArjeta1"], 0));
            decimal Tarjeta2 = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["TArjeta2"], 0));
            decimal Tarjeta3 = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["TArjeta3"], 0));
            decimal Credix = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Credix"], 0));
            decimal CrediCuotas = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["CrediCuotas"], 0));
            

            //GIFT CARD
            QueryParams qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            decimal giftc = Convert.ToDecimal(CApp.bll.GetSingleValue("TotalGiftCard", qp, "PDV").ToString());

            //dsArqueos1.JORNADASE.Rows[0]["Total_Usuario"] = TotalU + Tarjeta1 + Tarjeta2 + Tarjeta3 + giftc + Credix + CrediCuotas;
            dsArqueos1.JORNADASE.Rows[0]["Total_Usuario"] = TotalRC + Tarjeta1 + Tarjeta2 + Tarjeta3 + giftc + Credix + CrediCuotas;
            decimal Sobrante = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Total_Usuario"], 0)) - Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Total_Sistema"], 0));

            dsArqueos1.JORNADASE.Rows[0]["Total_UsuarioD"] = TotalRD ;
            decimal SobranteDolar = Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Total_UsuarioD"], 0)) - Convert.ToDecimal(Utils.Helpers.Nvl(dsArqueos1.JORNADASE.Rows[0]["Total_SistemaD"], 0));

            dsArqueos1.JORNADASE.Rows[0]["Sobrante"] = Sobrante;
            dsArqueos1.JORNADASE.Rows[0]["Sobrante_Dolar"] = SobranteDolar;
            
        }

        private void btnImprimirJ_Click(object sender, EventArgs e)
        {
            btnAceptar_Click(null, null);
            decimal MaxArqueo;
            Utils.QueryParams qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            MaxArqueo = Convert.ToDecimal(Utils.Helpers.Nvl(GUI.CApp.bll.GetSingleValue("MaxArqueo", qp, "Reports"), 0));

            Model.Reports.dsArqueos dsArqueos = new LLNet.Model.Reports.dsArqueos();
            Hashtable ht = new Hashtable();
            Utils.QueryParams QueryParams = new QueryParams();
            Utils.QueryParams qpDet = new QueryParams();
            QueryParams.AddReplaceParam("ARQUEO", MaxArqueo.ToString());
            QueryParams.AddReplaceParam("CAJA", Program.Caja.ToString());
            QueryParams.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            ht.Add(dsArqueos.WMS_ARQUEOS.TableName, QueryParams);
            ht.Add(dsArqueos.WMS_DETALLE_ARQUEOS.TableName, QueryParams);
            ht.Add(dsArqueos.JORNADASE.TableName, QueryParams);
            ht.Add(dsArqueos.WMS_V_DATOS_TIENDA, null);
            LLNet.Reports.BaseReports.XRInfo Info;
            Info = Reports.BaseReports.XRBase.SetInfo("ARQU");

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

            string printerGarantia = "";

            if (key != null)
                printerGarantia = Helpers.ObjToStr(key.GetValue("Arqueos", ""));

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

            LLNet.Reports.BaseReports.XRBase xrBase = new LLNet.Reports.BaseReports.XRBase(Info.BaseReport, Info.CodeReport);
            xrBase.Parametros = Info;
            xrBase.BllInstance = GUI.CApp.bll;
            xrBase.ExePath = GUI.CApp.ExeDir;
            xrBase.ExecuteReport(LLNet.Reports.BaseReports.XRExecution.XRPreview, false, ht);
        }


        private void btnCerrarJornada_Click(object sender, EventArgs e)
        {
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("USUARIO", GUI.CApp.usuario);
            qp.AddReplaceParam("CAJA", Program.Caja.ToString());
            object numtrans = GUI.CApp.bll.GetSingleValue("TieneTrans", qp, "PDV");
            if (numtrans == null)
                throw new Exception("No se puede hacer la validación");
            else if (int.Parse(numtrans.ToString()) > 0)
                GUI.CApp.ShowMessage("Antes de cerrar la jornada, debe hacer el cierre de tarjetas", "Cierre de Jornada", true);
            else
            {
                if (GUI.CApp.ShowMessage("¿Está seguro de cerrar la jornada actual?", "Cierre de Jornada", true, true) == DialogResult.OK)
                {
                    qp = new LLNet.Utils.QueryParams();
                    qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                    qp.AddReplaceParam("USUARIO", GUI.CApp.usuario);
                    qp.AddReplaceParam("ESTADO", "S");
                    GUI.CApp.bll.ExecuteSql("CerrarJornada", qp, "PDV");
                    Program.CerrarJornada();
                    this.Close();

                }
            }
        }

        private void labelControl1_Click(object sender, EventArgs e)
        {

        }

        #region sbtnCierreTarj_Click
        private void sbtnCierreTarj_Click(object sender, EventArgs e)
        {
            if (GUI.CApp.ValidateAccess("CierreTrans", "Cierre de transacciones"))
            {
                string supervisor = "";
                if (GUI.CApp.Sup != null && GUI.CApp.Sup != "")
                    supervisor = GUI.CApp.Sup;
                FrmOpcionesTrans ot = new FrmOpcionesTrans();
                ot.ShowDialog();
                //
                if (ot.Opcion == "R")
                    ReporteTrans();
                else if (ot.Opcion == "C")
                {
                    CApp.ShowMessage(@"Una vez finalizado este proceso, no podrá anular las transacciones de este corte con el Banco Nacional (pagos con tarjeta de crédito/débito)", "", true);
                    RealizarTransaccion(supervisor, 103, ot.Opcion);
                }
                else if (ot.Opcion == "Rv")
                {
                    RealizarTransaccion(supervisor, 104, ot.Opcion);
                }
                else if (ot.Opcion == "E")
                {
                    bool exito = false;
                    try
                    {
                        //Dirección web del wcf EVERTEC
                        string url = Helpers.Nvl(CApp.GetParam("BDW"), "").ToString();

                        if (url != "")
                        {
                            EVERTECEPS _Service = new EVERTECEPS(url);

                            string result = _Service.EchoTest("EchoTest");
                            exito = true;
                        }
                    }
                    catch (Exception ex)
                    {
                        CApp.ShowMessage(ex.Message, "Echo", true);
                    }

                    if (exito)
                        CApp.ShowMessage("¡Prueba exitosa!", "Echo", true);
                    else
                        CApp.ShowMessage("¡Prueba fallida!", "Echo", true);
                }
            }
        }
        #endregion

        #region RealizarTransaccion IGF
        /// <summary>
        /// Realiza el pago con tarjeta
        /// </summary>
        private void RealizarTransaccion(string Supervisor, int Opcion, string Tipo)
        {
            string Merchant = "", MerchantNumber = "", TerminalNumber = "";
            //
            Utils.QueryParams qp = new QueryParams();
            qp.AddReplaceParam("CAJA", Program.Caja.ToString());
            qp.AddReplaceParam("EMISOR", "2");
            //Verifica que la caja tenga en la base de datos, los datos de merchant, merchantnumber, terminalnumber
            if (GUI.CApp.bll.GetSingleValue("HayDatos", qp, "PDV").ToString() != "0")
            {
                //Obtiene el merchant, el merchant number y el terminal number
                DataSet ds_datos = GUI.CApp.bll.getDataSet("PDV", "ObtDatosB", qp);

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

                    Merchant = ds_datos.Tables[0].Rows[0].ItemArray[0].ToString();
                    MerchantNumber = ds_datos.Tables[0].Rows[0].ItemArray[1].ToString();
                    TerminalNumber = ds_datos.Tables[0].Rows[0].ItemArray[2].ToString();
                    //
                    //
                    //Realiza el proceso de cierre de las transacciones
                    BNCRGL.BNCR bn = new BNCRGL.BNCR();
                    bn.OpcionesTransacciones(Merchant, MerchantNumber, TerminalNumber, Opcion);
                    //
                    if (Tipo == "C")
                    {
                        qp = new QueryParams();
                        if (Supervisor != null && Supervisor != "")
                            qp.AddReplaceParam("USUARIO", Supervisor);
                        else
                            qp.AddReplaceParam("USUARIO", GUI.CApp.usuario);
                        qp.AddReplaceParam("CAJA", Program.Caja.ToString());
                        GUI.CApp.bll.ExecuteSql("CerrarTrans", qp, "PDV");
                    }
                }
            }
            else
                CApp.ShowMessage("Para esta caja, no existe el merchant, merchantnumber y terminalnumber", "", true);
        }
        #endregion

        #region ReporteTrans IGF
        /// <summary>
        /// Reporte de las transacciones del día en esa caja
        /// </summary>
        private void ReporteTrans()
        {
            DataSet ds_datos = new DataSet();
            Utils.QueryParams qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            ds_datos = GUI.CApp.bll.getDataSet("PDV", "Transacciones", qp);
            if (ds_datos.Tables.Count > 0 && ds_datos.Tables[0].Rows.Count > 0)
            {
                ReportDocument rep = new ReportDocument();
                rep.Load(GUI.CApp.ExeDir + "CRTarjetas.rpt");
                rep.Database.Tables[0].SetDataSource(ds_datos.Tables[0]);
                rep.Refresh();
                FrmReporte report = new FrmReporte(rep);
                report.ShowDialog();
            }
            else
                XtraMessageBox.Show("No hay transacciones para mostrar");
        }
        #endregion

        #region Registro por cajero

        #region DatosDocsManuales
        /// <summary>
        /// Carga en el grid, los datos de los documentos manuales
        /// </summary>
        private void DatosDocsManuales()
        {
            Utils.QueryParams qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());

            DataSet ds_dm = new DataSet();
            ds_dm = GUI.CApp.bll.getDataSet("PDV", "DocsManuales", qp);
            this.gcDocumentos.DataSource = ds_dm;
            this.gcDocumentos.DataMember = ds_dm.Tables[0].ToString();
        }
        #endregion

        #region sbtnGuardarRC_Click
        private void sbtnGuardarRC_Click(object sender, EventArgs e)
        {
            if (GUI.CApp.ValidateAccess("AlmRegxCajero", "Registro Por Cajero"))
            {
                DataSet ds = (DataSet)gcRubros.DataSource;
                Utils.QueryParams qp = new QueryParams();
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());

                bool almacenado = false;

                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    if (dr.ItemArray[3].ToString() != "")
                    {
                        qp = new QueryParams();
                        qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                        qp.AddReplaceParam("RUBRO", dr.ItemArray[1].ToString());
                        qp.AddReplaceParam("MONTO", dr.ItemArray[3].ToString());
                        //Almacena el monto del rubro
                        GUI.CApp.bll.ExecuteSql("AlmRubro", qp, "PDV");
                        //
                        almacenado = true;
                    }
                }
                if (almacenado)
                    GUI.CApp.ShowMessage("Datos almacenados", "Registro Por Cajero", false);
            }
        }
        #endregion

        #region sbtnCerrarRC_Click
        private void sbtnCerrarRC_Click(object sender, EventArgs e)
        {
            if (GUI.CApp.ValidateAccess("CierRegxCajero", "Registro Por Cajero"))
            {
                string supervisor = "";
                if (GUI.CApp.Sup != null && GUI.CApp.Sup != "")
                    supervisor = GUI.CApp.Sup;

                Utils.QueryParams qp = new QueryParams();
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                if (supervisor != null && supervisor != "")
                    qp.AddReplaceParam("USUARIO", supervisor);
                else
                    qp.AddReplaceParam("USUARIO", GUI.CApp.usuario);
                //
                GUI.CApp.bll.ExecuteSql("CerrarRegC", qp, "PDV");

                qp.AddReplaceParam("ESTADO", "S");
                GUI.CApp.bll.ExecuteSql("CerrarJornada", qp, "PDV");

                this.sbtnAgregar.Enabled = false;
                this.sbtnGuardarRC.Enabled = false;
                this.sbtnCerrarRC.Enabled = false;
                this.sbtnQuitar.Enabled = false;
                this.gcRubros.Enabled = false;
                this.vGridControl1.Enabled = false;

                Program.CerrarJornada();
                this.Close();
            }
        }
        #endregion

        #region sbtnAgregar_Click
        private void sbtnAgregar_Click(object sender, EventArgs e)
        {
            if (GUI.CApp.ValidateAccess("IngDocManual", "Documento Manual"))
            {
                if (this.rowTipo.Properties.Value == null)
                    CApp.ShowMessage("Seleccione un tipo de documento", "Registro Por Cajero", true);
                else if (this.rowSerie.Properties.Value == null)
                    CApp.ShowMessage("Digite la serie del documento", "Registro Por Cajero", true);
                else if (this.rowFactura.Properties.Value == null)
                    CApp.ShowMessage("Digite el número de factura", "Registro Por Cajero", true);
                else if (this.rowMonto.Properties.Value == null)
                    CApp.ShowMessage("Digite el monto de la factura", "Registro Por Cajero", true);
                else
                {
                    Utils.QueryParams qp = new QueryParams();
                    qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                    qp.AddReplaceParam("SERIE", rowSerie.Properties.Value.ToString());
                    qp.AddReplaceParam("NO_DOCUMENTO", rowFactura.Properties.Value.ToString());
                    qp.AddReplaceParam("MONTO", rowMonto.Properties.Value.ToString());
                    qp.AddReplaceParam("TIPO", rowTipo.Properties.Value.ToString());
                    qp.AddReplaceParam("USUARIO", GUI.CApp.usuario);
                    GUI.CApp.bll.ExecuteSql("AlmDocsM", qp, "PDV");
                    //
                    this.rowSerie.Properties.Value = null;
                    this.rowFactura.Properties.Value = null;
                    this.rowMonto.Properties.Value = null;
                    this.rowTipo.Properties.Value = null;
                    //
                    DatosDocsManuales();
                }
            }
        }
        #endregion

        #region sbtnQuitar_Click
        private void sbtnQuitar_Click(object sender, EventArgs e)
        {
            if (GUI.CApp.ValidateAccess("ElimDocManual", "Registro Por Cajero"))
            {
                if (this.gvDocumentos.FocusedRowHandle >= 0)
                {
                    string doc = Convert.ToString(this.gvDocumentos.GetRowCellValue(this.gvDocumentos.FocusedRowHandle, "DOCUMENTO"));

                    Utils.QueryParams qp = new QueryParams();
                    qp.AddReplaceParam("DOCUMENTO", doc);
                    qp.AddReplaceParam("USUARIO", GUI.CApp.usuario);
                    //
                    GUI.CApp.bll.ExecuteSql("AnulDocsM", qp, "PDV");
                    //
                    DatosDocsManuales();
                }
            }
        }
        #endregion

        #region sbtnReporteRC_Click
        private void sbtnReporteRC_Click(object sender, EventArgs e)
        {
            ReportDocument rep = new ReportDocument();
            rep.Load(GUI.CApp.ExeDir + "CRRegistroCajero.rpt");
            //
            DataSet ds_empresa = new DataSet();
            ds_empresa = GUI.CApp.bll.getDataSet("PDV", "WMS_EMPRESAS");
            if (ds_empresa.Tables.Count > 0 && ds_empresa.Tables[0].Rows.Count > 0)
            {
                rep.Database.Tables["WMS_EMPRESAS"].SetDataSource(ds_empresa.Tables[0]);
                //
                DataSet ds_datos = new DataSet();
                Utils.QueryParams qp = new QueryParams();
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                ds_datos = GUI.CApp.bll.getDataSet("PDV", "ObtRegCajRep", qp);
                if (ds_datos.Tables.Count > 0 && ds_datos.Tables[0].Rows.Count > 0)
                {
                    rep.Database.Tables["WMS_V_REGISTRO_CAJEROS"].SetDataSource(ds_datos.Tables[0]);
                    rep.Refresh();
                    FrmReporte report = new FrmReporte(rep);
                    report.ShowDialog();
                }
                else
                    GUI.CApp.ShowMessage("No hay datos para mostrar", "Registro Por Cajero", false);
            }
        }
        #endregion
        #endregion

        #region Cierre consolidado

        #region Diferencias
        /// <summary>
        /// Obtiene la diferencia entre el debe y el haber
        /// </summary>
        private void Diferencias()
        {
            string debe = "", haber = "";
            if (this.colDEBE.SummaryText != "" && this.colDEBE.SummaryText != "0.00" && this.colDEBE.SummaryText != "0,00")
                debe = this.colDEBE.SummaryItem.SummaryValue.ToString();
            else
                debe = "0";

            if (this.colHABER.SummaryText != "" && this.colHABER.SummaryText != "0.00" && this.colHABER.SummaryText != "0,00")
                haber = this.colHABER.SummaryItem.SummaryValue.ToString();
            else
                haber = "0";

            if (decimal.Parse(debe) < 0)
                debe = Convert.ToString(decimal.Parse(debe) * -1);
            if (decimal.Parse(haber) < 0)
                haber = Convert.ToString(decimal.Parse(haber) * -1);

            decimal difer = (decimal.Parse(haber) - decimal.Parse(debe));
            difer *= -1;

            this.lblDiferencia.Text = difer.ToString();
            if (difer > 0)
            {
                this.lblTDiferencia.ForeColor = Color.Black;
                this.lblDiferencia.ForeColor = Color.Black;
                this.lblTDiferencia.Text = "Diferencia (Sobrante)";
            }
            else if (difer == 0)
            {
                this.lblTDiferencia.ForeColor = Color.Black;
                this.lblDiferencia.ForeColor = Color.Black;
                this.lblTDiferencia.Text = "Diferencia";
            }
            else
            {
                this.lblTDiferencia.ForeColor = Color.Red;
                this.lblDiferencia.ForeColor = Color.Red;
                this.lblTDiferencia.Text = "Diferencia (Faltante)";
            }

            string debeD = "", haberD = "";
            if (this.colDEBED.SummaryText != "" && this.colDEBED.SummaryText != "0.00" && this.colDEBED.SummaryText != "0,00")
                debeD = this.colDEBED.SummaryItem.SummaryValue.ToString();
            else
                debeD = "0";

            if (this.colHABERD.SummaryText != "" && this.colHABERD.SummaryText != "0.00" && this.colHABERD.SummaryText != "0,00")
                haberD = this.colHABERD.SummaryItem.SummaryValue.ToString();
            else
                haberD = "0";

            if (decimal.Parse(debeD) < 0)
                debeD = Convert.ToString(decimal.Parse(debeD) * -1);
            if (decimal.Parse(haberD) < 0)
                haberD = Convert.ToString(decimal.Parse(haberD) * -1);

            decimal diferD = (decimal.Parse(haberD) - decimal.Parse(debeD));
            diferD *= -1;

            this.lblDiferenciaDolar.Text = diferD.ToString();
            if (diferD > 0)
            {
                this.lblTDiferenciaD.ForeColor = Color.Black;
                this.lblDiferenciaDolar.ForeColor = Color.Black;
                this.lblTDiferenciaD.Text = "Diferencia Dolar (Sobrante)";
            }
            else if (diferD == 0)
            {
                this.lblTDiferenciaD.ForeColor = Color.Black;
                this.lblDiferenciaDolar.ForeColor = Color.Black;
                this.lblTDiferenciaD.Text = "Diferencia Dolar";
            }
            else
            {
                this.lblTDiferenciaD.ForeColor = Color.Red;
                this.lblDiferenciaDolar.ForeColor = Color.Red;
                this.lblTDiferenciaD.Text = "Diferencia Dolar (Faltante)";
            }


            //
            // Observaciones del cierre consolidado
            object observ = GUI.CApp.bll.GetSingleValue("ObtObservaciones", "PDV");
            if (observ != null)
                this.txtObservaciones.Text = observ.ToString();
            else
                this.txtObservaciones.Text = "";
        }
        #endregion

        #region DatosCierreConsolidado
        /// <summary>
        /// Carga en el grid, los datos del cierre consolidado
        /// </summary>
        private void DatosCierreConsolidado()
        {
            QueryParams qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", null);
            GUI.CApp.bll.ExecuteSql("MovManuales", qp, "PDV");

            this.gcMovimientos.DataSource = null;
            this.gcMovimientos.DataMember = null;
            DataSet ds_dm = new DataSet();
            ds_dm = GUI.CApp.bll.getDataSet("PDV", "CierreCons");
            this.gcMovimientos.DataSource = ds_dm;
            this.gcMovimientos.DataMember = ds_dm.Tables[0].ToString();

            this.gcMovimientosDolar.DataSource = null;
            this.gcMovimientosDolar.DataMember = null;
            DataSet ds_dmd = new DataSet();
            ds_dmd = GUI.CApp.bll.getDataSet("PDV", "CierreConsD");
            this.gcMovimientosDolar.DataSource = ds_dmd;
            this.gcMovimientosDolar.DataMember = ds_dmd.Tables[0].ToString();
            //
            this.gcDepositos.DataSource = null;
            this.gcDepositos.DataMember = null;
            DataSet ds_dep = new DataSet();
            ds_dep = GUI.CApp.bll.getDataSet("PDV", "ObtDepositos");
            this.gcDepositos.DataSource = ds_dep;
            this.gcDepositos.DataMember = ds_dep.Tables[0].ToString();
            //
            DataSet ds_jorn = new DataSet();
            ds_jorn = GUI.CApp.bll.getDataSet("PDV", "ObtJornadas");
            if (ds_jorn.Tables.Count > 0 && ds_jorn.Tables[0].Rows.Count > 0)
            {
                this.cbxJornadas.DataSource = ds_jorn.Tables[0].DefaultView;
                this.cbxJornadas.DisplayMember = "JORNADA";
            }
            Diferencias();
            //
        }
        #endregion

        #region chbxJornada_CheckedChanged
        private void chbxJornada_CheckedChanged(object sender, EventArgs e)
        {
            if (this.chbxJornada.Checked)
            {
                this.cbxJornadas.Enabled = true;

                if (this.cbxJornadas.Text != "" && this.cbxJornadas.Text != null)
                    cbxJornadas_SelectedIndexChanged(null, null);
            }
            else
            {
                this.cbxJornadas.Enabled = false;
                DatosCierreConsolidado();
            }
        }
        #endregion

        #region cbxJornadas_SelectedIndexChanged
        private void cbxJornadas_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.chbxJornada.Checked)
            {
                Utils.QueryParams qp = new QueryParams();
                qp.AddReplaceParam("JORNADA", this.cbxJornadas.Text);
                //
                GUI.CApp.bll.ExecuteSql("MovManuales", qp, "PDV");
                //
                this.gcMovimientos.DataSource = null;
                this.gcMovimientos.DataMember = null;
                DataSet ds_dm = new DataSet();
                ds_dm = GUI.CApp.bll.getDataSet("PDV", "CierreConsXJorn", qp);
                if (ds_dm.Tables.Count > 0 && ds_dm.Tables[0].Rows.Count > 0)
                {
                    this.gcMovimientos.DataSource = ds_dm;
                    this.gcMovimientos.DataMember = ds_dm.Tables[0].ToString();
                }

                this.gcMovimientosDolar.DataSource = null;
                this.gcMovimientosDolar.DataMember = null;
                DataSet ds_dmd = new DataSet();
                ds_dmd = GUI.CApp.bll.getDataSet("PDV", "CierreConsXJornD", qp);
                if (ds_dmd.Tables.Count > 0 && ds_dmd.Tables[0].Rows.Count > 0)
                {
                    this.gcMovimientosDolar.DataSource = ds_dmd;
                    this.gcMovimientosDolar.DataMember = ds_dmd.Tables[0].ToString();
                }
                //
                this.gcDepositos.DataSource = null;
                this.gcDepositos.DataMember = null;
                DataSet ds_dep = new DataSet();
                ds_dep = GUI.CApp.bll.getDataSet("PDV", "ObtDepositosxJorn", qp);
                this.gcDepositos.DataSource = ds_dep;
                this.gcDepositos.DataMember = ds_dep.Tables[0].ToString();

                Diferencias();
            }
        }
        #endregion

        #region sbtnReporteCC_Click
        private void sbtnReporteCC_Click(object sender, EventArgs e)
        {
            CierreConsol.FrmOpcsReporte fmo = new LLNet.Tienda.MainForms.Forms.CierreConsol.FrmOpcsReporte();
            fmo.ShowDialog();

            string condicion = "";
            if (fmo.fecha != "")
                condicion = " FECHA_CIERRE = '" + fmo.fecha + "'";
            else if (fmo.idcierre != "")
                condicion = " IDCIERRE =" + fmo.idcierre;

            if (condicion != "")
            {
                ReportDocument rep = new ReportDocument();
                rep.Load(GUI.CApp.ExeDir + "CRCierreConsol.rpt");
                //
                DataSet ds_empresa = new DataSet();
                ds_empresa = GUI.CApp.bll.getDataSet("PDV", "WMS_EMPRESAS");
                rep.Database.Tables["WMS_EMPRESAS"].SetDataSource(ds_empresa.Tables[0]);
                //
                DataSet ds_datos = new DataSet();
                Utils.QueryParams qp = new QueryParams();
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                qp.AddReplaceParam("CONDIC", condicion);
                ds_datos = GUI.CApp.bll.getDataSet("PDV", "WMS_V_HIST_CIERRE_CONSOLIDADO", qp);
                if (ds_datos.Tables.Count > 0 && ds_datos.Tables[0].Rows.Count > 0)
                {
                    rep.Database.Tables["WMS_V_CIERRE_CONSOLIDADO"].SetDataSource(ds_datos.Tables[0]);

                    rep.Refresh();
                    FrmReporte report = new FrmReporte(rep);
                    report.ShowDialog();
                }
                else
                    GUI.CApp.ShowMessage("No hay datos para mostrar", "Cierre Consolidado", false);
                //
                rep = new ReportDocument();
                rep.Load(GUI.CApp.ExeDir + "CRDepositos.rpt");
                rep.Database.Tables["WMS_EMPRESAS"].SetDataSource(ds_empresa.Tables[0]);
                //
                DataSet ds_dep = new DataSet();
                ds_dep = GUI.CApp.bll.getDataSet("PDV", "WMS_V_HIST_DEPOSITOS", qp);
                if (ds_dep.Tables.Count > 0 && ds_dep.Tables[0].Rows.Count > 0)
                {
                    rep.Database.Tables["WMS_V_DEPOSITOS"].SetDataSource(ds_dep.Tables[0]);
                    rep.Refresh();
                    FrmReporte report = new FrmReporte(rep);
                    report.ShowDialog();
                }
                else
                    GUI.CApp.ShowMessage("No hay datos para mostrar", "Cierre Consolidado", false);
            }//if (condicion != "")
        }
        #endregion

        #region sbtnGuardarCC_Click
        private void sbtnGuardarCC_Click(object sender, EventArgs e)
        {
            if (this.cbxJornadas.Items.Count > 0)
            {
                QueryParams qp = new QueryParams();
                qp.AddReplaceParam("OBSERVACIONES", this.txtObservaciones.Text);
                GUI.CApp.bll.ExecuteSql("AlmObservaciones", qp, "PDV");
                //
                GUI.CApp.ShowMessage("Dato almacenado", "Cierre Consolidado", false);
            }
        }
        #endregion

        #region sbtnRefrescar_Click
        private void sbtnRefrescar_Click(object sender, EventArgs e)
        {
            DataSet ds_jorn = new DataSet();
            ds_jorn = GUI.CApp.bll.getDataSet("PDV", "ObtJornadas");
            if (ds_jorn.Tables.Count > 0 && ds_jorn.Tables[0].Rows.Count > 0)
            {
                this.cbxJornadas.DataSource = ds_jorn.Tables[0].DefaultView;
                this.cbxJornadas.DisplayMember = "JORNADA";

                //
                this.gcDepositos.DataSource = null;
                this.gcDepositos.DataMember = null;
                DataSet ds_dep = new DataSet();
                ds_dep = GUI.CApp.bll.getDataSet("PDV", "ObtDepositos");
                this.gcDepositos.DataSource = ds_dep;
                this.gcDepositos.DataMember = ds_dep.Tables[0].ToString();
            }
        }
        #endregion

        #region sbtnCierreTienda_Click
        private void sbtnCierreTienda_Click(object sender, EventArgs e)
        {
            try
            {
                if (GUI.CApp.ValidateAccess("CierreConsTienda", "CierreConsolidado"))
                {
                    string usuario = "";
                    if (GUI.CApp.Sup != null && GUI.CApp.Sup != "")
                        usuario = GUI.CApp.Sup;
                    else
                        usuario = GUI.CApp.usuario;

                    QueryParams qp = new QueryParams();
                    qp.AddReplaceParam("SECUENCIA", "WMS_S_IDCIERRE");
                    string idcierre = Helpers.Nvl(CApp.bll.GetSingleValue("SECUENCIA", qp, "General"), "").ToString();

                    qp = new QueryParams();
                    qp.AddReplaceParam("USUARIO", usuario);
                    qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                    qp.AddReplaceParam("IDCIERRE", idcierre);

                    GUI.CApp.bll.ExecuteSql("WMS_P_CIERRE_CONSOL", qp, "PDV");

                    object imprimir = GUI.CApp.bll.GetSingleValue("ImpReporteCC", "PDV");
                    if (imprimir.ToString() != "")
                    {
                        if (imprimir.ToString() == "1")
                        {
                            ReportDocument rep = new ReportDocument();
                            rep.Load(GUI.CApp.ExeDir + "CRCierreConsol.rpt");
                            //
                            DataSet ds_empresa = new DataSet();
                            ds_empresa = GUI.CApp.bll.getDataSet("PDV", "WMS_EMPRESAS");
                            rep.Database.Tables["WMS_EMPRESAS"].SetDataSource(ds_empresa.Tables[0]);
                            //
                            string condicion = "";
                            condicion = " IDCIERRE = '" + idcierre + "'";
                            //
                            DataSet ds_datos = new DataSet();
                            qp = new QueryParams();
                            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                            qp.AddReplaceParam("CONDIC", condicion);
                            ds_datos = GUI.CApp.bll.getDataSet("PDV", "WMS_V_HIST_CIERRE_CONSOLIDADO", qp);
                            if (ds_datos.Tables.Count > 0 && ds_datos.Tables[0].Rows.Count > 0)
                            {
                                rep.Database.Tables["WMS_V_CIERRE_CONSOLIDADO"].SetDataSource(ds_datos.Tables[0]);
                                rep.Refresh();
                                FrmReporte report = new FrmReporte(rep);
                                report.ShowDialog();
                            }
                            else
                                GUI.CApp.ShowMessage("No hay datos para mostrar", "Cierre Consolidado", false);
                            //
                            rep = new ReportDocument();
                            rep.Load(GUI.CApp.ExeDir + "CRDepositos.rpt");
                            rep.Database.Tables["WMS_EMPRESAS"].SetDataSource(ds_empresa.Tables[0]);
                            //
                            DataSet ds_dep = new DataSet();
                            ds_dep = GUI.CApp.bll.getDataSet("PDV", "WMS_V_HIST_DEPOSITOS", qp);
                            if (ds_dep.Tables.Count > 0 && ds_dep.Tables[0].Rows.Count > 0)
                            {
                                rep.Database.Tables["WMS_V_DEPOSITOS"].SetDataSource(ds_dep.Tables[0]);
                                rep.Refresh();
                                FrmReporte report = new FrmReporte(rep);
                                report.ShowDialog();

                                Program.CerrarJornada();
                                this.Close();
                            }
                            else
                                GUI.CApp.ShowMessage("No hay datos para mostrar", "Cierre Consolidado", false);
                        }
                        else
                            GUI.CApp.ShowMessage("No se puede imprimir el reporte del Cierre Consolidado, porque hay diferencias en el mismo", "Cierre Consolidado", false);
                    }
                    else
                        GUI.CApp.ShowMessage("No se puede imprimir el reporte del Cierre Consolidado", "Cierre Consolidado", false);
                }
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Cierre Consolidado", true);
            }
        }
        #endregion

        private void sbtnGuardarRD_Click(object sender, EventArgs e)
        {
            if (GUI.CApp.ValidateAccess("AlmRegxCajero", "Registro Por Cajero"))
            {
                DataSet ds = (DataSet)gcRubrosD.DataSource;
                Utils.QueryParams qp = new QueryParams();
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());

                bool almacenado = false;

                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    if (dr.ItemArray[3].ToString() != "")
                    {
                        qp = new QueryParams();
                        qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                        qp.AddReplaceParam("RUBRO", dr.ItemArray[1].ToString());
                        qp.AddReplaceParam("MONTO", dr.ItemArray[3].ToString());
                        //Almacena el monto del rubro
                        GUI.CApp.bll.ExecuteSql("AlmRubro", qp, "PDV");
                        //
                        almacenado = true;
                    }
                }
                if (almacenado)
                    GUI.CApp.ShowMessage("Datos almacenados", "Registro Por Cajero Dolar", false);
            }
        }

        private void sbtnCerrarRCD_Click(object sender, EventArgs e)
        {
            if (GUI.CApp.ValidateAccess("CierRegxCajero", "Registro Por Cajero"))
            {
                string supervisor = "";
                if (GUI.CApp.Sup != null && GUI.CApp.Sup != "")
                    supervisor = GUI.CApp.Sup;

                Utils.QueryParams qp = new QueryParams();
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                if (supervisor != null && supervisor != "")
                    qp.AddReplaceParam("USUARIO", supervisor);
                else
                    qp.AddReplaceParam("USUARIO", GUI.CApp.usuario);
                //
                GUI.CApp.bll.ExecuteSql("CerrarRegC", qp, "PDV");

                qp.AddReplaceParam("ESTADO", "S");
                GUI.CApp.bll.ExecuteSql("CerrarJornada", qp, "PDV");

                this.sbtnAgregar.Enabled = false;
                this.sbtnGuardarRC.Enabled = false;
                this.sbtnCerrarRC.Enabled = false;
                this.sbtnQuitar.Enabled = false;
                this.gcRubros.Enabled = false;
                this.vGridControl1.Enabled = false;

                Program.CerrarJornada();
                this.Close();
            }
        }

        private void sbtnReporteRCG_Click(object sender, EventArgs e)
        {
            ReportDocument rep = new ReportDocument();
            rep.Load(GUI.CApp.ExeDir + "CRRegistroCajero.rpt");
            //
            DataSet ds_empresa = new DataSet();
            ds_empresa = GUI.CApp.bll.getDataSet("PDV", "WMS_EMPRESAS");
            if (ds_empresa.Tables.Count > 0 && ds_empresa.Tables[0].Rows.Count > 0)
            {
                rep.Database.Tables["WMS_EMPRESAS"].SetDataSource(ds_empresa.Tables[0]);
                //
                DataSet ds_datos = new DataSet();
                Utils.QueryParams qp = new QueryParams();
                qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
                ds_datos = GUI.CApp.bll.getDataSet("PDV", "ObtRegCajRepD", qp);
                if (ds_datos.Tables.Count > 0 && ds_datos.Tables[0].Rows.Count > 0)
                {
                    rep.Database.Tables["WMS_V_REGISTRO_CAJEROS"].SetDataSource(ds_datos.Tables[0]);
                    rep.Refresh();
                    FrmReporte report = new FrmReporte(rep);
                    report.ShowDialog();
                }
                else
                    GUI.CApp.ShowMessage("No hay datos para mostrar", "Registro Por Cajero Dolares", false);
            }
        }

        #endregion        
        

        private void btnCredCuotsEk_Click(object sender, EventArgs e)
        {
            CreditEko.FrmRepCrediCuotsEk frepCCE = new CreditEko.FrmRepCrediCuotsEk();
            frepCCE.ShowDialog();
        }

      

        

      
    }
}