Keine Beschreibung

OrderReport.cs 7.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.Data.SQLite;
  11. using System.IO;
  12. using System.Globalization;
  13. namespace BulkPrinting
  14. {
  15. public partial class OrderReport : Form
  16. {
  17. public OrderReport()
  18. {
  19. InitializeComponent();
  20. }
  21. private void RefreshReportGrid()
  22. {
  23. dgvOrderReport.Rows.Clear();
  24. dgvOrderReport.Columns.Clear();
  25. dgvOrderReport.Columns.Add("Reference", "Order Reference");
  26. dgvOrderReport.Columns.Add("UserId", "User ID");
  27. dgvOrderReport.Columns.Add("UserName", "User Name");
  28. dgvOrderReport.Columns.Add("OrderDate", "Order Date");
  29. dgvOrderReport.Columns.Add("Description", "Description");
  30. dgvOrderReport.Columns.Add("OrderCost", "Total Order Cost");
  31. dgvOrderReport.Columns.Add("BalanceAfterOrder", "Balance After Order");
  32. dgvOrderReport.Columns.Add("Cost", "Individual Product Cost");
  33. dgvOrderReport.Columns.Add("OrderedQuantity", "Ordered Quantity");
  34. dgvOrderReport.Columns.Add("DeliveredQuantity", "Delivered Quantity");
  35. string Sql = "Select o.Id,o.InternalReference,o.UserId,o.UserName,o.OrderDate,oi.Description,o.OrderCost,o.BalanceAfterOrder,oi.Cost,b.RequestedQuantity,b.DeliveredQuantity From Orders o LEFT JOIN OrderedItems oi on oi.OrderId = o.Id LEFT JOIN Batch b ON b.InternalReference = o.InternalReference AND b.ProductId = oi.ProductId WHERE o.OrderDate BETWEEN @startdate AND @enddate";
  36. SQLiteCommand Command = new SQLiteCommand(Sql, Globals.DBConnection);
  37. CultureInfo IVC = CultureInfo.InvariantCulture;
  38. Command.Parameters.Add(new SQLiteParameter("@startdate", dtpStartDate.Value.ToString("yyyy-MM-dd 00:00:00", IVC)));
  39. Command.Parameters.Add(new SQLiteParameter("@enddate", dtpEndDate.Value.ToString("yyyy-MM-dd 23:59:59", IVC)));
  40. using (SQLiteDataReader read = Command.ExecuteReader())
  41. {
  42. while (read.Read())
  43. {
  44. dgvOrderReport.Rows.Add(new object[] {
  45. read.GetValue(1).ToString(),
  46. read.GetValue(2).ToString(),
  47. read.GetValue(3).ToString(),
  48. read.GetValue(4).ToString(),
  49. read.GetValue(5).ToString(),
  50. read.GetValue(6).ToString(),
  51. read.GetValue(7).ToString(),
  52. read.GetValue(8).ToString(),
  53. read.GetValue(9).ToString(),
  54. read.GetValue(10).ToString(),
  55. });
  56. }
  57. }
  58. }
  59. private void OrderReport_Load(object sender, EventArgs e)
  60. {
  61. dtpStartDate.Value = DateTime.Now.AddMonths(-3);
  62. }
  63. private void dtpStartDate_ValueChanged(object sender, EventArgs e)
  64. {
  65. RefreshReportGrid();
  66. }
  67. private void dtpEndDate_ValueChanged(object sender, EventArgs e)
  68. {
  69. RefreshReportGrid();
  70. }
  71. private void btnSaveToCSV_Click(object sender, EventArgs e)
  72. {
  73. SaveFileDialog SFD = new SaveFileDialog();
  74. SFD.Filter = "*.csv|*.*";
  75. SFD.FilterIndex = 0;
  76. if (SFD.ShowDialog() == DialogResult.OK)
  77. {
  78. using (StreamWriter OutputStream = new StreamWriter(SFD.OpenFile()))
  79. {
  80. for (int j = 0; j < 10; j++)
  81. {
  82. OutputStream.Write(dgvOrderReport.Columns[j].Name + ",");
  83. }
  84. for (int i = 0; i < dgvOrderReport.RowCount; i++)
  85. {
  86. for (int j = 0; j < 10; j++) {
  87. OutputStream.Write(dgvOrderReport.Rows[i].Cells[j].Value.ToString() + ",");
  88. }
  89. OutputStream.Write("\n");
  90. }
  91. }
  92. this.Close();
  93. }
  94. }
  95. private void btnPrint_Click(object sender, EventArgs e)
  96. {
  97. string Sql = "Select o.Id,o.OrderDate,o.InternalReference,o.UserName,o.OrderCost,o.BalanceAfterOrder,oi.Description,oi.Cost,b.RequestedQuantity,b.DeliveredQuantity From Orders o LEFT JOIN OrderedItems oi on oi.OrderId = o.Id LEFT JOIN Batch b ON b.InternalReference = o.InternalReference AND b.ProductId = oi.ProductId WHERE o.OrderDate BETWEEN @startdate AND @enddate ORDER BY o.Id";
  98. SQLiteCommand Command = new SQLiteCommand(Sql, Globals.DBConnection);
  99. CultureInfo IVC = CultureInfo.InvariantCulture;
  100. Command.Parameters.Add(new SQLiteParameter("@startdate", dtpStartDate.Value.ToString("yyyy-MM-dd 00:00:00", IVC)));
  101. Command.Parameters.Add(new SQLiteParameter("@enddate", dtpEndDate.Value.ToString("yyyy-MM-dd 23:59:59", IVC)));
  102. int CurrentId;
  103. int LastId = -1;
  104. List<OrderList> Orders = new List<OrderList>();
  105. OrderList IndividualOrder = new OrderList();
  106. using (SQLiteDataReader read = Command.ExecuteReader())
  107. {
  108. while (read.Read())
  109. {
  110. CurrentId = int.Parse(read.GetValue(0).ToString());
  111. if (CurrentId != LastId)
  112. {
  113. if (IndividualOrder.OrderReference != null)
  114. {
  115. Orders.Add(IndividualOrder);
  116. }
  117. IndividualOrder = new OrderList();
  118. IndividualOrder.OrderLines = new List<OrderReportLine>();
  119. IndividualOrder.OrderDate = read.GetValue(1).ToString();
  120. IndividualOrder.OrderDate = IndividualOrder.OrderDate.Substring(0, IndividualOrder.OrderDate.IndexOf(" "));
  121. IndividualOrder.OrderReference = read.GetValue(2).ToString();
  122. IndividualOrder.User = read.GetValue(3).ToString();
  123. IndividualOrder.OrderCost = read.GetValue(4).ToString();
  124. IndividualOrder.Balance = read.GetValue(5).ToString();
  125. LastId = CurrentId;
  126. }
  127. OrderReportLine OrderLine = new OrderReportLine();
  128. OrderLine.OrderItem = read.GetValue(6).ToString();
  129. OrderLine.Cost = read.GetValue(7).ToString();
  130. OrderLine.QtyOrdered = read.GetValue(8).ToString();
  131. OrderLine.QtyDelivered = read.GetValue(9).ToString();
  132. IndividualOrder.OrderLines.Add(OrderLine);
  133. }
  134. if (IndividualOrder.OrderReference != null)
  135. {
  136. Orders.Add(IndividualOrder);
  137. }
  138. }
  139. Printer.PrintOrderReport(Orders);
  140. }
  141. private void label1_Click(object sender, EventArgs e)
  142. {
  143. }
  144. }
  145. }