public bool GenerarSimulacion() { bool success = true; string msgc, msgp; int liResultado; string ltComando; string ltMensaje = ""; Decimal SumaPrin, SumaSec, oto1, oto2; Decimal grp1, grp2, resv_base, resv_adic; Decimal dispo_base, dispo_adic; this.iFlagCapitulo3b5 = 0; // sfv v4 Capitulo 3B5 TipoProducto tipoprod = new TipoProducto(dataConnectionString); GrupoProducto grupprod = new GrupoProducto(dataConnectionString); Capitulo3b5 cap3b5 = new Capitulo3b5(dataConnectionString); string tip70 = this.tTipoProducto; Decimal mont70 = Convert.ToDecimal(this.dMontoAfecta); String per70 = this.tNumeroCliente; this.bSubyacenteAsume70 = false; if (1 == tipoprod.ObtenerModoAfectacion(this.tTipoProducto, this.tTipoProdSuby, "sbyasume70")) { tip70 = this.tTipoProdSuby; mont70 = Convert.ToDecimal(this.dMontoGarantia); this.bSubyacenteAsume70 = true; per70 = this.tNumeroPerSuby; } this.dMontoAfe70 = (double)mont70; this.personaAfe70 = per70; // . liResultado = cap3b5.Obtener(DateTime.Now); if (liResultado == 0) { // margen 70 Limite Global if (grupprod.IsTipInGrupo(tip70, "70MAIN")) { // If chkMargenAdicional.Value = True Then SumaPrin = mont70; SumaSec = 0; if (grupprod.IsTipInGrupo(tip70, "70ADIC")) { SumaSec = mont70; } grp1 = Convert.ToDecimal(cap3b5.MontoReserva70Pri) + Convert.ToDecimal(cap3b5.MontoUtiliza70Pri) + SumaPrin; grp2 = Convert.ToDecimal(cap3b5.MontoReserva70Sec) + Convert.ToDecimal(cap3b5.MontoUtiliza70Sec) + SumaSec; oto1 = Convert.ToDecimal(cap3b5.MontoOtorgado70); oto2 = Convert.ToDecimal(cap3b5.MontoOtorgado70Adi); resv_base = Convert.ToDecimal(cap3b5.MontoReservado70); resv_adic = Convert.ToDecimal(cap3b5.MontoReservado70Adi); if (oto1 - grp1 >= 0) { resv_base += mont70; resv_adic += 0; dispo_base = oto1 - grp1; dispo_adic = oto2; } else if (oto1 - (grp1 - grp2) >= 0) { if (oto1 - grp1 < 0) { resv_base += (SumaPrin - SumaSec); resv_adic += SumaSec; dispo_base = 0; dispo_adic = oto2 - (grp1 - oto1); } else { resv_base += (SumaPrin - SumaSec); resv_adic += SumaSec; dispo_base = 0; dispo_adic = oto2 + oto1 - grp1; } } else { resv_base += (SumaPrin - SumaSec); resv_adic += SumaSec; dispo_base = oto1 - grp1; dispo_adic = oto2 + oto1 - grp1; } cap3b5.MontoReserva70Pri += (double)SumaPrin; cap3b5.MontoReserva70Sec += (double)SumaSec; cap3b5.MontoReservado70 = (double)resv_base; cap3b5.MontoReservado70Adi = (double)resv_adic; cap3b5.MontoDisponible70 = (double)dispo_base; cap3b5.MontoDisponible70Adi = (double)dispo_adic; cap3b5.SumaPrin = (double)SumaPrin; cap3b5.SumaSec = (double)SumaSec; cap3b5.Suma70 = (double)SumaPrin; // Se Afecta margen del 70% del patrimonio efectivo (siempre) this.iFlagCapitulo3b5 += 1; // cap3b5.MontoReservado70 = cap3b5.MontoReservado70 + gSimulacion.dMontoDolares // cap3b5.MontoDisponible70 = cap3b5.MontoOtorgado70 - (cap3b5.MontoUtilizado70 + cap3b5.MontoReservado70) if (cap3b5.SumaSec > 0) { } } // margen 30 Limite Grupal if (grupprod.IsTipInGrupo(tip70, "30PERC")) { // If chkAfecta30.Value = True Then // Afecta margen del 30% del patrimonio efectivo // gSimulacion.iFlagCapitulo3b5 = 2 this.iFlagCapitulo3b5 += 10; cap3b5.MontoReservado30 += (double)mont70; cap3b5.MontoDisponible30 = cap3b5.MontoOtorgado30 - (cap3b5.MontoUtilizado30 + cap3b5.MontoReservado30); cap3b5.Suma30 = (double)mont70; } // margen 15 Operaciones Tipo G if (grupprod.IsTipInGrupo(tip70, "15PERC")) { // If chkAfecta15.Value = True Then // Afecta margen del 15% del patrimonio efectivo this.iFlagCapitulo3b5 += 100; cap3b5.MontoReservado15 += (double)mont70; cap3b5.MontoDisponible15 = cap3b5.MontoOtorgado15 - (cap3b5.MontoUtilizado15 + cap3b5.MontoReservado15); cap3b5.Suma15 = (double)mont70; // sfv } // Cap 8 1o/11 RAN if (grupprod.IsTipInGrupo(tip70, "810RAN")) { // If chkAfecta15.Value = True Then // Afecta margen del 37.5% del patrimonio efectivo this.iFlagCapitulo3b5 += 1000; cap3b5.MontoReservadoCap8 += (double)mont70; cap3b5.MontoDisponibleCap8 = cap3b5.MontoOtorgadoCap8 - (cap3b5.MontoUtilizadoCap8 + cap3b5.MontoReservadoCap8); cap3b5.Suma08 = (double)mont70; // sfv } } else if (liResultado == 3) { ltMensaje = "No existen márgenes del 30% y 70% Aplicables" + "\r" + "Informe al administrador del sistema"; comments.Add("Capitulo3b5", ltMensaje); } else { ltMensaje = "Error al obtener los márgenes del 30% y 70%"; errlist.AddRange(cap3b5.errlist); success = false; } this.lcapCapitulo3b5 = cap3b5; // Limites individuales StringBuilder sb = new StringBuilder(); sb.Append("exec sva_cle_sim_lim_idv_ctz '"); sb.Append(Global.ConvertirRutNro(this.tNumeroCliente)); sb.Append("', '"); sb.Append(Global.ConvertirRutNro(this.tNumeroCasaMatriz)); sb.Append("', "); sb.Append(Convert.ToString(this.iCodigoPais)); sb.Append(", "); sb.Append(Convert.ToString(this.iCodigoCateg)); sb.Append(", '"); sb.Append(this.tTipoProducto); sb.Append("', "); sb.Append(Convert.ToString(this.iCodigoProducto)); sb.Append(", '"); sb.Append(Global.ConvertirRutNro(this.tNumeroPerSuby)); sb.Append("', '"); sb.Append(this.tTipoProdSuby); sb.Append("', "); sb.Append(Convert.ToString(this.iCodigoPaisSuby)); sb.Append(", "); sb.Append(Convert.ToString(this.iCodigoCategSuby)); sb.Append(", "); sb.Append(Convert.ToString(this.iCargoCasaMatriz)); sb.Append(", "); sb.Append((this.iEsNotaEstruct ? 1 : 0)); sb.Append(", "); sb.Append((this.iEsOperPuntual ? 1 : 0)); sb.Append(", "); sb.Append(Convert.ToString(this.dMontoAfecta).Replace(",", ".")); sb.Append(", "); sb.Append(Convert.ToString(this.iDiasPlazo)); sb.Append(", "); sb.Append(Convert.ToString(this.sPorcGarantia).Replace(",", ".")); sb.Append(", "); sb.Append(Convert.ToString(this.dMontoGarantia).Replace(",", ".")); ltComando = sb.ToString(); msgc = string.Empty; msgp = string.Empty; this.iPlazoMinimo = -1; using (DataFinder db = new DataFinder(dataConnectionString)) { DataSet dset = db.GetDataSet(ltComando); if (db.errlist.Count == 0) { this.lrecLimites = dset.Tables[0]; foreach (DataRow row in this.lrecLimites.Rows) { if ((short)row["afe_plz_htd"] == 2) { msgc += "\r\n" + "Plazo Impedido por -> " + row["gls_dscrn_limte_indvd"].ToString(); this.iPlazoRestringido = true; if (this.iPlazoMinimo < 0 || this.iPlazoMinimo > (int)row["afe_plz_can"]) { this.iPlazoMinimo = 0; } } else if ((short)row["afe_plz_htd"] == 1) { if ((int)row["delta_plazo"] < 0) { msgp += "\r\n" + "Plazo Restringido: Maximo = " + row["afe_plz_can"].ToString() + " días -> " + row["gls_dscrn_limte_indvd"].ToString(); } if (this.iPlazoMinimo < 0 || this.iPlazoMinimo > (int)row["afe_plz_can"]) { this.iPlazoMinimo = (int)row["afe_plz_can"]; } } } } else { errlist.AddRange(db.errlist); success = false; } } this.tPlzRestringido = msgc; this.tPlzAcotado = msgp; //this.lrecLimites.Requery(); cap3b5 = null; grupprod = null; tipoprod = null; PresentaSimulacion(); return(success); }