/// <summary>
        /// Loads user preferences and displays them
        /// </summary>
        private void LoadPreferences()
        {
            DescuentoValue        = UserPreferences.GetDescuento();
            DescuentoInitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", DescuentoValue);

            NumeroReciboValue        = UserPreferences.GetNumeroRecibo();
            NumeroReciboInitialValue = NumeroReciboValue;

            UbicacionValue        = UserPreferences.GetPreferredLocation();
            UbicacionInitialValue = UbicacionValue;

            RecibosValue        = UserPreferences.GetRecibosLocation();
            RecibosInitialValue = RecibosValue;

            FacturasValue        = UserPreferences.GetFacturasLocation();
            FacturasInitialValue = FacturasValue;

            ReconexionValue        = UserPreferences.GetReconexionValue();
            ReconexionInitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", ReconexionValue);

            AfiliacionValue        = UserPreferences.GetAfiliacionValue();
            AfiliacionInitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", AfiliacionValue);

            DerivacionValue        = UserPreferences.GetDerivacionValue();
            DerivacionInitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", DerivacionValue);

            TrasladoValue        = UserPreferences.GetTrasladoValue();
            TrasladoInitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", TrasladoValue);

            TVvalue        = UserPreferences.GetTVValue();
            TVInitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", TVvalue);

            Megas3Value        = UserPreferences.Get3MegasValue();
            Megas3InitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", Megas3Value);

            Megas5Value        = UserPreferences.Get5MegasValue();
            Megas5InitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", Megas5Value);

            Megas7Value        = UserPreferences.Get7MegasValue();
            Megas7InitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", Megas7Value);

            Megas10Value        = UserPreferences.Get10MegasValue();
            Megas10InitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", Megas10Value);

            (ComboTV3Value, ComboInternet3Value) = UserPreferences.GetCombo3();
            Combo3TVInitialValue       = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", ComboTV3Value);
            Combo3InternetInitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", ComboInternet3Value);

            (ComboTV5Value, ComboInternet5Value) = UserPreferences.GetCombo5();
            Combo5TVInitialValue       = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", ComboTV5Value);
            Combo5InternetInitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", ComboInternet5Value);

            (ComboTV7Value, ComboInternet7Value) = UserPreferences.GetCombo7();
            Combo7TVInitialValue       = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", ComboTV7Value);
            Combo7InternetInitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", ComboInternet7Value);

            (ComboTV10Value, ComboInternet10Value) = UserPreferences.GetCombo10();
            Combo10TVInitialValue       = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", ComboTV10Value);
            Combo10InternetInitialValue = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", ComboInternet10Value);
        }
        /// <summary>
        /// Generates Recibos de caja.
        /// </summary>
        /// <param name="items">It is a pair of values</param>
        /// <param name="type">The type of recibo de caja</param>
        /// <returns>True if files were generated succesfully</returns>
        public override bool GenerateFiles(List <Tuple <Factura, Customer> > items, string type, object sender, System.Windows.Controls.TextBlock text)
        {
            for (int i = 0; i < items.Count; ++i)
            {
                //Change current operation description
                base.UpdateCurrentOperationDescription("Proceso iniciado  " + (i + 1) + "/" + items.Count);
                text.Dispatcher.Invoke(delegate
                {
                    text.Text = CurrentOperationDescription;
                });
                string concepto = String.Empty;
                int    ct       = 0;
                foreach (Cargo cargo in items.ElementAt(i).Item1.cargos)
                {
                    concepto += cargo.Concepto.ToString().ToUpper();
                    concepto += new StringBuilder(" ").Append(cargo.MesCargado.ToString().ToUpper());

                    if (!(items.ElementAt(i).Item1.cargos.Count - 1 == ct++))
                    {
                        concepto += "-";
                    }
                }


                using (ExcelPackage xlPackage = new ExcelPackage(new System.IO.FileInfo(@UserPreferences.GetRecibosLocation())))
                {
                    //Change current operation description
                    base.UpdateCurrentOperationDescription("Obteniendo directorio");
                    text.Dispatcher.Invoke(delegate
                    {
                        text.Text = CurrentOperationDescription;
                    });

                    StringBuilder DirectoryLocation = new StringBuilder(UserPreferences.GetPreferredLocation()).Append(@"\").Append(type);
                    var           directoryInfo     = System.IO.Directory.CreateDirectory(@DirectoryLocation.ToString());

                    //Change Current Operation Description
                    base.UpdateCurrentOperationDescription("Generando nombres de archivo");
                    text.Dispatcher.Invoke(delegate
                    {
                        text.Text = CurrentOperationDescription;
                    });

                    StringBuilder FileLocationXlsx = new StringBuilder(directoryInfo.FullName).Append(@"\").Append(items.ElementAt(i).Item1.NumeroFactura).Append(FileExtensions.ExcelFormat);
                    StringBuilder FileLocationPDF  = new StringBuilder(directoryInfo.FullName).Append(@"\").Append(items.ElementAt(i).Item1.NumeroFactura).Append(FileExtensions.PDFFormat);

                    try
                    {
                        var worksheet    = xlPackage.Workbook.Worksheets.First();
                        var totalRows    = worksheet.Dimension.End.Row;
                        var totalColumns = worksheet.Dimension.End.Column;

                        //Change Current Operation Description
                        base.UpdateCurrentOperationDescription("Escaneando plantilla");
                        text.Dispatcher.Invoke(delegate
                        {
                            text.Text = CurrentOperationDescription;
                        });

                        int count = 0;
                        for (int rowNum = 1; rowNum <= totalRows; ++rowNum)
                        {
                            for (int colNum = 1; colNum <= totalColumns; ++colNum)
                            {
                                var    row       = worksheet.Cells[rowNum, colNum].Select(c => c.Value == null ? String.Empty : c.Value.ToString());
                                string cellValue = String.Join(",", row);

                                if (cellValue == RecibosKeyWords.NUMERORECIBO)
                                {
                                    int numero_recibo = UserPreferences.GetNumeroRecibo();
                                    worksheet.Cells[rowNum, colNum].Value = new StringBuilder("#").Append(numero_recibo).ToString();
                                    UserPreferences.SaveNumeroRecibo(++numero_recibo);
                                }
                                if (cellValue == RecibosKeyWords.NOMBRES)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = new StringBuilder(items.ElementAt(i).Item2.Nombre).Append(" ").Append(items.ElementAt(i).Item2.Apellido).ToString();
                                }
                                if (cellValue == RecibosKeyWords.FECHA)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = DateManager.GetDateInSpanish();
                                }
                                if (cellValue == RecibosKeyWords.CEDULA)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = items.ElementAt(i).Item2.Cedula;
                                }
                                if (cellValue == RecibosKeyWords.DIRECCION)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = items.ElementAt(i).Item2.Direccion;
                                }
                                if (cellValue == RecibosKeyWords.BARRIO)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = items.ElementAt(i).Item2.Barrio;
                                }
                                if (cellValue == RecibosKeyWords.CONCEPTO)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = concepto;
                                }
                                if (cellValue == RecibosKeyWords.NODO)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = items.ElementAt(i).Item2.Nodo;
                                }
                                if (cellValue == RecibosKeyWords.TELEFONO)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = items.ElementAt(i).Item2.Telefono;
                                }
                                if (cellValue == RecibosKeyWords.MES)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = DateManager.GetMonthInSpanish();
                                }
                                if (cellValue == RecibosKeyWords.VALOR)
                                {
                                    string valorToDisplay = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", Valor);
                                    worksheet.Cells[rowNum, colNum].Value = valorToDisplay;
                                }

                                //Change progress value
                                int newProgress = (int)((((float)(++count) / (float)(totalRows * totalColumns)) * (1.0f / (float)items.Count)) * 100);
                                base.UpdateProgreso(newProgress);
                                (sender as BackgroundWorker).ReportProgress(Progress);
                            }
                        }

                        //Change Current Operation Description
                        base.UpdateCurrentOperationDescription("Generando archivo PDF");
                        text.Dispatcher.Invoke(delegate
                        {
                            text.Text = CurrentOperationDescription;
                        });

                        xlPackage.SaveAs(new System.IO.FileInfo(@FileLocationXlsx.ToString()));
                        Workbook workbook = new Application().Workbooks.Open(@FileLocationXlsx.ToString());
                        workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, @FileLocationPDF.ToString());
                        workbook.Close();
                    }
                    catch (Exception)
                    {
                        RollBack(FileLocationXlsx.ToString(), FileLocationPDF.ToString());
                        throw;
                    }
                    finally
                    {
                        File.Delete(@FileLocationXlsx.ToString());
                    }
                }
            }
            base.UpdateProgreso(100);

            (sender as BackgroundWorker).ReportProgress(Progress);
            return(true);
        }
        /// <summary>
        /// Searches for files associated with a customer
        /// </summary>
        private void FindFile()
        {
            this.ListViewFiles.Items.Clear();
            this.PDFViewer.Navigate(new Uri(BlankPage));
            string cedula = this.CedulaText.Text.Trim();

            //Mensualidad

            try
            {
                DirectoryInfo dirMensualidad = new DirectoryInfo(new StringBuilder(UserPreferences.GetPreferredLocation()).Append(@"\").Append(TypeOfRecibos.MENSUALIDAD).Append(@"\").ToString());
                if (!(dirMensualidad is null))
                {
                    if (Directory.Exists(dirMensualidad.FullName))
                    {
                        DirectoryInfo[] DirecIndir = dirMensualidad.GetDirectories();

                        foreach (DirectoryInfo foundFolder in DirecIndir)
                        {
                            DirectoryInfo dirPerMes    = new DirectoryInfo(@foundFolder.FullName);
                            FileInfo[]    fileinPerMes = dirPerMes.GetFiles(cedula + "*.pdf");

                            foreach (FileInfo foundFile in fileinPerMes)
                            {
                                this.ListViewFiles.Items.Add(new FileView(foundFile.Name.Replace(FileExtensions.PDFFormat, String.Empty), foundFile.FullName));
                            }
                        }
                    }
                }


                //Pagos


                DirectoryInfo dirPagos = new DirectoryInfo(new StringBuilder(UserPreferences.GetPreferredLocation()).Append(@"\").Append(TypeOfRecibos.PAGO).Append(@"\").ToString());
                if (!(dirPagos is null))
                {
                    if (Directory.Exists(dirPagos.FullName))
                    {
                        FileInfo[] fileinPerPago = dirPagos.GetFiles(cedula + "*.pdf");

                        foreach (FileInfo foundFile in fileinPerPago)
                        {
                            this.ListViewFiles.Items.Add(new FileView(foundFile.Name.Replace(FileExtensions.PDFFormat, String.Empty), foundFile.FullName));
                        }
                    }
                }

                //Afiliaciones

                DirectoryInfo dirAfiliaciones = new DirectoryInfo(new StringBuilder(UserPreferences.GetPreferredLocation()).Append(@"\").Append(TypeOfRecibos.AFILIACION).Append(@"\").ToString());
                if (!(dirAfiliaciones is null))
                {
                    if (Directory.Exists(dirAfiliaciones.FullName))
                    {
                        FileInfo[] fileinPerAfiliaciones = dirAfiliaciones.GetFiles(cedula + "*.pdf");

                        foreach (FileInfo foundFile in fileinPerAfiliaciones)
                        {
                            this.ListViewFiles.Items.Add(new FileView(foundFile.Name.Replace(FileExtensions.PDFFormat, String.Empty), foundFile.FullName));
                        }
                    }
                }

                //Derivaciones

                DirectoryInfo dirDerivaciones = new DirectoryInfo(new StringBuilder(UserPreferences.GetPreferredLocation()).Append(@"\").Append(TypeOfRecibos.DERIVACION).Append(@"\").ToString());
                if (!(dirDerivaciones is null))
                {
                    if (Directory.Exists(dirDerivaciones.FullName))
                    {
                        FileInfo[] fileinDerivaciones = dirDerivaciones.GetFiles(cedula + "*.pdf");

                        foreach (FileInfo foundFile in fileinDerivaciones)
                        {
                            this.ListViewFiles.Items.Add(new FileView(foundFile.Name.Replace(FileExtensions.PDFFormat, String.Empty), foundFile.FullName));
                        }
                    }
                }

                //Traslado

                DirectoryInfo dirTraslado = new DirectoryInfo(new StringBuilder(UserPreferences.GetPreferredLocation()).Append(@"\").Append(TypeOfRecibos.TRASLADO).Append(@"\").ToString());
                if (!(dirTraslado is null))
                {
                    if (Directory.Exists(dirTraslado.FullName))
                    {
                        FileInfo[] fileinTraslado = dirTraslado.GetFiles(cedula + "*.pdf");

                        foreach (FileInfo foundFile in fileinTraslado)
                        {
                            this.ListViewFiles.Items.Add(new FileView(foundFile.Name.Replace(FileExtensions.PDFFormat, String.Empty), foundFile.FullName));
                        }
                    }
                }

                //Otros

                DirectoryInfo dirOtros = new DirectoryInfo(new StringBuilder(UserPreferences.GetPreferredLocation()).Append(@"\").Append(TypeOfRecibos.OTROS).Append(@"\").ToString());
                if (!(dirOtros is null))
                {
                    if (Directory.Exists(dirOtros.FullName))
                    {
                        FileInfo[] fileinOtros = dirOtros.GetFiles(cedula + "*.pdf");

                        foreach (FileInfo foundFile in fileinOtros)
                        {
                            this.ListViewFiles.Items.Add(new FileView(foundFile.Name.Replace(FileExtensions.PDFFormat, String.Empty), foundFile.FullName));
                        }
                    }
                }
            } catch (Exception)
            {
                SystemSounds.Beep.Play();
                MessageBox.Show("Error!", Messages.Titles.Alert, MessageBoxButton.OK, MessageBoxImage.Error);
            }

            if (this.ListViewFiles.Items.Count == 0)
            {
                SystemSounds.Beep.Play();
                MessageBox.Show("No se encontro ningun registro", Messages.Titles.Warninig, MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
        /// <summary>
        /// Generates Invoices
        /// </summary>
        /// <param name="items">It is a pair of values in which none can be null</param>
        /// <param name="type">The type of invoices</param>
        /// <returns>True if files were generated succesfully</returns>
        public override bool GenerateFiles(List <Tuple <Factura, Customer> > items, string type, object sender, System.Windows.Controls.TextBlock text)
        {
            for (int i = 0; i < items.Count; ++i)
            {
                int total = 0;
                foreach (Cargo cargo in items.ElementAt(i).Item1.cargos)
                {
                    total += cargo.Valor;
                }

                //Change Current Operation Description
                base.UpdateCurrentOperationDescription("Proceso iniciado: " + (i + 1) + "/" + items.Count);
                text.Dispatcher.Invoke(delegate
                {
                    text.Text = CurrentOperationDescription;
                });


                using (ExcelPackage xlPackage = new ExcelPackage(new System.IO.FileInfo(@UserPreferences.GetFacturasLocation())))
                {
                    //Change Current Operation Description
                    base.UpdateCurrentOperationDescription("Obteniendo directorio");
                    text.Dispatcher.Invoke(delegate
                    {
                        text.Text = CurrentOperationDescription;
                    });

                    StringBuilder DirectoryLocation = new StringBuilder(UserPreferences.GetPreferredLocation()).Append(@"\").Append(type).Append(@"\").Append(DateManager.GetMonthInSpanish().ToUpper());
                    var           directoryInfo     = System.IO.Directory.CreateDirectory(@DirectoryLocation.ToString());

                    //Change Current Operation Description
                    base.UpdateCurrentOperationDescription("Generando nombres de archivo");
                    text.Dispatcher.Invoke(delegate
                    {
                        text.Text = CurrentOperationDescription;
                    });

                    StringBuilder FileLocationXlsx = new StringBuilder(directoryInfo.FullName).Append(@"\").Append(items.ElementAt(i).Item1.NumeroFactura).Append(FileExtensions.ExcelFormat);
                    StringBuilder FileLocationPDF  = new StringBuilder(directoryInfo.FullName).Append(@"\").Append(items.ElementAt(i).Item1.NumeroFactura).Append(FileExtensions.PDFFormat);

                    if (File.Exists(FileLocationPDF.ToString()))
                    {
                        continue;
                    }
                    try
                    {
                        var worksheet    = xlPackage.Workbook.Worksheets.First();
                        var totalRows    = worksheet.Dimension.End.Row;
                        var totalColumns = worksheet.Dimension.End.Column;

                        //Change Current Operation Description
                        base.UpdateCurrentOperationDescription("Escaneando plantilla");
                        text.Dispatcher.Invoke(delegate
                        {
                            text.Text = CurrentOperationDescription;
                        });
                        for (int rowNum = 1; rowNum <= totalRows; ++rowNum)
                        {
                            for (int colNum = 1; colNum <= totalColumns; ++colNum)
                            {
                                var    row       = worksheet.Cells[rowNum, colNum].Select(c => c.Value == null ? String.Empty : c.Value.ToString());
                                string cellValue = String.Join(",", row);

                                if (cellValue == FacturasKeyWords.CEDULA)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = items.ElementAt(i).Item2.Cedula;
                                }

                                if (cellValue == FacturasKeyWords.NOMBRES)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = new StringBuilder(items.ElementAt(i).Item2.Nombre).Append(" ").Append(items.ElementAt(i).Item2.Apellido).ToString();
                                }

                                if (cellValue == FacturasKeyWords.BARRIO)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = items.ElementAt(i).Item2.Barrio;
                                }
                                if (cellValue == FacturasKeyWords.DIRECCION)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = items.ElementAt(i).Item2.Direccion;
                                }
                                if (cellValue == FacturasKeyWords.FECHA)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = DateManager.GetDateInSpanish(items.ElementAt(i).Item1.Fecha);
                                }
                                if (cellValue == FacturasKeyWords.FECHADEPAGO)
                                {
                                    worksheet.Cells[rowNum, colNum].Value = DateManager.GetDateInSpanish(items.ElementAt(i).Item1.FechaLimite.Value);
                                }
                                if (cellValue == FacturasKeyWords.TOTAL)
                                {
                                    string valorToDisplay = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", total);
                                    worksheet.Cells[rowNum, colNum].Value = valorToDisplay;
                                }


                                //Adjusts charges
                                int j = 0;
                                foreach (Cargo cargo in items.ElementAt(i).Item1.cargos)
                                {
                                    //Avoid index out of range
                                    if (j == FacturasKeyWords.SIZEOFCARGO)
                                    {
                                        break;
                                    }

                                    if (cellValue == FacturasKeyWords.CONCEPTO.ElementAt(j))
                                    {
                                        worksheet.Cells[rowNum, colNum].Value = cargo.Concepto.ToString().ToUpper();
                                    }
                                    if (cellValue == FacturasKeyWords.PERIODO.ElementAt(j))
                                    {
                                        if (cargo.MesCargado is null)
                                        {
                                            worksheet.Cells[rowNum, colNum].Value = DateManager.GetMonthInSpanish((int)items.ElementAt(i).Item1.MesCargado + 1);
                                        }
                                        else
                                        {
                                            worksheet.Cells[rowNum, colNum].Value = cargo.MesCargado.ToString().ToUpper();
                                        }
                                    }
                                    if (cellValue == FacturasKeyWords.VALOR.ElementAt(j))
                                    {
                                        int valorSinIva = cargo.Valor;
                                        if (cargo.Concepto == Concepto.TV)
                                        {
                                            Calculadora.CalcularValorSinIVA(out valorSinIva, out int iva, cargo.Valor);
                                        }
                                        string valorToDisplay = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", valorSinIva);
                                        worksheet.Cells[rowNum, colNum].Value = valorToDisplay;
                                    }
                                    if (cellValue == FacturasKeyWords.IVA.ElementAt(j))
                                    {
                                        int iva = 0;
                                        if (cargo.Concepto == Concepto.TV)
                                        {
                                            Calculadora.CalcularValorSinIVA(out int valorSinIva, out iva, cargo.Valor);
                                        }
                                        string valorToDisplay = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", iva);
                                        worksheet.Cells[rowNum, colNum].Value = valorToDisplay;
                                    }
                                    if (cellValue == FacturasKeyWords.NETO.ElementAt(j))
                                    {
                                        string valorToDisplay = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C}", cargo.Valor);
                                        worksheet.Cells[rowNum, colNum].Value = valorToDisplay;
                                    }
                                    ++j;
                                }

                                //Change progress value
                                int newProgress = (int)((100 * ((float)i / (float)items.Count)));
                                base.UpdateProgreso(newProgress);
                                (sender as BackgroundWorker).ReportProgress(Progress);
                            }
                        }

                        //Clean unused fields in facturas
                        for (int rowNum = 1; rowNum <= totalRows; ++rowNum)
                        {
                            for (int colNum = 1; colNum <= totalColumns; ++colNum)
                            {
                                var    row       = worksheet.Cells[rowNum, colNum].Select(c => c.Value == null ? String.Empty : c.Value.ToString());
                                string cellValue = String.Join(",", row);

                                for (int j = 0; j < FacturasKeyWords.SIZEOFCARGO; j++)
                                {
                                    if (cellValue == FacturasKeyWords.CONCEPTO.ElementAt(j))
                                    {
                                        worksheet.Cells[rowNum, colNum].Value = String.Empty;
                                    }
                                    if (cellValue == FacturasKeyWords.PERIODO.ElementAt(j))
                                    {
                                        worksheet.Cells[rowNum, colNum].Value = String.Empty;
                                    }
                                    if (cellValue == FacturasKeyWords.VALOR.ElementAt(j))
                                    {
                                        worksheet.Cells[rowNum, colNum].Value = String.Empty;
                                    }
                                    if (cellValue == FacturasKeyWords.IVA.ElementAt(j))
                                    {
                                        worksheet.Cells[rowNum, colNum].Value = String.Empty;
                                    }
                                    if (cellValue == FacturasKeyWords.NETO.ElementAt(j))
                                    {
                                        worksheet.Cells[rowNum, colNum].Value = String.Empty;
                                    }
                                }
                            }
                        }

                        //Change Current Operation Description
                        base.UpdateCurrentOperationDescription("Generando archivo PDF");
                        text.Dispatcher.Invoke(delegate
                        {
                            text.Text = CurrentOperationDescription;
                        });

                        xlPackage.SaveAs(new System.IO.FileInfo(@FileLocationXlsx.ToString()));
                        Workbook workbook = new Application().Workbooks.Open(@FileLocationXlsx.ToString());
                        workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, @FileLocationPDF.ToString());
                        ++NumberOfFilesCreated;
                        workbook.Close();
                    } catch (System.InvalidOperationException)
                    {
                        RollBack(FileLocationXlsx.ToString(), FileLocationPDF.ToString());
                        throw;
                    }
                    finally
                    {
                        File.Delete(@FileLocationXlsx.ToString());
                    }
                }
            }
            base.UpdateProgreso(100);
            (sender as BackgroundWorker).ReportProgress(Progress);
            return(true);
        }