private void CREAR_RECIBO() { if (DgvDeudasSeleccionadas.RowCount <= 0) { MessageBox.Show("Debe seleccionar al menos una deuda."); return; } //Crea la lista ListaDeudasAPagar lista = new ListaDeudasAPagar(); //Obtiene la cantidad de deudas seleccionadas int filas = DgvDeudasSeleccionadas.Rows.Count; //Crea el recibo oRecibo = new MODELO.RECIBO(); decimal total = 0; for (int i = 0; i <= filas - 1; i++) { //Acumula el total a pagar total += Convert.ToDecimal(DgvDeudasSeleccionadas[3, i].Value); } //Crea los recibos uno por uno for (int i = 0; i <= filas - 1; i++) { //Obtiene la deduda oDeuda = (MODELO.DEUDA)DgvDeudasSeleccionadas.Rows[i].DataBoundItem; oDeuda.Pagada = true; //Modifica la deuda pagada cAFILIADOS.modificar_deuda(oDeuda); //Crea el detalle y le agrega Recibo y Deuda cFACTURACION.AgregarDetalle(oRecibo, oDeuda); //Crea objeto para Crystal Report lista.Tables[0].Rows.Add (new object[] { DgvDeudasSeleccionadas[0, i].Value.ToString(), DgvDeudasSeleccionadas[1, i].Value.ToString(), DgvDeudasSeleccionadas[2, i].Value.ToString(), DgvDeudasSeleccionadas[3, i].Value.ToString(), DgvDeudasSeleccionadas[4, i].Value.ToString(), DgvDeudasSeleccionadas[5, i].Value.ToString(), total }); } //----ESTO ES PARA CREAR EL REPORTE PDF----// ReportDocument oRep = new ReportDocument(); oRep.Load(rutaProyecto + "VISTA/Recibo.rpt"); oRep.SetDataSource(lista); crystalReportViewer1.ReportSource = oRep; crystalReportViewer1.Visible = true; crystalReportViewer1.Dock = DockStyle.Fill; crystalReportViewer1.PrintReport(); listaDeudas.Clear(); //Completa los datos del Recibo oRecibo.Importe = total; oRecibo.Fecha = DateTime.Today; oRecibo.Nro_Recibo = oRecibo.Id_Recibo + 100; oRecibo.AFILIADO = oAfiliado; //Guarda el Recibo cFACTURACION.AgregarRecibo(oRecibo); ARMA_GRILLA(); }
private void btnDebitar_Click(object sender, EventArgs e) { if (!CONTROLADORA.funciones_compartidas.CHEQUEAR_EMAIL()) { MessageBox.Show("No se ha configurado una cuenta de correo para el envio de recibos."); return; } //CREA TODOS LOS RECIBOS Y LOS ENVIA UNO POR UNO POR CORREO bool enviaron = false; //para saber si mostrar mensaje de recibos enviados ListaDeudasAPagar lista = new ListaDeudasAPagar(); dgvAFILIADOS.DataSource = cAFILIADOS.Obtener_Afiliados("", true, false); //obtiene todos los afiliados con Debito Automático int numero_afiliados = dgvAFILIADOS.Rows.Count; //numero de afiliados for (int j = 0; j <= numero_afiliados - 1; j++) //crea recibo uno por uno { lista.Clear(); oAfiliado = cAFILIADOS.Obtener_Afiliados(Convert.ToInt32(dgvAFILIADOS[0, j].Value)); //obtiene afiliado MODELO.DEUDA oDeuda = oAfiliado.DEUDAS.FirstOrDefault(x => x.Pagada == false); //obtiene deuda sin pagar //Crea un recibo nuevo oRecibo = new MODELO.RECIBO(); //Crea el Detalle_Recibo con el Recibo y la Deuda cFACTURACION.AgregarDetalle(oRecibo, oDeuda); if (oDeuda != null) //si la deuda existe { enviaron = true; lblDebitar.Visible = true; lblDebitar.Text = lblDebitar.Text = "Se estan enviando los recibos. Por favor, espere que termine el proceso." + " Quedan " + numero_afiliados + " por enviar."; lista.Tables[0].Rows.Add //se carga la deuda en el dataset (new object[] { oDeuda.Id, oDeuda.Mes, oDeuda.Año, oDeuda.Monto, oDeuda.Pagada, oDeuda.AFILIADO.Nombre, oDeuda.Monto }); //----ESTO ES PARA CREAR EL RECIBO PDF---// ReportDocument oRep = new ReportDocument(); oRep.Load(rutaProyecto + "VISTA/Recibo.rpt"); oRep.SetDataSource(lista); crystalReportViewer1.ReportSource = oRep; //carga el documento en el CrystalReport //----ESTO ES PARA ENVIAR EL RECIBO PDF POR MAIL---// oRep.ExportToDisk(ExportFormatType.PortableDocFormat, rutaProyecto + "report" + j + ".pdf"); //exporta recibo en pdf string filename = rutaProyecto + "report" + j + ".pdf"; CONTROLADORA.funciones_compartidas.EnviarEmail(oAfiliado.Email, "Recibo", "Recibo", filename); lblDebitar.Text = lblDebitar.Text = "Se estan enviando los recibos. Por favor, espere que termine el proceso." + " Quedan " + (numero_afiliados - (j + 1)) + " por enviar."; oAfiliado.DEUDAS.First(x => x.Pagada == false).Pagada = true; //Cambia el estado de la deuda a pagado cAFILIADOS.Modificar_Afiliado(oAfiliado); //guarda la deuda //Completa los datos del Recibo y lo guarda en el catalogo oRecibo.AFILIADO = oAfiliado; oRecibo.Fecha = DateTime.Today; oRecibo.Importe = oDeuda.Monto; oRecibo.Nro_Recibo = oRecibo.Id_Recibo + 100; cFACTURACION.AgregarRecibo(oRecibo); } } if (enviaron) //si se enviaron recibos, se muestra el mensaje { MessageBox.Show("Se han enviado todos los recibos por correo."); lblDebitar.Visible = false; //Deshabilita el boton Debitar porque ya se realizo esa tarea btnDebitar.Enabled = false; ARMA_GRILLA(); } else { MessageBox.Show("Ya se han cobrado las cuantas de Debito Automático."); ARMA_GRILLA(); } }