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 btnGuardar_Click(object sender, EventArgs e)
        {
            String cfecLetra , ctipago;
            cfecLetra = txtFecha.Text;
            int nPrvCod = Convert.ToInt32(hdcodper.Value);
            if (rbtdias.Checked)
                ctipago = "D";
            else
                ctipago = "L";
            int cuotas = int.Parse(txtNumCuotas.Text);
            int icodigo, idetcodigo;
            Double monto_total = Double.Parse(lbpago.Text);
            Double monto_nota = Double.Parse(lbresta.Text);
            String moneda;
            moneda = ddlMoneda_new.SelectedValue;
            try
            {
                clsLetra _Letra = new clsLetra();
                letra obj = new letra();
                icodigo = Convert.ToInt32(_Letra.MaxOpeCod() + 1);
                obj.icodigo = icodigo;
                obj.itotcuota = cuotas;
                obj.nmontocuota = Convert.ToDecimal(monto_total);
                obj.cmoneda = moneda;
                obj.nintpag = Convert.ToDecimal(0.00);
                obj.iestado = "1";
                obj.dfeccreacion = Convert.ToDateTime(cfecLetra);
                obj.dfecmod = DateTime.Today;
                obj.ctippago = ctipago;
                obj.nmntnota = Convert.ToDecimal(monto_nota);
                _Letra.fnletraInsertar(obj);
                clsdetletra _detletra = new clsdetletra();

                foreach (GridViewRow row in dgvcuotas.Rows)
                {
                    det_letra _detobj = new det_letra();
                    _detobj.icodletra = icodigo;
                    _detobj.inumletra = Convert.ToInt32(row.Cells[0].Text);
                    TextBox num_let = row.FindControl("num_let") as TextBox;
                    _detobj.cnumletra = num_let.Text;
                    TextBox ccodletra = row.FindControl("cod_unic") as TextBox;
                    _detobj.ccodletra = ccodletra.Text;
                    TextBox monto = row.FindControl("monto") as TextBox;
                    _detobj.nmonto = Convert.ToDecimal(monto.Text);
                    _detobj.cestado = "1";
                    _detobj.ninteres = Convert.ToDecimal(0.00);
                    TextBox txtFecVen = row.FindControl("txtFecVen") as TextBox;
                    _detobj.dfecvenc = Convert.ToDateTime(txtFecVen.Text);
                    _detobj.dfecmod = DateTime.Today;
                    idetcodigo = Convert.ToInt32(_detletra.Maxdetletra_cod()) + 1;
                    _detobj.idetletra = idetcodigo;
                    _detletra.fndet_letraInsertar(_detobj);
                }
                clsDocumenOperacion _docobj = new clsDocumenOperacion();
                DocumenOperacion _docope = new DocumenOperacion();
                Int64 cod_fact;
                foreach (GridViewRow row in dgvListFact.Rows)
                {

                    CheckBox check = row.FindControl("CheckBox1") as CheckBox;
                    if (check.Checked)
                    {
                        cod_fact = Convert.ToInt64(row.Cells[2].Text);
                        //_docope = _docobj.GetListOperaciones(cod_fact );
                        _docope = _docobj.GetDocumenOperaciona(cod_fact);

                        _docope.icodletra = icodigo;
                        _docobj.fnDocOpeUpdate(_docope);
                    }
                }
                Int32 cod_not;
                clsOpeNotas _formnot = new clsOpeNotas();
                Notas _docopenot = new Notas();
                rel_notfactura _relacion = new rel_notfactura();
                clsrel_notfactura _formrel = new clsrel_notfactura();
                dgvNotas.Columns[3].Visible = true;
                dgvNotas.Columns[5].Visible = true;
                foreach (GridViewRow row in dgvNotas.Rows)
                {

                    CheckBox check = row.FindControl("grdchknota") as CheckBox;
                    if (check.Checked)
                    {
                        cod_not = Convert.ToInt32(row.Cells[5].Text);
                        //clsOpeNotas
                        _docopenot = _formnot.GetNota(cod_not);
                        _docopenot.cestadoNota = "V";
                        _docopenot.nmntutilizado = _docopenot.nmontoNota;
                        _formnot.fnNotaUpdate(_docopenot);

                        _relacion.idtpcod = icodigo;
                        _relacion.inota = cod_not;
                        _relacion.nmonto = _docopenot.nmontoNota;
                        _relacion.dfecmod = DateTime.Today;
                        //_relacion .iusrcrc
                        _relacion.irelnotfac = Convert.ToInt32(_formrel.MaxOpeCod()) + 1;
                        _formrel.fnNotaInsert(_relacion);
                    }
                }
                dgvNotas.Columns[3].Visible = false;
                dgvNotas.Columns[5].Visible = false;
                IniciarCampos();

                obj = _Letra.GetLetra(icodigo);
                obj.iestado = "1";
                _Letra.fnletraupdate(obj);
                pnBusqueda.Visible = true;
                pnNuevo.Visible = false;
                IniciarCampos();
                btnProcesar_Click(sender, e);
            }
            catch (Exception ex)
            {
                MessageBox("Error Interno: " + ex.Message);
            }
        }
        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();
            }
        }
        protected Boolean CargarNotasDisp(int _nNroReg, int op)
        {
            clsOpeNotas lstOperaciones = new clsOpeNotas();
            DataTable dtNotasPen;
            dtNotasPen = lstOperaciones.GetListNotas(op, "C", "PEN");

            if (dtNotasPen.Rows.Count == 0)
            {
                pnaddNotas.Visible = false;
                pnnotasempty.Visible = true;
                return false;
            }
            else
            {
                pnaddNotas.Visible = true;
                pnnotasempty.Visible = false;
                dgvNotas.DataSource = dtNotasPen;
                dgvNotas.DataBind();
                return true;
            }
        }
        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            clsOpeNotas form = new clsOpeNotas();
            Notas obj = new Notas();
            if (lblProceso.Value == Convert.ToString("Nuevo"))
            {
                if (int.Parse(hdcodper.Value) == 0 || txtCodNota.Text.Length == 0
                   || txtmonto.Text.Length == 0)
                {
                    lbmensaje.Visible = true;
                }
                else {
                    lbmensaje.Visible = false;
                    obj.inota = Convert.ToInt32(form.MaxOpeCod()) + 1;
                    obj.dfecreg = Convert.ToDateTime(txtfecpro.Text);
                    obj.ccodnota = txtCodNota.Text;
                    obj.iprvcod = int.Parse(hdcodper.Value);
                    obj.nmontoNota = Convert.ToDecimal(txtmonto.Text);
                    obj.cestadoNota = "N";
                    obj.nmntutilizado = Convert.ToDecimal(0.00);
                    obj.cobservaciones = txtobservaciones.Text;
                    obj.ctipo = "V";
                    obj.OpeMoneda = ddlMoneda_new.SelectedValue.Trim();
                    obj.ctipNota = ddlTipNot_new.SelectedValue.Trim();
                    form.fnNotaInsert(obj);
                    IniciarCampos();
                    ddlClientes.SelectedValue = hdcodper.Value;
                    btnProcesar_Click(sender, e);
                }
            }
            else{
                if ( txtCodNota.Text.Length == 0|| txtmonto.Text.Length == 0)
                {
                    lbmensaje.Visible = true;
                }
                else
                {
                    double monto= Convert.ToDouble(txtmonto.Text);
                    double mnt_util = Convert.ToDouble(txtmontoutl.Text);
                    if (mnt_util > monto)
                    {
                        lbmensaje.Text = "El monto a actualizar no puede ser menor al ya utilizado";
                        lbmensaje.Visible = true;
                    }
                    else
                    {
                        lbmensaje.Visible = false;
                        obj = form.GetNota(Convert.ToInt32(lblOpeCodigo.Value));
                        obj.dfecreg = Convert.ToDateTime(txtfecpro.Text);
                        obj.ccodnota = txtCodNota.Text;
                        obj.nmontoNota = Convert.ToDecimal(txtmonto.Text);
                        obj.cestadoNota = "N";
                        obj.cobservaciones = txtobservaciones.Text;
                        obj.ctipo = "V";
                        obj.ctipNota = ddlTipNot_new.SelectedValue.Trim();
                        form.fnNotaUpdate(obj);
                        IniciarCampos();

                        dgvNotas.Columns[3].Visible = false;
                        dgvNotas.Columns[13].Visible = false;
                        dgvNotas.Columns[15].Visible = false;
                    }
                }
            }
            btnProcesar_Click(sender, e);
        }