static void Main(string[] args) { while (true) { StringBuilder sb = new StringBuilder(); Console.WriteLine("Start Sleep 10 seconds"); Thread.Sleep(10000); try { Console.WriteLine("PrintReceptSoapClient start"); POS58Listen.PrintService.OrderDataSoapClient pr = new POS58Listen.PrintService.OrderDataSoapClient(); Console.WriteLine("PrintReceptSoapClient end"); DataSet xx = pr.getPrintOrderData(); dt = xx.Tables[0]; if (dt.Rows.Count > 0) { PrintDocument pd = new System.Drawing.Printing.PrintDocument(); pd.PrintPage += printPageEvent; pd.Print(); y = 0; } } catch (Exception e) { Console.WriteLine(e.Message.ToString()); } } }
private static void printPageEvent(object sender, System.Drawing.Printing.PrintPageEventArgs e) { string sOrderNo = string.Empty; string sItemName = string.Empty; string sItemQty = string.Empty; string sPrice = string.Empty; string sTotal = string.Empty; string iTotal = string.Empty; string sEname = string.Empty; string sDesc = string.Empty; PrintDocument pd = new System.Drawing.Printing.PrintDocument(); Graphics g = e.Graphics; SolidBrush pb = new SolidBrush(Color.Black); Single left = pd.DefaultPageSettings.Margins.Left - 10; Single top = pd.DefaultPageSettings.Margins.Top - 20; DataTable dist_dt = dt.DefaultView.ToTable(true, new string[] { "EName", "OrderNo", "Total", "ODESC" }); foreach (DataRow dr in dist_dt.Rows) { sOrderNo = dr["OrderNo"].ToString(); sTotal = dr["Total"].ToString(); sEname = dr["EName"].ToString(); sDesc = dr["ODESC"].ToString(); DataRow[] result = dt.Select("OrderNo='" + sOrderNo + "'"); AddLine(ref g, "------------------------"); AddLine(ref g, "訂購人: " + sEname); AddLine(ref g, "訂單編號: " + sOrderNo); AddLine(ref g, "訂單金額: " + sTotal); AddLine(ref g, "訂單明細:"); foreach (DataRow dr2 in result) { sItemName = dr2["Item"].ToString(); sItemQty = dr2["ItemQty"].ToString(); sPrice = dr2["DPrice"].ToString(); iTotal = dr2["iTotal"].ToString(); AddLine(ref g, sItemName + " " + sPrice + " x " + sItemQty + " = " + iTotal); } AddLine(ref g, "備註: " + sDesc); Console.WriteLine("PrintReceptSoapClient start"); POS58Listen.PrintService.OrderDataSoapClient pr = new POS58Listen.PrintService.OrderDataSoapClient(); Console.WriteLine("PrintReceptSoapClient end"); pr.UpdatePrintFlag(sOrderNo); } Console.WriteLine("Finish this stage"); }