protected void btnGuardar_Click(object sender, EventArgs e)
        {
            for (int i = 20; i <= 29; i++)
            {
                dgvPagoLetra.Columns[i].Visible = true;
            }

            //primero guardar la cabecera tabla tbliquCob
            clstbliqCobranza formliq = new clstbliqCobranza();
            tbliqCobranza objliq = new tbliqCobranza();
            int idliquidacion = formliq.MaxOpeCod() + 1;
            objliq.idliqcob = idliquidacion;
            objliq.fecreg = Convert.ToDateTime( txtFecha.Text);

            objliq.efectivo = Convert.ToDecimal(lblCobEfecSol.Text);
            objliq.efectivodol = Convert.ToDecimal(lblCobEfecDol.Text);

            objliq.ctaViatico = Convert.ToDecimal(txtctaViasoles.Text);
            objliq.ctaViaticodol = Convert.ToDecimal(txtctaViadolares.Text);

            objliq.depositos = Convert.ToDecimal(lblCobSnefeSol.Text);
            objliq.depositosdol = Convert.ToDecimal(lblCobSnefeDol.Text);

            objliq.GastVarios = Convert.ToDecimal(txtGasVSol.Text);
            objliq.GastVariosdol = Convert.ToDecimal(txtGasVDol.Text);

            objliq.cheques = Convert.ToDecimal(txtchqSol.Text);
            objliq.chequesdol = Convert.ToDecimal(txtchqDol.Text);

            objliq.inefectivo = Convert.ToDecimal(txtegrEfeSol.Text);
            objliq.inefectivodol = Convert.ToDecimal(txtegrEfeDol.Text);

            objliq.totsoles = Convert.ToDecimal(lblSalSoles.Text);
            objliq.totdolares = Convert.ToDecimal(lblSalDolares.Text);
            objliq.observaciones = txtObservaciones.Text;
            // falta ingresar las observaiones y el recibidor
            int cod_det;
            int ultimo;
            int cod_ven;
            int cod_letra;
            int cod_cliente;
            int primero=0;
            decimal monto_total;
            decimal monto_cuota;
            decimal pago;
            DateTime fecha, fecha_min = DateTime.Now, fecha_max = DateTime.Now;

            int flag = 0;

            formliq.fnletraInsertar(objliq);
            foreach (GridViewRow row in dgvPagoLetra.Rows)
            {
                TextBox txtMon = row.FindControl("txtmonto") as TextBox;
                TextBox txtFecPago = row.FindControl("txtFecPago") as TextBox;
                TextBox txtnumrecibo = row.FindControl("txtnumrecibo") as TextBox;
                CheckBox chktipPago = row.FindControl("chktipPago") as CheckBox;

                try
                {
                    if (txtMon.Text.Length > 0 && Convert.ToDouble(txtMon.Text) > 0.00)
                    {
                        txtMon.Text = Convert.ToDouble(txtMon.Text).ToString("N");
                    }
                    else
                    {
                        txtMon.Text = Convert.ToDouble("0.00").ToString("N");
                        dgvPagoLetra.Rows[row.RowIndex].Visible= false;
                        //dgvPagoLetra.Columns[i].Visible = true;

                    }
                }
                catch
                {
                    txtMon.Text = Convert.ToDouble("0.00").ToString("N");
                    dgvPagoLetra.Rows[row.RowIndex].Visible = false;

                }

                txtMon.Text = Convert.ToDouble(txtMon.Text).ToString("N");
            }

            clspag_Letra form = new clspag_Letra();
            int cod_mov = Convert.ToInt32(form.Maxcod_pago()) + 1;
            foreach (GridViewRow row in dgvPagoLetra.Rows)
            {
                flag = 0;
                fecha = Convert.ToDateTime(txtFecha.Text);
                TextBox pag = row.FindControl("txtmonto") as TextBox;
                TextBox txtFecPago = row.FindControl("txtFecPago") as TextBox;
                TextBox txtobsdet = row.FindControl("txtobsdetalle") as TextBox;
                TextBox txtnumrecibo = row.FindControl("txtnumrecibo") as TextBox;
                CheckBox chktipPago = row.FindControl("chktipPago") as CheckBox;

                cod_det = Convert.ToInt32(row.Cells[25].Text);
                cod_ven = Convert.ToInt32(row.Cells[22].Text);
                cod_letra = Convert.ToInt32(row.Cells[26].Text);
                cod_cliente = Convert.ToInt32(row.Cells[28].Text);
                ultimo = Convert.ToInt32(row.Cells[29].Text);
                pago = Convert.ToDecimal(pag.Text);
                if (primero == 0)
                {
                    fecha_min = Convert.ToDateTime(txtFecPago.Text);
                    fecha_max = Convert.ToDateTime(txtFecPago.Text);
                    primero = 1;
                }
                else {
                    if (Convert.ToDateTime(txtFecPago.Text) < fecha_min) {
                        fecha_min = Convert.ToDateTime(txtFecPago.Text);
                    }
                    if (Convert.ToDateTime(txtFecPago.Text) > fecha_max) {
                        fecha_max = Convert.ToDateTime(txtFecPago.Text);
                    }
                }
                if (pago > 0)
                    {
                        monto_total = Convert.ToDecimal(row.Cells[11].Text);
                        monto_cuota = Convert.ToDecimal(row.Cells[14].Text);

                        while (flag == 0)
                        {
                            Pag_letras obj = new Pag_letras();
                            if (pago > monto_cuota)
                            {

                                clsdetletra update = new clsdetletra();
                                det_letra obj_upd = new det_letra();
                                obj_upd = update.GetDetLetra(cod_det);
                                obj_upd.cestado = "2";
                                obj_upd.dfecpago = Convert.ToDateTime(fecha);

                                update.fnDetLetraUpdate(obj_upd);

                                if (ultimo == 0)
                                {
                                    ////////////////////
                                    //crea la nota/////
                                    ////////////////////
                                    clsOpeNotas formnota = new clsOpeNotas();
                                    Notas objnt = new Notas();
                                    objnt.inota = Convert.ToInt32(formnota.MaxOpeCod()) + 1;

                                    objnt.dfecreg = Convert.ToDateTime(fecha);
                                    objnt.ccodnota = cod_letra.ToString();
                                    objnt.iprvcod = cod_cliente;
                                    objnt.nmontoNota = pago - monto_cuota;
                                    objnt.cestadoNota = "N";
                                    objnt.nmntutilizado = Convert.ToDecimal(0.00);
                                    objnt.cobservaciones = "pago excesivo de factura";
                                    objnt.ctipo = "V";
                                    formnota.fnNotaInsert(objnt);

                                    ////////////////////////////////////////
                                    obj.idetletra = obj_upd.idetletra;
                                    obj.idpagletra = Convert.ToInt32(form.Maxidpaglet()) + 1;
                                    obj.nmonto = monto_cuota;
                                    obj.dfecpago = Convert.ToDateTime(fecha);
                                    obj.dfecmodifi = DateTime.Today;
                                    obj.ipercod = cod_ven;
                                    obj.icodpago = cod_mov;
                                    obj.inumRecibo = txtnumrecibo.Text;
                                    obj.cobservaciones = txtobsdet.Text;
                                    obj.inumliq = idliquidacion;
                                    if (chktipPago.Checked)
                                        obj.ctipPag = "E";
                                    else
                                        obj.ctipPag = "D";
                                    clspag_Letra inserta = new clspag_Letra();
                                    inserta.fnpag_letraInsertar(obj);

                                    flag = 1;
                                }
                                else
                                {
                                    obj.idetletra = obj_upd.idetletra;
                                    obj.idpagletra = Convert.ToInt32(form.Maxidpaglet()) + 1;
                                    obj.nmonto = monto_cuota;
                                    obj.dfecpago = Convert.ToDateTime(fecha);
                                    obj.dfecmodifi = DateTime.Today;
                                    obj.ipercod = cod_ven;
                                    obj.icodpago = cod_mov;
                                    obj.inumRecibo = txtnumrecibo.Text;
                                    obj.cobservaciones = txtObservaciones.Text;
                                    obj.inumliq = idliquidacion;
                                    if(chktipPago.Checked)
                                        obj.ctipPag= "E";
                                    else
                                        obj.ctipPag = "D";
                                    clspag_Letra inserta = new clspag_Letra();
                                    inserta.fnpag_letraInsertar(obj);

                                    pago = pago - monto_cuota;
                                    cod_det = Convert.ToInt32(update.Mindetletpend_cod(cod_letra));
                                    monto_cuota = fnnextDeuda(cod_det);
                                }
                            }
                            else
                            {
                                obj.idetletra = cod_det;
                                obj.idpagletra = Convert.ToInt32(form.Maxidpaglet()) + 1;
                                obj.nmonto = pago;
                                obj.dfecpago = Convert.ToDateTime(fecha);
                                obj.dfecmodifi = DateTime.Today;
                                obj.ipercod = cod_ven;
                                obj.icodpago = cod_mov;
                                obj.inumRecibo = txtnumrecibo.Text;
                                obj.cobservaciones = txtObservaciones.Text;
                                obj.inumliq = idliquidacion;
                                if (chktipPago.Checked)
                                    obj.ctipPag = "E";
                                else
                                    obj.ctipPag = "D";
                                clspag_Letra inserta = new clspag_Letra();
                                inserta.fnpag_letraInsertar(obj);
                                if (pago == monto_cuota)
                                {
                                    clsdetletra update = new clsdetletra();
                                    det_letra obj_upd = new det_letra();
                                    obj_upd = update.GetDetLetra(cod_det);
                                    obj_upd.cestado = "2";
                                    obj_upd.dfecpago = Convert.ToDateTime(fecha);
                                    update.fnDetLetraUpdate(obj_upd);
                                }
                                flag = 1;

                            }
                        }
                    }
            }
            for (int i = 20; i <= 29; i++)
            {
                dgvPagoLetra.Columns[i].Visible = false;
            }
            txtFecMin.Text = fecha_min.ToString("yyyy-MM-dd");
            txtFecMax.Text = fecha_max.ToString("yyyy-MM-dd");
            pnLiquidacion.Enabled = false;
            btnCancelar.Text = "Salir";
            HabilitarBtn(btnGuardar, false);
            HabilitarBtn(btnProcesar, false);
        }
        protected void btnPagar_Click(object sender, EventArgs e)
        {
            int cod_det;
            int ultimo;
            int cod_ven;
            int cod_letra;
            int cod_cliente;
            decimal monto_total;
            decimal monto_cuota;
            decimal pago;
            string fecha;
            int flag = 0;
            clspag_Letra form = new clspag_Letra();
            int cod_mov = Convert.ToInt32(form.Maxcod_pago()) + 1;
            if (btnpagar.Text == "Pagar")
            {
                pncargar.Visible = true;
                dgvlist.Columns[13].Visible = true;
                txtFec.Text = DateTime.Today.ToString();
                btnpagar.Text = "Guargar";
                HabilitarBtn(btnCancelar, true);
                btnCancelar.Visible = true;
            }
            else
            {
                dgvlist.Columns[5].Visible = true;
                dgvlist.Columns[14].Visible = true;
                dgvlist.Columns[15].Visible = true;
                dgvlist.Columns[16].Visible = true;
                foreach (GridViewRow row in dgvlist.Rows)
                {
                    flag = 0;
                    fecha = txtFec.Text;
                    TextBox pag = row.FindControl("txtmonto") as TextBox;
                    cod_det = Convert.ToInt32(row.Cells[2].Text);
                    cod_ven = Convert.ToInt32(row.Cells[5].Text);
                    cod_letra = Convert.ToInt32(row.Cells[14].Text);
                    cod_cliente = Convert.ToInt32(row.Cells[16].Text);
                    ultimo = Convert.ToInt32(row.Cells[15].Text);
                    pago = Convert.ToDecimal(pag.Text);
                    if (pago > 0)
                    {
                        monto_total = Convert.ToDecimal(row.Cells[10].Text);
                        monto_cuota = Convert.ToDecimal(row.Cells[12].Text);

                        while (flag == 0)
                        {
                            Pag_letras obj = new Pag_letras();
                            if (pago > monto_cuota)
                            {

                                clsdetletra update = new clsdetletra();
                                det_letra obj_upd = new det_letra();
                                obj_upd = update.GetDetLetra(cod_det);
                                obj_upd.cestado = "2";
                                obj_upd.dfecpago = Convert.ToDateTime(fecha);

                                update.fnDetLetraUpdate(obj_upd);

                                if (ultimo == 0)
                                {
                                    ////////////////////
                                    //crea la nota/////
                                    ////////////////////
                                    clsOpeNotas formnota = new clsOpeNotas();
                                    Notas objnt = new Notas();
                                    objnt.inota = Convert.ToInt32(formnota.MaxOpeCod()) + 1;

                                    objnt.dfecreg = Convert.ToDateTime(fecha);
                                    objnt.ccodnota = cod_letra.ToString();
                                    objnt.iprvcod = cod_cliente;
                                    objnt.nmontoNota = pago - monto_cuota;
                                    objnt.cestadoNota = "N";
                                    objnt.nmntutilizado = Convert.ToDecimal(0.00);
                                    objnt.cobservaciones = "pago excesivo de factura";
                                    objnt.ctipo = "V";
                                    formnota.fnNotaInsert(objnt);

                                    ////////////////////////////////////////

                                    flag = 1;
                                }
                                else
                                {
                                    obj.idetletra = obj_upd.idetletra;
                                    obj.idpagletra = Convert.ToInt32(form.Maxidpaglet()) + 1;
                                    obj.nmonto = monto_cuota;
                                    obj.dfecpago = Convert.ToDateTime(fecha);
                                    obj.dfecmodifi = DateTime.Today;
                                    obj.ipercod = cod_ven;
                                    obj.icodpago = cod_mov;
                                    clspag_Letra inserta = new clspag_Letra();
                                    inserta.fnpag_letraInsertar(obj);

                                    pago = pago - monto_cuota;
                                    cod_det = Convert.ToInt32(update.Mindetletpend_cod(cod_letra));
                                    monto_cuota = fnnextDeuda(cod_det);
                                }
                            }
                            else
                            {
                                obj.idetletra = cod_det;
                                obj.idpagletra = Convert.ToInt32(form.Maxidpaglet()) + 1;
                                obj.nmonto = pago;
                                obj.dfecpago = Convert.ToDateTime(fecha);
                                obj.dfecmodifi = DateTime.Today;
                                obj.ipercod = cod_ven;
                                obj.icodpago = cod_mov;
                                clspag_Letra inserta = new clspag_Letra();
                                inserta.fnpag_letraInsertar(obj);
                                if (pago == monto_cuota)
                                {
                                    clsdetletra update = new clsdetletra();
                                    det_letra obj_upd = new det_letra();
                                    obj_upd = update.GetDetLetra(cod_det);
                                    obj_upd.cestado = "2";
                                    obj_upd.dfecpago = Convert.ToDateTime(fecha);

                                    update.fnDetLetraUpdate(obj_upd);

                                }
                                flag = 1;

                            }
                        }
                    }
                }
                btnpagar.Text = "Pagar";
                iniciar_valores();
            }
        }