/// <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); }