private void AnalisisCapitalAseguradora() { double capital = 0; int autosAsegurados = 0; double mensualidades = 0; double prima = Convert.ToDouble(tbPrima.Text); string idaseguradora; int idase = 1; int choquesMes = 0; double costoMes = 0; if (!cbAnalisisElemento.Items.Contains(cbAnalisisElemento.Text)) { MessageBox.Show("Seleccione una aseguradora"); return; } idaseguradora = Comun.idCombo(cbAnalisisElemento.SelectedItem.ToString()); idase = Convert.ToInt32(idaseguradora.Substring(1)); // Conteo de automoviles asegurados y suma de ingresos mensuales por sus primas for (int i = 0; i < Comun.baseDatos.Tables["automoviles"].Rows.Count; i++) { if (idaseguradora == Comun.baseDatos.Tables["automoviles"].Rows[i][4].ToString()) { mensualidades += prima * Convert.ToInt32(Comun.baseDatos.Tables["automoviles"].Rows[i][3]); autosAsegurados++; } } DateTime fechaini = ObtenerFecha(tbFechaIni.Text); DateTime fechafin = ObtenerFecha(tbFechaFin.Text); List <infocapital> infoCapital = new List <infocapital>(); choquesMes = 0; DateTime fecha = new DateTime(fechaini.Year, fechaini.Month, 1); DateTime ultimaFechaGuardada = fecha; Random aleatorio = new Random(); for (int i = 0; i < Comun.baseDatos.Tables["choques"].Rows.Count; i++) { // Solo autos con esta aseguradora DataRow fila = Comun.baseDatos.Tables["choques"].Rows[i]; DateTime fechachoque = ObtenerFecha(fila["fecha"].ToString()); if (fechachoque.CompareTo(fechafin) > 0) { // Informe de mes finalizado capital += mensualidades - costoMes; infoCapital.Add(new infocapital(fecha.ToString("MMMyyyy"), choquesMes, costoMes, capital)); ultimaFechaGuardada = fecha; costoMes = 0; choquesMes = 0; break; } if (numAseguradora(fila["idajustadorx"].ToString()) != idase) { continue; } if (fechachoque.CompareTo(fechaini) < 0) { continue; } // Busqueda por Mes if (fechachoque.CompareTo(fecha) >= 0) { if (fechachoque.CompareTo(fecha.AddMonths(1)) < 0) { choquesMes++; int idauto = Convert.ToInt32(fila["idautomovilx"].ToString().Substring(1)) - 1; costoMes += 15000 + Convert.ToDouble(fila["intensidad"].ToString()) * Convert.ToInt32(Comun.baseDatos.Tables["automoviles"].Rows[idauto][3]); //aleatorio.Next(Convert.ToInt32(mensualidades * 0.1 / 40), Convert.ToInt32(mensualidades * 0.5)); } else { // Informe de mes finalizado capital += mensualidades - costoMes; infoCapital.Add(new infocapital(fecha.ToString("MMMyyyy"), choquesMes, costoMes, capital)); ultimaFechaGuardada = fecha; costoMes = 0; choquesMes = 0; fecha = fecha.AddMonths(1); i--; // Busca la fecha adecuada para este registro continue; } } } // Ultimos meses sin actividad ultimaFechaGuardada = ultimaFechaGuardada.AddMonths(1); while (ultimaFechaGuardada.CompareTo(fechafin) <= 0) { // Ultimo mes sin choques hasta la fecha fin indicada por el usuario capital += mensualidades; infoCapital.Add(new infocapital(ultimaFechaGuardada.ToString("MMMyyyy"), 0, 0, capital)); ultimaFechaGuardada = ultimaFechaGuardada.AddMonths(1); } if (ultimaFechaGuardada.Month == fechafin.Month && ultimaFechaGuardada.Year == fechafin.Year) { capital += mensualidades; infoCapital.Add(new infocapital(ultimaFechaGuardada.ToString("MMMyyyy"), 0, 0, capital)); } // Fin de no actividad en los ultimos meses chart.Series.Clear(); chart.DataBindTable(infoCapital, "mes"); chart.ChartAreas[0].AxisY.LabelStyle.Format = "{0:0,}K"; chart.ChartAreas[0].AxisX.Minimum = 1; chart.ChartAreas[0].AxisX.Maximum = infoCapital.Count; chart.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; //chart.Series[1].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; chart.Series[2].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; string ruta = Application.StartupPath + "\\grafico.bmp"; if (System.IO.File.Exists(ruta)) { System.IO.File.Delete(ruta); } chart.SaveImage(ruta, System.Drawing.Imaging.ImageFormat.Bmp); DataTable dt = infoTabla(cbAnalisisElemento.SelectedItem.ToString(), infoCapital); (new frmVisualizadorTabla(cbAnalisisElemento.SelectedItem.ToString(), dt)).Show(); // +++++++++++++++++++++++++++++++++++++++++++++ Crear Informe RichTextBox rtb = new RichTextBox(); DateTime fechaId = DateTime.Now; rtb.AppendText("Informe Mensual de " + cbAnalisisTipo.Text + " " + cbAnalisisElemento.Text + "\n\n"); rtb.AppendText(" Tomado el " + fechaId.ToLongDateString() + " " + fechaId.ToLongTimeString() + "\n\n"); rtb.AppendText(" Periodo del " + tbFechaIni.Text + " al " + tbFechaFin.Text + "\n\n\n"); rtb.AppendText(" Factor de cobro mensual por el precio de cada automovil asegurado: " + tbPrima.Text + "\n\n Ingreso Mensual: " + mensualidades.ToString("N2") + " Automoviles asegurados: " + autosAsegurados + "\n\n\n"); Bitmap grafico = new Bitmap(ruta); Clipboard.SetDataObject(grafico); DataFormats.Format graficoConFormato = DataFormats.GetFormat(DataFormats.Bitmap); rtb.Paste(graficoConFormato); Clipboard.Clear(); grafico.Dispose(); System.IO.File.Delete(ruta); dgv.Columns.Clear(); dgv.DataSource = dt; rtb.Font = new Font("Consolas", 9.0f, FontStyle.Regular); rtb.AppendText("\n\n" + TablaTextoConDGV(dgv, 0) + "\n\n"); (new frmInforme(fechaId, rtb.Rtf)).Show(); }
private void AnalisisChoques(string mensaje, int ubicacion, string tablaNombre, string campoNombre) { int choquesMes = 0; double costoMes = 0; int meses = 0; double costoTotal = 0; int choquesTotal = 0; if (!cbAnalisisElemento.Items.Contains(cbAnalisisElemento.Text)) { MessageBox.Show("Seleccione " + mensaje); return; } string estado = cbAnalisisElemento.SelectedItem.ToString(); if (tablaNombre == "pilotos" || tablaNombre == "ajustadores") { estado = Comun.idCombo(estado); } DateTime fechaini = ObtenerFecha(tbFechaIni.Text); DateTime fechafin = ObtenerFecha(tbFechaFin.Text); List <infochoque> infoChoque = new List <infochoque>(); choquesMes = 0; DateTime fecha = new DateTime(fechaini.Year, fechaini.Month, 1); DateTime ultimaFechaGuardada = fecha; for (int i = 0; i < Comun.baseDatos.Tables["choques"].Rows.Count; i++) { // Solo autos con esta aseguradora DataRow fila = Comun.baseDatos.Tables["choques"].Rows[i]; DateTime fechachoque = ObtenerFecha(fila["fecha"].ToString()); if (fechachoque.CompareTo(fechafin) > 0) { // Informe de mes finalizado infoChoque.Add(new infochoque(fecha.ToString("MMMyyyy"), choquesMes, costoMes)); meses++; choquesTotal += choquesMes; costoTotal += costoMes; ultimaFechaGuardada = fecha; costoMes = 0; choquesMes = 0; break; } if (fechachoque.CompareTo(fechaini) < 0) { continue; } // if (baseDatos.Tables["lugares"].Rows[numAseguradora(fila["idlugar"].ToString())][2].ToString() != estado) if (tablaNombre == "pilotos" || tablaNombre == "ajustadores") { if (fila[campoNombre].ToString() != estado) { continue; } } else if (Comun.baseDatos.Tables[tablaNombre].Rows[numAseguradora(fila[campoNombre].ToString())][ubicacion].ToString() != estado) { continue; } // Busqueda por Mes if (fechachoque.CompareTo(fecha) >= 0) { if (fechachoque.CompareTo(fecha.AddMonths(1)) < 0) { choquesMes++; int idauto = Convert.ToInt32(fila["idautomovilx"].ToString().Substring(1)) - 1; costoMes += 15000 + Convert.ToDouble(fila["intensidad"].ToString()) * Convert.ToInt32(Comun.baseDatos.Tables["automoviles"].Rows[idauto][3]); //aleatorio.Next(Convert.ToInt32(mensualidades * 0.1 / 40), Convert.ToInt32(mensualidades * 0.5)); } else { // Informe de mes finalizado infoChoque.Add(new infochoque(fecha.ToString("MMMyyyy"), choquesMes, costoMes)); meses++; choquesTotal += choquesMes; costoTotal += costoMes; ultimaFechaGuardada = fecha; costoMes = 0; choquesMes = 0; fecha = fecha.AddMonths(1); i--; // Busca la fecha adecuada para este registro continue; } } } // Ultimos meses sin actividad ultimaFechaGuardada = ultimaFechaGuardada.AddMonths(1); while (ultimaFechaGuardada.CompareTo(fechafin) <= 0) { // Ultimo mes sin choques hasta la fecha fin indicada por el usuario infoChoque.Add(new infochoque(ultimaFechaGuardada.ToString("MMMyyyy"), 0, 0)); meses++; ultimaFechaGuardada = ultimaFechaGuardada.AddMonths(1); } if (ultimaFechaGuardada.Month == fechafin.Month && ultimaFechaGuardada.Year == fechafin.Year) { infoChoque.Add(new infochoque(ultimaFechaGuardada.ToString("MMMyyyy"), 0, 0)); meses++; } // Fin de no actividad en los ultimos meses chart.Series.Clear(); chart.DataBindTable(infoChoque, "mes"); chart.ChartAreas[0].AxisY.LabelStyle.Format = "{0:0,}K"; chart.ChartAreas[0].AxisX.Minimum = 1; chart.ChartAreas[0].AxisX.Maximum = infoChoque.Count; chart.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; //chart.Series[1].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; //string ruta = Application.StartupPath + "\\grafico_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".bmp"; string ruta = Application.StartupPath + "\\grafico.bmp"; if (System.IO.File.Exists(ruta)) { System.IO.File.Delete(ruta); } chart.SaveImage(ruta, System.Drawing.Imaging.ImageFormat.Bmp); DataTable dt = infoTabla(cbAnalisisElemento.SelectedItem.ToString(), infoChoque); (new frmVisualizadorTabla(cbAnalisisElemento.SelectedItem.ToString(), dt)).Show(); // +++++++++++++++++++++++++++++++++++++++++++++ Crear Informe RichTextBox rtb = new RichTextBox(); DateTime fechaId = DateTime.Now; rtb.AppendText("Informe Mensual de " + cbAnalisisTipo.Text + " " + cbAnalisisElemento.Text + "\n\n"); rtb.AppendText(" Tomado el " + fechaId.ToLongDateString() + " " + fechaId.ToLongTimeString() + "\n\n"); rtb.AppendText(" Periodo del " + tbFechaIni.Text + " al " + tbFechaFin.Text + "\n\n\n"); rtb.AppendText(" Meses: " + meses + " Choques: " + choquesTotal + " Promedio mensual: " + (choquesTotal / (1.0 + meses)).ToString("N2") + "\n"); rtb.AppendText(" Costo Total: " + costoTotal.ToString("N2") + " Promedio mensual: " + (costoTotal / (meses)).ToString("N2") + "\n\n\n"); Bitmap grafico = new Bitmap(ruta); Clipboard.SetDataObject(grafico); DataFormats.Format graficoConFormato = DataFormats.GetFormat(DataFormats.Bitmap); rtb.Paste(graficoConFormato); Clipboard.Clear(); grafico.Dispose(); System.IO.File.Delete(ruta); dgv.Columns.Clear(); dgv.DataSource = dt; rtb.Font = new Font("Consolas", 9.0f, FontStyle.Regular); rtb.AppendText("\n\n" + TablaTextoConDGV(dgv, 0) + "\n\n"); (new frmInforme(fechaId, rtb.Rtf)).Show(); }