示例#1
0
        public short Obtener(string ptNumero)
        {
            // Descripción : Obtiene una persona por número
            // Parámetros  : ptNumero
            // Retorno     : 0 OK
            // 3 No existe Persona
            // 4 Error en la BD
            // 5 No existe Direccion
            // E. laterales: Ninguno
            //
            // =============================================
            // Declaración de constantes/variables locales
            // =============================================
            short  success = 0;
            string ltConsulta; DataTable rec;

            ptNumero   = Global.ConvertirRutNro(ptNumero);
            ltConsulta = "exec sp_pnj_cnsta_datos_prsna '" + Strings.Trim(ptNumero) + "',''";

            using (DataFinder db = new DataFinder(dataConnectionString))
            {
                rec = db.GetRecordset(ltConsulta);
                if (db.errlist.Count == 0)
                {
                    if (rec.Rows.Count == 0)
                    {
                        success = 3;
                    }
                    else
                    {
                        Numero = Global.ConvertirNroRut(ptNumero) + "";
                        if (VBtoConverter.IsNull(rec.Rows[0]["cod_tipo_prsna"]))
                        {
                            CodigoTipo = 1;
                        }
                        else
                        {
                            CodigoTipo = Convert.ToInt32(rec.Rows[0]["cod_tipo_prsna"]);
                        }
                        NumeroDocumento    = Convert.ToString(rec.Rows[0]["nro_idtfr_prsna"]) + "";
                        NombreEstructurado = Strings.Trim(Convert.ToString(rec.Rows[0]["nom_prsna_etcdo"]) + "");
                        NombreCompactado   = Strings.Trim(Convert.ToString(rec.Rows[0]["nom_prsna_cmpdo"]) + "");
                        CodigoPais         = Convert.ToInt32(rec.Rows[0]["cod_pais"]);
                        CodigoIdiomaOperar = Convert.ToString(rec.Rows[0]["cod_idiom"]);
                        if (rec.Rows[0]["flg_prsna_jrdca"] == "0")
                        {
                            EsJuridica = false;
                        }
                        else
                        {
                            EsJuridica = true;
                        }
                        if (rec.Rows[0]["flg_rut_fictc"] == "0")
                        {
                            EsRutFicticio = false;
                        }
                        else
                        {
                            EsRutFicticio = true;
                        }

                        success = 0;
                    }
                }
                else
                {
                    // GenericError "Persona.Obtener", Err.Number, Err.Description
                    success = 4;
                }
            }
            return(success);
        }
        public bool IsTipInGrupo(string sTipoProd, string sFlag)
        {
            // Descripción : Verifica la xistencia de un Tipo dentro del Grupo
            // si sFlag no es vacio usa ese grupo de busqueda
            // tipos de productos por codigo
            // Parámetros  : sTipoProd,sFlag
            // Retorno     : True si existe
            // False si no existe
            // =============================================
            // Declaración de constantes/variables locales
            // =============================================
            bool   success = false;
            string ltComando; DataTable rec;

            if (Strings.UCase(sFlag) == "TOTPRI")
            {
                ltComando = "exec sva_cle_exi_tip_rel_grp 0, '" + sTipoProd + "', 4, 0";
            }
            else if (Strings.UCase(sFlag) == "70MAIN")
            {
                ltComando = "exec sva_cle_exi_tip_rel_grp 0, '" + sTipoProd + "', 1, 1";
            }
            else if (Strings.UCase(sFlag) == "70ADIC")
            {
                ltComando = "exec sva_cle_exi_tip_rel_grp 0, '" + sTipoProd + "', 1, 2";
            }
            else if (Strings.UCase(sFlag) == "30PERC")
            {
                ltComando = "exec sva_cle_exi_tip_rel_grp 0, '" + sTipoProd + "', 1, 3";
            }
            else if (Strings.UCase(sFlag) == "15PERC")
            {
                ltComando = "exec sva_cle_exi_tip_rel_grp 0, '" + sTipoProd + "', 1, 4";
            }
            else if (Strings.UCase(sFlag) == "810RAN")
            {
                ltComando = "exec sva_cle_exi_tip_rel_grp 0, '" + sTipoProd + "', 1, 5";
            }
            else
            {
                ltComando = "exec sva_cle_exi_tip_rel_grp " + Convert.ToString(Codigo) + ", '" + sTipoProd + "'";
            }

            using (DataFinder db = new DataFinder(dataConnectionString))
            {
                rec = db.GetRecordset(ltComando);
                if (db.errlist.Count == 0)
                {
                    if (rec.Rows.Count > 0)
                    {
                        if (int.Parse(rec.Rows[0][0].ToString()) > 0)
                        {
                            success = true;
                        }
                    }
                }
                else
                {
                    //modLCEData.GenericError("GrupoProducto.IsTipInGrupo", Information.Err().Number, Information.Err().Description);
                    //success = 4;
                }
            }
            return(success);
        }
示例#3
0
        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);
        }