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

namespace LLNet.Tienda.MainForms.Forms.CreditEko
{
    public partial class FrmPagoCuots : Form
    {
        private string sec_REF;
        private Boolean penalizado = false;
        Decimal montoPenalizadoPorPagoAnticipado = 0;
        public FrmPagoCuots()
        {
            InitializeComponent();
        }

        private void btnConsCli_Click(object sender, EventArgs e)
        {
            string tarj = txtTarjeta.Text.Trim();
            penalizado = false;
            montoPenalizadoPorPagoAnticipado = 0;
            if (tarj != "")
            {//Consulta por tarjeta
                txtNomb.Text = "";
                txtced.Text = "";
                //txtmontocanc.Text = "";
                gCtrlCuots.DataSource = null;
                gCtrlCuots.Refresh();
                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("pTARJETA", txtTarjeta.Text);
                //Consulta los clientes de la BD
                DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "WMS_CLICREDIETARJ", qp);

                if (dsB.Tables.Count > 0)
                {
                    if (dsB.Tables[0].Rows.Count > 0)
                    {
                        int cantfila = dsB.Tables[0].Rows.Count;
                        if (cantfila < 1)
                        {//mas de 1 cédula                            
                            CApp.ShowMessage("Error: La tarjeta esta asociada a más de 1 cliente, favor reportarlo al departamento de soporte", "Tarjeta Puntos / Credi-E Ekono", false);
                        }
                        else
                        {//1 cédula
                            object[] datos = new object[1];
                            datos = dsB.Tables[0].Rows[0].ItemArray;
                            txtced.Text = datos[0].ToString();
                            txtNomb.Text = datos[1].ToString();
                            LLenarGrid();

                            //Cambia monto
                            foreach (int handle in gridView1.GetSelectedRows())
                            {
                                txtmontocanc.Text = Convert.ToString(gridView1.GetRowCellValue(handle, gridView1.Columns[4]));
                            }

                        }
                    }
                }
                else
                {
                    CApp.ShowMessage("No se obtienen datos del cliente, favor revisar que el cliente este asociado", "Tarjeta Puntos / Credi-E Ekono", false);
                }

            }
            else
            {
                CreditEko.FrmBuscarCliente fbcli = new FrmBuscarCliente(1);
                fbcli.ShowDialog(this);

                if (fbcli.DialogResult == DialogResult.OK)
                {
                    txtced.Text = fbcli.Cedula;
                    txtNomb.Text = fbcli.Nombre;

                    LLenarGrid();
                    //Cambia monto
                    foreach (int handle in gridView1.GetSelectedRows())
                    {
                        txtmontocanc.Text = Convert.ToString(gridView1.GetRowCellValue(handle, gridView1.Columns[4]));
                    }
                }
                else
                {
                    gCtrlCuots.DataSource = null;
                    gCtrlCuots.Refresh();
                }
            }
        }

