Sin descripción

OrderReport.cs 7.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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. CultureInfo IVC = CultureInfo.InvariantCulture;
  37. using (var Command = Globals.DB.CreateCommand(Sql,
  38. new SQLiteParameter("@startdate", dtpStartDate.Value.ToString("yyyy-MM-dd 00:00:00", IVC)),
  39. new SQLiteParameter("@enddate", dtpEndDate.Value.ToString("yyyy-MM-dd 23:59:59", IVC))))
  40. {
  41. using (SQLiteDataReader read = Command.ExecuteReader())
  42. {
  43. while (read.Read())
  44. {
  45. dgvOrderReport.Rows.Add(new object[] {
  46. read.GetValue(1).ToString(),
  47. read.GetValue(2).ToString(),
  48. read.GetValue(3).ToString(),
  49. read.GetValue(4).ToString(),
  50. read.GetValue(5).ToString(),
  51. read.GetValue(6).ToString(),
  52. read.GetValue(7).ToString(),
  53. read.GetValue(8).ToString(),
  54. read.GetValue(9).ToString(),
  55. read.GetValue(10).ToString(),
  56. });
  57. }
  58. }
  59. }
  60. }
  61. private void OrderReport_Load(object sender, EventArgs e)
  62. {
  63. dtpStartDate.Value = DateTime.Now.AddMonths(-3);
  64. }
  65. private void dtpStartDate_ValueChanged(object sender, EventArgs e)
  66. {
  67. RefreshReportGrid();
  68. }
  69. private void dtpEndDate_ValueChanged(object sender, EventArgs e)
  70. {
  71. RefreshReportGrid();
  72. }
  73. private void btnSaveToCSV_Click(object sender, EventArgs e)
  74. {
  75. SaveFileDialog SFD = new SaveFileDialog();
  76. SFD.Filter = "*.csv|*.*";
  77. SFD.FilterIndex = 0;
  78. if (SFD.ShowDialog() == DialogResult.OK)
  79. {
  80. using (StreamWriter OutputStream = new StreamWriter(SFD.OpenFile()))
  81. {
  82. for (int j = 0; j < 10; j++)
  83. {
  84. OutputStream.Write(dgvOrderReport.Columns[j].Name + ",");
  85. }
  86. for (int i = 0; i < dgvOrderReport.RowCount; i++)
  87. {
  88. for (int j = 0; j < 10; j++) {
  89. OutputStream.Write(dgvOrderReport.Rows[i].Cells[j].Value.ToString() + ",");
  90. }
  91. OutputStream.Write("\n");
  92. }
  93. }
  94. this.Close();
  95. }
  96. }
  97. private void btnPrint_Click(object sender, EventArgs e)
  98. {
  99. 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";
  100. CultureInfo IVC = CultureInfo.InvariantCulture;
  101. using (var Command = Globals.DB.CreateCommand(Sql,
  102. new SQLiteParameter("@startdate", dtpStartDate.Value.ToString("yyyy-MM-dd 00:00:00", IVC)),
  103. new SQLiteParameter("@enddate", dtpEndDate.Value.ToString("yyyy-MM-dd 23:59:59", IVC))))
  104. {
  105. int CurrentId;
  106. int LastId = -1;
  107. List<OrderList> Orders = new List<OrderList>();
  108. OrderList IndividualOrder = new OrderList();
  109. using (SQLiteDataReader read = Command.ExecuteReader())
  110. {
  111. while (read.Read())
  112. {
  113. CurrentId = int.Parse(read.GetValue(0).ToString());
  114. if (CurrentId != LastId)
  115. {
  116. if (IndividualOrder.OrderReference != null)
  117. {
  118. Orders.Add(IndividualOrder);
  119. }
  120. IndividualOrder = new OrderList();
  121. IndividualOrder.OrderLines = new List<OrderReportLine>();
  122. IndividualOrder.OrderDate = read.GetValue(1).ToString();
  123. IndividualOrder.OrderDate = IndividualOrder.OrderDate.Substring(0, IndividualOrder.OrderDate.IndexOf(" "));
  124. IndividualOrder.OrderReference = read.GetValue(2).ToString();
  125. IndividualOrder.User = read.GetValue(3).ToString();
  126. IndividualOrder.OrderCost = read.GetValue(4).ToString();
  127. IndividualOrder.Balance = read.GetValue(5).ToString();
  128. LastId = CurrentId;
  129. }
  130. OrderReportLine OrderLine = new OrderReportLine();
  131. OrderLine.OrderItem = read.GetValue(6).ToString();
  132. OrderLine.Cost = read.GetValue(7).ToString();
  133. OrderLine.QtyOrdered = read.GetValue(8).ToString();
  134. OrderLine.QtyDelivered = read.GetValue(9).ToString();
  135. IndividualOrder.OrderLines.Add(OrderLine);
  136. }
  137. if (IndividualOrder.OrderReference != null)
  138. {
  139. Orders.Add(IndividualOrder);
  140. }
  141. }
  142. Printer.PrintOrderReport(Orders);
  143. }
  144. }
  145. private void label1_Click(object sender, EventArgs e)
  146. {
  147. }
  148. }
  149. }