/// <summary>
        /// Guarda la configuración inicial.
        /// </summary>
        /// <param name="sender">El objeto que llama la función</param>
        /// <param name="e">Los eventos</param>
        private void SaveInitialConfig(object sender, EventArgs e)
        {
            try
            {
                foreach (Control control in this.Controls)
                {
                    if (control.Name == "gpbConfiguracion")
                    {
                       foreach(Control config in control.Controls)
                       {
                            if (config.Name.Substring(0, 3) == "txt")
                            {
                                string tipoDato = config.Name.Substring(3, 1);
                                tConfiguracionesRow = flujoDBDataSet1.T_Configuraciones.NewT_ConfiguracionesRow();

                                FlujoDBDataSet.T_ConfiguracionesRow tcrId;
                                if (flujoDBDataSet1.T_Configuraciones.Rows.Count > 0)
                                {
                                    tcrId =
                                    (FlujoDBDataSet.T_ConfiguracionesRow)flujoDBDataSet1.T_Configuraciones.Rows[
                                        flujoDBDataSet1.T_Configuraciones.Rows.Count - 1];

                                    configId = int.Parse(tcrId["Id"].ToString()) + 1;

                                }

                                //Asigna los valores del nuevo campo
                                tConfiguracionesRow["Id"] = configId;
                                tConfiguracionesRow["SesionId"] = Properties.Settings.Default.SessionId.ToString().Trim();
                                tConfiguracionesRow["Campo"] = config.Name.Substring(4).Trim();
                                tConfiguracionesRow["Valor"] = config.Text.Trim().Replace("$", "").Replace(",", "").Replace(".", "").Replace("%", "");
                                tConfiguracionesRow["TipoDato"] =
                                    tipoDato +
                                    (Properties.Settings.Default.PeriodoActual > 0 ?
                                    Properties.Settings.Default.PeriodoActual.ToString().PadLeft(3, '0') : "000") +
                                    "I";
                                tConfiguracionesRow["Estatus"] = "1";

                                flujoDBDataSet1.T_Configuraciones.AddT_ConfiguracionesRow(tConfiguracionesRow);
                            }
                        } 
                    }
                }

                int result = 0;

                foreach (FlujoDBDataSet.T_ConfiguracionesRow dr in flujoDBDataSet1.T_Configuraciones.Rows)
                {
                    result = t_ConfiguracionesTableAdapter1.UpdateTConfiguracion(
                        int.Parse(dr["Id"].ToString()), int.Parse(dr["SesionId"].ToString()),
                        dr["Campo"].ToString(), dr["Valor"].ToString(), dr["TipoDato"].ToString(), short.Parse(dr["Estatus"].ToString()));

                    if (result == 0)
                    {
                        result = t_ConfiguracionesTableAdapter1.InsertTConfiguracion(
                        int.Parse(dr["Id"].ToString()), int.Parse(dr["SesionId"].ToString()),
                        dr["Campo"].ToString(), dr["Valor"].ToString(), dr["TipoDato"].ToString(), short.Parse(dr["Estatus"].ToString()));
                    }

                    result = 0;
                }

                flujoDBDataSet1.AcceptChanges();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), "Error");
            }
        }
        /// <summary>
        /// Guarda la colocación en la base de datos.
        /// </summary>
        /// <param name="sender">El objeto que llama la función</param>
        /// <param name="e">Los eventos</param>
        private void btnSaveColocacion_Click(object sender, EventArgs e)
        {
            try
            {
                bool isToApCap = true;

                if (double.Parse(txtMApCapital.Text) > 0)
                {
                    if (Properties.Settings.Default.IsAutomatic)
                    {
                        this.btnAgregarCapital_Click(sender, e);
                    }
                    else
                    {
                        if (DialogResult.Yes == MessageBox.Show("¿Desea agregar " +
                        string.Format("{0:C0}", double.Parse(txtMApCapital.Text)) +
                        " al capital?", "Aportación", MessageBoxButtons.YesNo))
                        {
                            this.btnAgregarCapital_Click(sender, e);
                        }
                        else
                        {
                            isToApCap = false;
                        }
                    }
                    
                }

                if (colocacion == capital)
                {
                    txtMCapital.Text = "0";
                }
                else if (capital > 0 && capital < colocacion)
                {
                    if (isApCapCte)
                    {
                        MessageBox.Show(
                            "Coloque los créditos necesarios para no exceder el capital o haga una aportación", 
                            "Capital Insuficiente");
                        isToApCap = false;
                    }
                }

                if (isToApCap)
                {
                    foreach (Control config in this.Controls)
                    {
                        if (config.Name == "gpbColocacion")
                        {
                            foreach (Control dataG in config.Controls)
                            {
                                if (dataG is GroupBox)
                                {
                                    foreach (Control data in dataG.Controls)
                                    {
                                        if (data.Name.Substring(0, 3) == "txt")
                                        {
                                            string tipoDato = data.Name.Substring(3, 1);
                                            tConfiguracionesRow = flujoDBDataSet1.T_Configuraciones.NewT_ConfiguracionesRow();

                                            FlujoDBDataSet.T_ConfiguracionesRow tcrId;
                                            if (flujoDBDataSet1.T_Configuraciones.Rows.Count > 0)
                                            {
                                                tcrId =
                                                (FlujoDBDataSet.T_ConfiguracionesRow)flujoDBDataSet1.T_Configuraciones.Rows[
                                                    flujoDBDataSet1.T_Configuraciones.Rows.Count - 1];

                                                configId = int.Parse(tcrId["Id"].ToString()) + 1;
                                            }

                                            if (data.Name.Substring(0, 5) == "txtNC" && data.Text != "0")
                                            {
                                                this.generaTablaDeAmortizacion(data);
                                            }

                                            //Asigna los valores del nuevo campo
                                            tConfiguracionesRow["Id"] = configId;
                                            tConfiguracionesRow["SesionId"] = Properties.Settings.Default.SessionId.ToString().Trim();
                                            tConfiguracionesRow["Campo"] = data.Name.Substring(4).Trim();
                                            tConfiguracionesRow["Valor"] = data.Text.Trim().Replace("$", "").Replace(",", "").Replace(".", "");
                                            tConfiguracionesRow["TipoDato"] =
                                                tipoDato +
                                                (Properties.Settings.Default.PeriodoActual > 0 ?
                                                Properties.Settings.Default.PeriodoActual.ToString().PadLeft(3, '0') : "000") +
                                                "C";
                                            tConfiguracionesRow["Estatus"] = "1";

                                            flujoDBDataSet1.T_Configuraciones.AddT_ConfiguracionesRow(tConfiguracionesRow);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    //Guarda la cantidad de distribuidoras para el período actual
                    configId++;
                    tConfiguracionesRow = flujoDBDataSet1.T_Configuraciones.NewT_ConfiguracionesRow();
                    tConfiguracionesRow["Id"] = configId;
                    tConfiguracionesRow["SesionId"] = Properties.Settings.Default.SessionId.ToString().Trim();
                    tConfiguracionesRow["Campo"] = "CD";
                    tConfiguracionesRow["Valor"] = Properties.Settings.Default.DistribuidorasAnt;
                    tConfiguracionesRow["TipoDato"] =
                        "N" +
                        (Properties.Settings.Default.PeriodoActual > 0 ?
                        Properties.Settings.Default.PeriodoActual.ToString().PadLeft(3, '0') : "000") +
                        "C";
                    tConfiguracionesRow["Estatus"] = "1";

                    flujoDBDataSet1.T_Configuraciones.AddT_ConfiguracionesRow(tConfiguracionesRow);

                    configId++;
                    tConfiguracionesRow = flujoDBDataSet1.T_Configuraciones.NewT_ConfiguracionesRow();
                    tConfiguracionesRow["Id"] = configId;
                    tConfiguracionesRow["SesionId"] = Properties.Settings.Default.SessionId.ToString().Trim();
                    tConfiguracionesRow["Campo"] = "CDT";
                    tConfiguracionesRow["Valor"] = Properties.Settings.Default.DistribuidorasAnt + dist2Credito;
                    tConfiguracionesRow["TipoDato"] =
                        "N" +
                        (Properties.Settings.Default.PeriodoActual > 0 ?
                        Properties.Settings.Default.PeriodoActual.ToString().PadLeft(3, '0') : "000") +
                        "C";
                    tConfiguracionesRow["Estatus"] = "1";

                    flujoDBDataSet1.T_Configuraciones.AddT_ConfiguracionesRow(tConfiguracionesRow);
                    
                    Properties.Settings.Default.LastIdCliente = clienteID;
                    Properties.Settings.Default.isColocacionConfigured = true;
                    Properties.Settings.Default.ClientesNuevos = creditosCN;
                    Properties.Settings.Default.Clientes2Credito = creditosCA;
                    Properties.Settings.Default.ColocacionE = colocacion;

                    if (periodoActual == 1)
                    {
                        Properties.Settings.Default.ApCapital = double.Parse(txtMCapital.Text.Replace("$", "").Replace(",", ""));
                    }

                    Properties.Settings.Default.PerdidaE = double.Parse(txtPPerdida.Text);
                    Properties.Settings.Default.ComisionDistE = double.Parse(txtPComisionDist.Text);
                    Properties.Settings.Default.GastosFijosPROSAE = double.Parse(txtMGastosFijosPROSA.Text);
                    Properties.Settings.Default.GastosVarPROSAE = double.Parse(txtMGastosVarPROSA.Text);
                    Properties.Settings.Default.GastosFijosZafyE = double.Parse(txtMGastosFijosZafy.Text);
                    Properties.Settings.Default.GastosVarZafyE = double.Parse(txtMGastosVarZafy.Text);
                    Properties.Settings.Default.GastosXPublicidadE = double.Parse(txtMGastosXPublicidad.Text);
                    Properties.Settings.Default.BonosPremiosE = double.Parse(txtPBonosPremios.Text);
                    Properties.Settings.Default.RetirosE = double.Parse(txtPRetiros.Text);
                    //Verifica colocación y genera porcentajes en caso de variación
                    double dist = Properties.Settings.Default.DistribuidorasAnt;

                    double ctesTotales = creditosCN + creditosCA;

                    if (periodoActual > 1 && ctesTotales != clientesNuevos)
                    {
                        ctesDist = Math.Round((creditosCN - dist) * (Properties.Settings.Default.CtesDistPProd / 100));
                        ctesMM = Math.Round((creditosCN - dist) * (Properties.Settings.Default.CtesMMPProd / 100));
                        ctesCZ = Math.Round((creditosCN - dist) * (Properties.Settings.Default.CtesCZPProd / 100));
                        ctesMC = Math.Round((creditosCN - dist) * (Properties.Settings.Default.CtesMCPProd / 100));

                        double ctesDistPerm = Math.Round((creditosCA - dist2Credito) * clientesDP2C);
                        double ctesMMPerm = Math.Round((creditosCA - dist2Credito) * clientesMMP2C);
                        double ctesCZPerm = Math.Round((creditosCA - dist2Credito) * clientesZafyP2C);
                        double ctesMCPerm = Math.Round((creditosCA - dist2Credito) * clientesMCP2C);

                        Properties.Settings.Default.CtesDistPProd = (ctesDist / (creditosCN - dist)) * 100;
                        Properties.Settings.Default.CtesMMPProd = (ctesMM / (creditosCN - dist)) * 100;
                        Properties.Settings.Default.CtesCZPProd = (ctesCZ / (creditosCN - dist)) * 100;
                        Properties.Settings.Default.CtesMCPProd = (ctesMC / (creditosCN - dist)) * 100;

                        Properties.Settings.Default.CtesDistPPerm = (ctesDistPerm / (creditosCA - dist2Credito)) * 100;
                        Properties.Settings.Default.CtesMMPPerm = (ctesMMPerm / (creditosCA - dist2Credito)) * 100;
                        Properties.Settings.Default.CtesCZPPerm = (ctesCZPerm / (creditosCA - dist2Credito)) * 100;
                        Properties.Settings.Default.CtesMCPPerm = (ctesMCPerm / (creditosCA - dist2Credito)) * 100;

                        Properties.Settings.Default.ClientesDistP = 
                            ((ctesDist + ctesDistPerm + ctesDistAnt) / 
                            ((ctesTotales + (carteraTotal - clientes2Credito)) - distribuidoras)) * 100;
                        Properties.Settings.Default.ClientesMMP = 
                            ((ctesMM + ctesMMPerm + ctesMMAnt) / 
                            ((ctesTotales + (carteraTotal - clientes2Credito)) - distribuidoras)) * 100;
                        Properties.Settings.Default.ClientesZafyP = 
                            ((ctesCZ + ctesCZPerm + ctesCZAnt) / 
                            ((ctesTotales + (carteraTotal - clientes2Credito)) - distribuidoras)) * 100;
                        Properties.Settings.Default.ClientesMCP = 
                            ((ctesMC + ctesMCPerm + ctesMCAnt) / 
                            ((ctesTotales + (carteraTotal - clientes2Credito)) - distribuidoras)) * 100;
                    }

                    //Guarda las proporciones de los clientes para el período
                    //Clientes Distribuidoras
                    configId++;
                    tConfiguracionesRow = flujoDBDataSet1.T_Configuraciones.NewT_ConfiguracionesRow();
                    tConfiguracionesRow["Id"] = configId;
                    tConfiguracionesRow["SesionId"] = Properties.Settings.Default.SessionId.ToString().Trim();
                    tConfiguracionesRow["Campo"] = "CtesDP";
                    tConfiguracionesRow["Valor"] = Properties.Settings.Default.CtesDistPProd;
                    tConfiguracionesRow["TipoDato"] =
                        "P" +
                        (Properties.Settings.Default.PeriodoActual > 0 ?
                        Properties.Settings.Default.PeriodoActual.ToString().PadLeft(3, '0') : "000") +
                        "C";
                    tConfiguracionesRow["Estatus"] = "1";

                    flujoDBDataSet1.T_Configuraciones.AddT_ConfiguracionesRow(tConfiguracionesRow);

                    //Clientes Medios Masivos
                    configId++;
                    tConfiguracionesRow = flujoDBDataSet1.T_Configuraciones.NewT_ConfiguracionesRow();
                    tConfiguracionesRow["Id"] = configId;
                    tConfiguracionesRow["SesionId"] = Properties.Settings.Default.SessionId.ToString().Trim();
                    tConfiguracionesRow["Campo"] = "CtesMMP";
                    tConfiguracionesRow["Valor"] = Properties.Settings.Default.CtesMMPProd;
                    tConfiguracionesRow["TipoDato"] =
                        "P" +
                        (Properties.Settings.Default.PeriodoActual > 0 ?
                        Properties.Settings.Default.PeriodoActual.ToString().PadLeft(3, '0') : "000") +
                        "C";
                    tConfiguracionesRow["Estatus"] = "1";

                    flujoDBDataSet1.T_Configuraciones.AddT_ConfiguracionesRow(tConfiguracionesRow);

                    //Clientes Zafy
                    configId++;
                    tConfiguracionesRow = flujoDBDataSet1.T_Configuraciones.NewT_ConfiguracionesRow();
                    tConfiguracionesRow["Id"] = configId;
                    tConfiguracionesRow["SesionId"] = Properties.Settings.Default.SessionId.ToString().Trim();
                    tConfiguracionesRow["Campo"] = "CtesZP";
                    tConfiguracionesRow["Valor"] = Properties.Settings.Default.CtesCZPProd;
                    tConfiguracionesRow["TipoDato"] =
                        "P" +
                        (Properties.Settings.Default.PeriodoActual > 0 ?
                        Properties.Settings.Default.PeriodoActual.ToString().PadLeft(3, '0') : "000") +
                        "C";
                    tConfiguracionesRow["Estatus"] = "1";

                    flujoDBDataSet1.T_Configuraciones.AddT_ConfiguracionesRow(tConfiguracionesRow);

                    //Clientes Miembros de Célula
                    configId++;
                    tConfiguracionesRow = flujoDBDataSet1.T_Configuraciones.NewT_ConfiguracionesRow();
                    tConfiguracionesRow["Id"] = configId;
                    tConfiguracionesRow["SesionId"] = Properties.Settings.Default.SessionId.ToString().Trim();
                    tConfiguracionesRow["Campo"] = "CtesMC";
                    tConfiguracionesRow["Valor"] = Properties.Settings.Default.CtesMCPProd;
                    tConfiguracionesRow["TipoDato"] =
                        "P" +
                        (Properties.Settings.Default.PeriodoActual > 0 ?
                        Properties.Settings.Default.PeriodoActual.ToString().PadLeft(3, '0') : "000") +
                        "C";
                    tConfiguracionesRow["Estatus"] = "1";

                    flujoDBDataSet1.T_Configuraciones.AddT_ConfiguracionesRow(tConfiguracionesRow);

                    //Clientes Distribuidoras de permanencia
                    configId++;
                    tConfiguracionesRow = flujoDBDataSet1.T_Configuraciones.NewT_ConfiguracionesRow();
                    tConfiguracionesRow["Id"] = configId;
                    tConfiguracionesRow["SesionId"] = Properties.Settings.Default.SessionId.ToString().Trim();
                    tConfiguracionesRow["Campo"] = "CtesDPPerm";
                    tConfiguracionesRow["Valor"] = Properties.Settings.Default.CtesDistPPerm;
                    tConfiguracionesRow["TipoDato"] =
                        "P" +
                        (Properties.Settings.Default.PeriodoActual > 0 ?
                        Properties.Settings.Default.PeriodoActual.ToString().PadLeft(3, '0') : "000") +
                        "C";
                    tConfiguracionesRow["Estatus"] = "1";

                    flujoDBDataSet1.T_Configuraciones.AddT_ConfiguracionesRow(tConfiguracionesRow);

                    //Clientes Medios Masivos de permanencia
                    configId++;
                    tConfiguracionesRow = flujoDBDataSet1.T_Configuraciones.NewT_ConfiguracionesRow();
                    tConfiguracionesRow["Id"] = configId;
                    tConfiguracionesRow["SesionId"] = Properties.Settings.Default.SessionId.ToString().Trim();
                    tConfiguracionesRow["Campo"] = "CtesMMPPerm";
                    tConfiguracionesRow["Valor"] = Properties.Settings.Default.CtesMMPPerm;
                    tConfiguracionesRow["TipoDato"] =
                        "P" +
                        (Properties.Settings.Default.PeriodoActual > 0 ?
                        Properties.Settings.Default.PeriodoActual.ToString().PadLeft(3, '0') : "000") +
                        "C";
                    tConfiguracionesRow["Estatus"] = "1";

                    flujoDBDataSet1.T_Configuraciones.AddT_ConfiguracionesRow(tConfiguracionesRow);

                    //Clientes Zafy de permanencia
                    configId++;
                    tConfiguracionesRow = flujoDBDataSet1.T_Configuraciones.NewT_ConfiguracionesRow();
                    tConfiguracionesRow["Id"] = configId;
                    tConfiguracionesRow["SesionId"] = Properties.Settings.Default.SessionId.ToString().Trim();
                    tConfiguracionesRow["Campo"] = "CtesZPPerm";
                    tConfiguracionesRow["Valor"] = Properties.Settings.Default.CtesCZPPerm;
                    tConfiguracionesRow["TipoDato"] =
                        "P" +
                        (Properties.Settings.Default.PeriodoActual > 0 ?
                        Properties.Settings.Default.PeriodoActual.ToString().PadLeft(3, '0') : "000") +
                        "C";
                    tConfiguracionesRow["Estatus"] = "1";

                    flujoDBDataSet1.T_Configuraciones.AddT_ConfiguracionesRow(tConfiguracionesRow);

                    //Clientes Miembros de Célula de permanencia
                    configId++;
                    tConfiguracionesRow = flujoDBDataSet1.T_Configuraciones.NewT_ConfiguracionesRow();
                    tConfiguracionesRow["Id"] = configId;
                    tConfiguracionesRow["SesionId"] = Properties.Settings.Default.SessionId.ToString().Trim();
                    tConfiguracionesRow["Campo"] = "CtesMCPerm";
                    tConfiguracionesRow["Valor"] = Properties.Settings.Default.CtesMCPPerm;
                    tConfiguracionesRow["TipoDato"] =
                        "P" +
                        (Properties.Settings.Default.PeriodoActual > 0 ?
                        Properties.Settings.Default.PeriodoActual.ToString().PadLeft(3, '0') : "000") +
                        "C";
                    tConfiguracionesRow["Estatus"] = "1";

                    flujoDBDataSet1.T_Configuraciones.AddT_ConfiguracionesRow(tConfiguracionesRow);

                    Properties.Settings.Default.Save();

                    t_ConfiguracionesTableAdapter1.ClearBeforeFill = true;
                    
                    this.SaveFinalConfig();

                    
                }
                //Fin de colocación
                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), "Colocación no guardada");
            }
        }