Beispiel #1
0
        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();
            }
        }