//------------------------
        // Insert CtaCteIntDetalle
        //------------------------
        public bool Ins_CtaCteIntDetalle(string cCtaCteRecibo, int nIntCodigo, int nIntClase, string cIntJerarquia, string cIntValor)
        {
            ReqCtaCteIntDetalle Objeto = new ReqCtaCteIntDetalle();
            DACtaCteIntDetalle  da     = new DACtaCteIntDetalle();

            Objeto.cCtaCteRecibo = cCtaCteRecibo;
            Objeto.nIntCodigo    = nIntCodigo;
            Objeto.nIntClase     = nIntClase;
            Objeto.cIntJerarquia = cIntJerarquia;
            Objeto.cIntValor     = cIntValor;

            return(da.Ins_CtaCteIntDetalle(Objeto));
        }
        //----------------------------------------------------------------------------
        // Insert PerCuenta / CuentaCorriente / Ins_CtaCteDetalle / Upd-FichaAtencion
        //----------------------------------------------------------------------------
        public bool Ins_CuentaCorriente_ProgracionPagoBloque(string cPerCodigo, string cPerJurCodigo, int nPerCtaTipo, int nCtaCteCuota, double fCtaCteImporte, DateTime dCtaCteFecVence, DateTime dCtaCteFecEmis, string cGlosa, int nPrdCodigo, int nMonCodigo, List <BE_ReqCtaCteDetalle> ReqCCDetalle, List <ReqCtaCteIntDetalle> ObjCtaCteIntDetalle, List <BE_ReqSolAtencion> ObjAdmSolAtencion)
        {
            bool exito = false;

            try
            {
                using (TransactionScope tx = new TransactionScope(TransactionScopeOption.Required))
                {
                    string cNroRecibo    = "";
                    int    nPerCtaCodigo = 0;
                    int    vnCtaCteTipo  = 0;

                    //Get PerCuenta
                    BL_PerCuenta ObjPerCta = new BL_PerCuenta();
                    DataTable    dt        = new DataTable();
                    dt = ObjPerCta.Get_PerCuenta(cPerCodigo, cPerJurCodigo);

                    if (dt.Rows.Count > 0)
                    {
                        nPerCtaCodigo = Convert.ToInt32(dt.Rows[0]["nPerCtaCodigo"]);
                        vnCtaCteTipo  = Convert.ToInt32(dt.Rows[0]["nPerCtaTipo"]);
                    }
                    else
                    {
                        //Creando PerCuenta
                        if (!ObjPerCta.Ins_PerCuenta(cPerCodigo, nPerCtaTipo, cPerJurCodigo))
                        {
                            throw new ApplicationException("Se encontraron errores al Crear Cuenta Persona. [Ins_PerCuenta].!");
                        }
                        else
                        {
                            dt = ObjPerCta.Get_PerCuenta(cPerCodigo, cPerJurCodigo);
                            if (dt.Rows.Count > 0)
                            {
                                nPerCtaCodigo = Convert.ToInt32(dt.Rows[0]["nPerCtaCodigo"]);
                                vnCtaCteTipo  = Convert.ToInt32(dt.Rows[0]["nPerCtaTipo"]);
                            }
                            else
                            {
                                throw new ApplicationException("Se encontro Cuenta Registra Persona. [Get_PerCuenta].!");
                            }
                        }
                    }

                    //Generar New Id Recibo
                    cNroRecibo = Get_NewCorrelativoRecCtaCteItem(cPerJurCodigo);

                    //para CuentaCorriente
                    BE_ReqCuentaCorriente ReqCtaCte = new BE_ReqCuentaCorriente();
                    DA_CuentaCorriente    ObjCtaCte = new DA_CuentaCorriente();

                    ReqCtaCte.cCtaCteRecibo   = cNroRecibo;
                    ReqCtaCte.nPerCtaCodigo   = nPerCtaCodigo;
                    ReqCtaCte.nCtaCteTipo     = vnCtaCteTipo;
                    ReqCtaCte.fCtaCteImporte  = fCtaCteImporte;
                    ReqCtaCte.nCtaCteCuota    = nCtaCteCuota;
                    ReqCtaCte.nCtaCteEstado   = 1; //Activo
                    ReqCtaCte.dCtaCteFecVence = dCtaCteFecVence;
                    //ReqCtaCte.dCtaCteFecPago = dCtaCteFecPago; //Para actualizar campo cuando realiza el pago.
                    ReqCtaCte.dCtaCteFecEmis  = dCtaCteFecEmis;
                    ReqCtaCte.cCtaCteGlosa    = cGlosa;         //"Programación Pago Ficha Atención";
                    ReqCtaCte.nPrdCodigo      = nPrdCodigo;
                    ReqCtaCte.nMonCodigo      = nMonCodigo;     //Periodo actual
                    ReqCtaCte.fCtaCteIgv      = 0.18;           //fCtaCteIgv;
                    ReqCtaCte.dCtaCteFecProg  = dCtaCteFecEmis; //dCtaCteFecProg;
                    ReqCtaCte.cSerDescripcion = "";             //cSerDescripcion;
                    ReqCtaCte.fCtaCteSaldo    = 0;              //fCtaCteSaldo;

                    if (!ObjCtaCte.Ins_CuentaCorriente(ReqCtaCte))
                    {
                        throw new ApplicationException("Se encontraron errores en la transaccion: BL-Ins_CuentaCorriente.!");
                    }
                    else
                    {
                        exito = true;
                    }

                    //------------------------------------------------
                    //Insert Ins_CtaCteDetalle: recorre todo la "List"
                    //------------------------------------------------
                    DA_CtaCteDetalle daCCDet = new DA_CtaCteDetalle();
                    foreach (BE_ReqCtaCteDetalle Item in ReqCCDetalle)
                    {
                        Item.cCtaCteRecibo = cNroRecibo; //Id. Recibo
                        exito = daCCDet.Ins_CtaCteDetalle(Item);
                        if (!exito)
                        {
                            break;
                            throw new ApplicationException("Se encontraron errores en la transaccion: [Ins_CtaCteDetalle].!");
                        }
                    }

                    //--------------------------------------------------------------------------------------
                    //Insert CtaCteIntDetalle .- Se aplica cambio para realizar pagos multiples en la Ficha.
                    //--------------------------------------------------------------------------------------
                    DACtaCteIntDetalle daCtaCteIntDetalle = new DACtaCteIntDetalle();
                    foreach (ReqCtaCteIntDetalle Item1 in ObjCtaCteIntDetalle)
                    {
                        Item1.cCtaCteRecibo = cNroRecibo; //Id. Recibo
                        exito = daCtaCteIntDetalle.Ins_CtaCteIntDetalle(Item1);
                        if (!exito)
                        {
                            break;
                            throw new ApplicationException("Se encontraron errores en la transaccion: [Ins_CtaCteIntDetalle].!");
                        }
                    }

                    //BLCtaCteIntDetalle Servicio = new BLCtaCteIntDetalle();

                    //if (!Servicio.Ins_CtaCteIntDetalle(cNroRecibo, 0, nIntClase, "", nSolAdmNumero))
                    //{
                    //    throw new ApplicationException("Se encontraron errores en la transaccion: BL-Ins_CtaCteIntDetalle.!");
                    //}

                    //------------------------------------------------
                    //Insert Upd_AdmSolAtencion_by_nSolAdmNumero_nIntCodigo_cPerCodigoTerceros: recorre todo la "List"
                    //------------------------------------------------
                    DA_AdmSolAtencion daUpdAdmSolAtencion = new DA_AdmSolAtencion();

                    foreach (BE_ReqSolAtencion Item2 in ObjAdmSolAtencion)
                    {
                        Item2.cCtaCteRecibo = cNroRecibo; //Id. Recibo
                        exito = daUpdAdmSolAtencion.Upd_AdmSolAtencion_by_nSolAdmNumero_nIntCodigo_cPerCodigoTerceros(Item2);
                        if (!exito)
                        {
                            break;
                            throw new ApplicationException("Se encontraron errores en la transaccion: [Upd_AdmSolAtencion_by_nSolAdmNumero_nIntCodigo_cPerCodigoTerceros].!");
                        }
                    }

                    //-------------------------------------------
                    //Actualizando AdmSolAtencion (cCtaCteRecibo)
                    //-------------------------------------------
                    //BL_FichaAtencion.BL_FichaAtencion Obj_UpdFichaAtencion = new BL_FichaAtencion.BL_FichaAtencion();

                    //if (!Obj_UpdFichaAtencion.Upd_AdmSolAtencion_by_nSolAdmNumero_nIntCodigo_cPerCodigoTerceros(nSolAdmNumero, nIntCodigo, cPerCodigoTerceros, cNroRecibo, nAdmSolEstado, cPerCodigoAut))
                    //{
                    //    throw new ApplicationException("Se encontraron errores en la transaccion: BL-Upd_AdmSolAtencion_for_cPerJuridica_nSolAdmNumero.!");
                    //}

                    tx.Complete();
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(exito);
        }