        private void LLenarGrid()
        {
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("CEDULA", txtced.Text);
            qp.AddReplaceParam("NOMBRE", txtNomb.Text);
            //Consulta los clientes de la BD
            DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "WMS_PAGPCREDITOEK", qp);
            if (dsB.Tables.Count > 0)
            {
                gCtrlCuots.DataSource = dsB.Tables[0];
                gCtrlCuots.Refresh();
            }
            else
            {
                gCtrlCuots.DataSource = null;
                gCtrlCuots.Refresh();
            }
        }

        /// <summary>SELECCIONA LOS PAGOS DE LA JORNADA ACTUAL
        /// </summary>
        private void LLenarGridPags()
        {
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            //Jornada
            qp.AddReplaceParam("pJORNADA", Program.Jornada.ToString());

            //Consulta los pagos de la BD
            DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "PAGSCUOTSCREDEK", qp);
            if (dsB.Tables.Count > 0)
            {
                gcVouchers.DataSource = dsB.Tables[0];
                gcVouchers.Refresh();
            }
            else
            {
                gcVouchers.DataSource = null;
                gcVouchers.Refresh();
            }
        }

        private void sbtnAceptar_Click(object sender, EventArgs e)
        {
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp = new QueryParams();
            qp.AddReplaceParam("p_cedula", txtced.Text);

            String respuesta = Convert.ToString(GUI.CApp.bll.GetSingleValue("ACC_CONS_PENALI_CREDIE", qp, "PDV"));

            //Monto transacción
            String VALORTOTALCREDITO = Convert.ToString(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "VALORTOTALCREDITO"));
            Decimal TotalCredito = 0;
            Decimal.TryParse(VALORTOTALCREDITO, out TotalCredito);
            //Monto pagado por el cliente
            String VALORPAGADO = txtmontocanc.Text;
            Decimal MontoPagado = 0;
            Decimal.TryParse(VALORPAGADO, out MontoPagado);

            //Mensaje personalizado que se muestra al cliente cuando realiza un pago anticipado de credi e
            String mensajePorPagoAnticipado = Convert.ToString(LLNet.Tienda.MainForms.Forms.BacTasa0.Logica.GET_CG_PARAMETERS_VALUE("ARC3"));
            
            if (MontoPagado >= TotalCredito)
            {
                Decimal porcentajePenalizacion = (Decimal.Parse(LLNet.Tienda.MainForms.Forms.BacTasa0.Logica.GET_CG_PARAMETERS_VALUE("ARC2")) / 100);
                montoPenalizadoPorPagoAnticipado = Decimal.Parse(VALORTOTALCREDITO) * porcentajePenalizacion;

                Decimal TotalMontopenalizado_10 = TotalCredito + TotalCredito * (Decimal.Parse(LLNet.Tienda.MainForms.Forms.BacTasa0.Logica.GET_CG_PARAMETERS_VALUE("ARC4")) / 100);
                Decimal TotalMontoPenalizado_5 = Decimal.Round(TotalCredito + montoPenalizadoPorPagoAnticipado, 2);

                if (respuesta.Trim().Equals("1"))
                {
                    if (MontoPagado < TotalMontoPenalizado_5)
                    {
                        CApp.ShowMessage(mensajePorPagoAnticipado + TotalMontoPenalizado_5.ToString(), "Monto total a cancelar", false);
                        return;
                    }
                    else if (MontoPagado > TotalMontopenalizado_10)
                    {
                        CApp.ShowMessage("El monto a cancelar no debe sobre pasar al monto total " +
                                       Decimal.Round((Decimal.Parse(VALORTOTALCREDITO) * Decimal.Parse(LLNet.Tienda.MainForms.Forms.BacTasa0.Logica.GET_CG_PARAMETERS_VALUE("ARC4")) / 100 +
                                       Decimal.Parse(VALORTOTALCREDITO)), 2).ToString(), "Monto total a cancelar", false);
                        return;
                    }
                    else
                    {
                        penalizado = true;
                        PagoCuotas();
                        txtced.Text = "";
                        txtmontocanc.Text = "";
                        txtNomb.Text = "";
                        txtTarjeta.Text = "";
                        penalizado = false;
                        montoPenalizadoPorPagoAnticipado = 0;
                        LLenarGrid();
                        imprimir(sec_REF);
                    }
                }
                else
                {
                    if (MontoPagado > TotalMontopenalizado_10)
                    {
                        CApp.ShowMessage("El monto a cancelar no debe sobre pasar al monto total " +
                                       Decimal.Round((Decimal.Parse(VALORTOTALCREDITO) * Decimal.Parse(LLNet.Tienda.MainForms.Forms.BacTasa0.Logica.GET_CG_PARAMETERS_VALUE("ARC4")) / 100 +
                                       Decimal.Parse(VALORTOTALCREDITO)), 2).ToString(), "Monto total a cancelar", false);
                        return;
                    }
                    else
                    {
                        PagoCuotas();
                        txtced.Text = "";
                        txtmontocanc.Text = "";
                        txtNomb.Text = "";
                        txtTarjeta.Text = "";
                        penalizado = false;
                        montoPenalizadoPorPagoAnticipado = 0;
                        LLenarGrid();
                        imprimir(sec_REF);
                    }
                }
            }
            else
            {
                PagoCuotas();
                txtced.Text = "";
                txtmontocanc.Text = "";
                txtNomb.Text = "";
                txtTarjeta.Text = "";
                penalizado = false;
                montoPenalizadoPorPagoAnticipado = 0;
                LLenarGrid();
                imprimir(sec_REF);
            }
        }

        #region imprimirVoucher

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


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

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

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

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

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

        private void PagoCuotas()
        {
            sec_REF = Sec_CredEK();
            if (this.gridView1.FocusedRowHandle >= 0)
            {
                //Número de autorización
                string prefsuc = Convert.ToString(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "PREFIJOSUCURSAL"));
                //Pin
                string NUmcredito = Convert.ToString(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "NUMCREDITO"));
                //Número de tarjeta enmascarado
                string cuotasenmora = Convert.ToString(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "CUOTASENMORA"));
                //Fecha de vencimiento
                string VALORVENCIDO = Convert.ToString(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "VALORVENCIDO"));
                //Número de referencia de la transacción
                string VALORXCUOTA = Convert.ToString(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "VALORXCUOTA"));
                //Monto transacción
                string VALORTOTALCREDITO = Convert.ToString(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "VALORTOTALCREDITO"));
                //Moneda
                string moned = Convert.ToString(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "MONEDA"));
                //Numero Credix
                string numcrdx = Convert.ToString(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "NUM_CRDX"));

                RegistroBDPago("", txtced.Text, txtNomb.Text, prefsuc, NUmcredito, cuotasenmora, VALORVENCIDO, VALORXCUOTA, VALORTOTALCREDITO, sec_REF, txtmontocanc.Text);
            }
        }

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

        //Registrar en BD la transaccion Pago de una cuota pendiente
        private void RegistroBDPago(string CREADO_EL, string cedula, string nombr, string prefijosucursal, string NUMCREDITO, string CUOTASENMORA,
         string VALORVENCIDO, string VALORXCUOTA, string VALORTOTALCREDITO, string refer, string MONTO_CANCELADO)
        {      /*
                &&pCEDULA&&' , '&&pNOMBRE&&' , '&&pPREFSUC&&' , 
                    &&pNUMCREDITO&& , &&pCUOTASENMORA&& , &&pVALORVENCIDO&& , 
                    &&pVALORXCUOTA&& , &&pVALORTOTALCREDITO&& , '&&pCREADO_EL&&' , 
                    &&pMONTO_CANCELADO&& , &&pJORNADA&& , &&pREFER&&
                */
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();

            if (CREADO_EL == "")
            {
                qp.AddReplaceParam("pCREADO_EL", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pCREADO_EL", CREADO_EL);
            }
            if (cedula == "")
            {
                qp.AddReplaceParam("pCEDULA", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pCEDULA", cedula);
            }
            if (nombr == "")
            {
                qp.AddReplaceParam("pNOMBRE", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pNOMBRE", nombr);
            }
            if (prefijosucursal == "")
            {
                qp.AddReplaceParam("pPREFSUC", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pPREFSUC", prefijosucursal);
            }
            if (NUMCREDITO == "")
            {
                qp.AddReplaceParam("pNUMCREDITO", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pNUMCREDITO", NUMCREDITO);
            }
            if (CUOTASENMORA == "")
            {
                qp.AddReplaceParam("pCUOTASENMORA", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pCUOTASENMORA", CUOTASENMORA);
            }
            if (VALORVENCIDO == "")
            {
                qp.AddReplaceParam("pVALORVENCIDO", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pVALORVENCIDO", VALORVENCIDO);
            }
            if (VALORXCUOTA == "")
            {
                qp.AddReplaceParam("pVALORXCUOTA", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pVALORXCUOTA", VALORXCUOTA);
            }
            if (VALORTOTALCREDITO == "")
            {
                qp.AddReplaceParam("pVALORTOTALCREDITO", DBNull.Value.ToString());
            }
            else
            {
                qp.AddReplaceParam("pVALORTOTALCREDITO", VALORTOTALCREDITO);
            }
            if (MONTO_CANCELADO == "")
            {
                qp.AddReplaceParam("pMONTO_CANCELADO", DBNull.Value.ToString());
            }
            else
            {
                qp.AddReplaceParam("pMONTO_CANCELADO", MONTO_CANCELADO);
            }
            if (refer == "")
            {
                qp.AddReplaceParam("pREFER", DBNull.Value.ToString());
            }
            else
            {
                qp.AddReplaceParam("pREFER", refer);
            }
            //Jornada
            qp.AddReplaceParam("pJORNADA", Program.Jornada.ToString());

            if (penalizado)
            {
                qp.AddReplaceParam("pDEUDAPAGADA", "1");
            }
            else
            {
                qp.AddReplaceParam("pDEUDAPAGADA", "0");
            }


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

        /// <summary>Registrar en BD la transaccion anular Pago de una cuota
        /// </summary>
        /// <param name="prefijosucursal"></param>
        /// <param name="NUMCREDITO"></param>
        /// <param name="refer"></param>
        /// <param name="usuario"></param>
        private void AnularPago(string prefijosucursal, string NUMCREDITO, string refer, string usuario)
        {
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();


            if (prefijosucursal == "")
            {
                qp.AddReplaceParam("pPREFSUC", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pPREFSUC", prefijosucursal);
            }
            if (NUMCREDITO == "")
            {
                qp.AddReplaceParam("pNUMCREDITO", DBNull.Value.ToString().ToString());
            }
            else
            {
                qp.AddReplaceParam("pNUMCREDITO", NUMCREDITO);
            }
            if (refer == "")
            {
                qp.AddReplaceParam("pREFER", DBNull.Value.ToString());
            }
            else
            {
                qp.AddReplaceParam("pREFER", refer);
            }
            if (usuario == "")
            {
                qp.AddReplaceParam("pUSUARIO", DBNull.Value.ToString());
            }
            else
            {
                qp.AddReplaceParam("pUSUARIO", usuario);
            }

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

        private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            if (gridView1.RowCount > 0 && gridView1.Columns.Count > 0)
            {
                txtmontocanc.Text = Convert.ToString(gridView1.GetRowCellValue(e.FocusedRowHandle, gridView1.Columns[4]));
            }
        }

        private void sbtnCancelar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void FrmPagoCuots_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Modifiers == Keys.Alt)
            {
                switch (e.KeyCode)
                {
                    case Keys.B:
                        btnConsCli_Click(null, null);
                        break;
                    case Keys.M:
                        btnCuots.PerformClick();
                        break;
                    case Keys.A:
                        btnAnular.PerformClick();
                        break;
                    case Keys.R:
                        sBtn_Reimp.PerformClick();
                        break;
                    case Keys.E:
                        sBtnRep.PerformClick();
                        break;
                }
            }
            if (e.Modifiers == Keys.None)
            {
                switch (e.KeyCode)
                {
                    case Keys.F12:
                        if (sbtnAceptar.Enabled == true)
                            sbtnAceptar.PerformClick();
                        break;
                    case Keys.Escape:
                        sbtnCancelar_Click(null, null);
                        break;
                    case Keys.F5:
                        if (sbtnAnular.Visible == true)
                            sbtnAnular_Click(null, null);
                        break;
                    case Keys.F6:
                        if (btnReimprimir.Visible == true)
                            btnReimprimir_Click(null, null);
                        break;
                }
            }
        }

        private void btnCuots_Click(object sender, EventArgs e)
        {
            pnlCuotsCreEko.Visible = true;
            pnlPagos.Visible = false;
            pnlReporte.Visible = false;
        }

        private void btnAnular_Click(object sender, EventArgs e)
        {
            if (GUI.CApp.ValidateAccess("AnlrCrEk", "Anula un Pago Credicuotas Ekono"))
            {
                pnlCuotsCreEko.Visible = false;
                pnlPagos.Visible = true;
                sbtnAnular.Visible = true;
                btnReimprimir.Visible = false;
                pnlReporte.Visible = false;
                LLenarGridPags();
            }
        }

        private void btnReimprimir_Click(object sender, EventArgs e)
        {
            foreach (int handle in gvVouchers.GetSelectedRows())
            {
                string refer = Convert.ToString(gvVouchers.GetRowCellValue(handle, gvVouchers.Columns[0]));
                imprimir(refer);
            }
        }

        private void sbtnAnular_Click(object sender, EventArgs e)
        {
            foreach (int handle in gvVouchers.GetSelectedRows())
            {
                string refer = Convert.ToString(gvVouchers.GetRowCellValue(handle, gvVouchers.Columns[0]));
                string suc = Convert.ToString(gvVouchers.GetRowCellValue(handle, gvVouchers.Columns[3]));
                string numcred = Convert.ToString(gvVouchers.GetRowCellValue(handle, gvVouchers.Columns[4]));
                string supervisor = "";
                if (GUI.CApp.Sup != null && GUI.CApp.Sup != "")
                {
                    supervisor = GUI.CApp.Sup;
                }
                else
                {
                    supervisor = GUI.CApp.usuario;
                }
                AnularPago(suc, numcred, refer, supervisor);
            }
            LLenarGridPags();
        }

        private void sBtn_Reimp_Click(object sender, EventArgs e)
        {
            pnlCuotsCreEko.Visible = false;
            pnlPagos.Visible = true;
            sbtnAnular.Visible = false;
            btnReimprimir.Visible = true;
            pnlReporte.Visible = false;
            LLenarGridPags();
        }

        private void sBtnRep_Click(object sender, EventArgs e)
        {
            pnlCuotsCreEko.Visible = false;
            pnlPagos.Visible = false;
            pnlReporte.Visible = true;
            pnlReporte.Visible = true;
            ArqJornadaBN();
        }

        /// <summary>Arqueo de la Jornada Actual </summary>
        private void ArqJornadaBN()
        {
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("pJORNADA", Program.Jornada.ToString());
            qp.AddReplaceParam("pCaja", Program.Caja.ToString());

            DataSet dsB = GUI.CApp.bll.getDataSet("PDV", "PAGSCUOTSCREDEK", qp);
            LLNet.Tienda.Reportes.CR_ArqInstcdt objRpt = new LLNet.Tienda.Reportes.CR_ArqInstcdt();
            LLNet.Tienda.Reportes.dsArqInstcdt dsdatos = new LLNet.Tienda.Reportes.dsArqInstcdt();

            objRpt.Load("C\\ekono\\POS Retail 8.0.0\\CR_ArqInstcdt.rpt");

            long total = 0; //monto total de la suma de los montos de cada recibo

            foreach (DataRow Fila in dsB.Tables[0].Rows)
            {
                object[] datos = new object[6];
                //W.REFERENCIA, W.CEDULA, W.NOMBRE, W.PREFIJOSUCURSAL, W.NUMCREDITO, W.MONTO_CANCELADO
                datos[0] = Convert.ToString(Fila[0]); //W.REFERENCIA
                datos[1] = Convert.ToString(Fila[1]); //W.CEDULA 
                datos[2] = Convert.ToString(Fila[2]); //.NOMBRE
                datos[3] = Convert.ToString(Fila[3]); //PREFIJOSUCURSAL         
                datos[4] = Convert.ToString(Fila[4]); //W.NUMCREDITO          
                datos[5] = Convert.ToString(Fila[5]); //W.MONTO_CANCELADO         
                total += Convert.ToInt64(Fila[5]);
                dsdatos.Tables[0].Rows.Add(datos);
            }

            string[] totales = new string[5];
            totales[0] = Program.Jornada.ToString(); //JORNADA
            totales[1] = Program.Caja.ToString(); //CAJA
            totales[2] = "Cuotas CrediCuotas Ekono"; //TITULO
            totales[3] = total.ToString(); //SUB TOTAL ALO PREPAGO
            totales[4] = string.Empty; //SUB TOTAL PUNTOS NARANJA                

            dsdatos.Tables[1].Rows.Add(totales);

            objRpt.SetDataSource((DataSet)dsdatos);

            crystalReportViewer1.ReportSource = objRpt;
            crystalReportViewer1.Refresh();
        }

        private void sBtnSalirR_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void sBtnSalir_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

    }
}