using DevComponents.DotNetBar; using DevComponents.DotNetBar.Controls; using DevComponents.DotNetBar.SuperGrid; using POS.Language.Language; using POSV.Component; using POSV.Entity.Report; using POSV.Entity.ReportPrint; using POSV.Helper; using POSV.Utils; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace POSV.Report { public partial class PaySummary : BusinessForm { public int orderType = -1; public int incomeFlag = -1; public string workerNo = ""; public PaySummary() { InitializeComponent(); this.controlBox1.Text = LangProxy.ToLang("支付方式汇总"); this.controlBox1.ShowApplicationVersion = false; } List listPay = new List(); protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (this.DesignMode) return; DefaultGridStyle.setDefaultGridStyle(this.payListTable); this.startPicker.Value = DateTime.Parse(Global.Instance.BusinessPlan.StartTimeSimple); this.endPicker.Value = DateTime.Parse(Global.Instance.BusinessPlan.EndTimeSimple); //打开界面默认加载第一个TAB QueryTicket(); } public List getDishList(string workerNo ,int incomeF, int busMode,string startTime, string endTime) { try { using (var db = Global.Instance.OpenDataBase) { StringBuilder sqlBuld = new StringBuilder(); sqlBuld.Append(" select pos_order_pay.no as payTypeNo ,pos_order_pay.name as payTypeName, count(pos_order_pay.id) as payCount, "); sqlBuld.Append(" sum(pos_order_pay.amount) as amount,sum(pos_order_pay.paidAmount) as paidAmount,sum(pos_order_pay.changeAmount) as changeAmount, "); sqlBuld.Append(" sum(pos_order_pay.overAmount) as overAmount,incomeFlag "); sqlBuld.Append(" from pos_order_pay "); sqlBuld.Append(" left join pos_order on pos_order_pay.orderId= pos_order.id "); sqlBuld.Append(" where pos_order.finishDate >= '{0}' and pos_order.finishDate <= '{1}' "); if (busMode >= 0) { sqlBuld.Append(" and pos_order.orderType = " + busMode + " "); } if (incomeF >= 0) { sqlBuld.Append(" and pos_order_pay.incomeFlag = " + incomeF + " "); } if (!"".Equals(workerNo)) { sqlBuld.Append(" and pos_order.workerNo = '" + workerNo + "' "); } sqlBuld.Append(" and pos_order.orderStatus in(2,4) "); sqlBuld.Append(" group by pos_order_pay.no "); sqlBuld.Append(" order by payCount desc"); string sql = string.Format(sqlBuld.ToString(), startTime, endTime); listPay = db.Query(sql).ToList(); if (listPay == null) { listPay = new List(); } decimal sumPayCount = 0; decimal sumAmount = 0.0M; decimal overAmount = 0.0M; foreach (SalesPaySummary salesPaySummary in listPay) { sumPayCount = sumPayCount + salesPaySummary.PayCount; sumAmount = sumAmount + salesPaySummary.Amount; overAmount = overAmount + salesPaySummary.OverAmount; if (salesPaySummary.IncomeFlag==0) { salesPaySummary.Income = "否"; } else { salesPaySummary.Income = "是"; } } foreach (SalesPaySummary salesPaySummary in listPay) { if (sumPayCount > 0) { salesPaySummary.CountScale = string.Format("{0}%", ((salesPaySummary.PayCount / sumPayCount) * 100).ToString("#0.0000")); } else { salesPaySummary.CountScale = "0%"; } if (sumAmount > 0) { salesPaySummary.SumRealMoneyScale = string.Format("{0}%", ((salesPaySummary.Amount / sumAmount) * 100).ToString("#0.0000")); } else { salesPaySummary.SumRealMoneyScale = "0%"; } } SalesPaySummary summary = new SalesPaySummary(); summary.PayTypeNo ="合计"; summary.PayCount = (int)sumPayCount; summary.Amount = sumAmount; summary.OverAmount = overAmount; listPay.Add(summary); } } catch (Exception ex) { LOGGER.Error(ex); } return listPay; } private void OnControlBoxCloseClick(object sender, EventArgs e) { OnCloseTouchClick(sender, e); } private void OnCloseTouchClick(object sender, EventArgs e) { //先关闭父窗体 if (this.Owner != null) { this.Owner.Close(); } //再关闭当前窗体 this.Close(); } private void btn_exit_Click(object sender, EventArgs e) { OnCloseTouchClick(sender, e); } private void btn_time_Click(object sender, EventArgs e) { var obj = sender as ButtonX; var typeStr = obj.Tag as string; var type = (ReportQuickDate)Enum.Parse(typeof(ReportQuickDate), typeStr); var res = DateTimeUtils.CalculateBusinessPlanDate(type, this.startPicker.Value, this.endPicker.Value); this.startPicker.Value = res.Item1; this.endPicker.Value = res.Item2; QueryTicket(); } private void btn_query_Click(object sender, EventArgs e) { QueryTicket(); } private void tab_onclick(object sender, EventArgs e) { var obj = sender as SuperTabItem; var name = obj.Tag as string; switch (name) { case "superTabItem1"://支付方式汇总 QueryTicket(); break; } } private void OnGridPostRenderRow(object sender, GridPostRenderRowEventArgs e) { var row = e.GridRow as GridRow; row.CellStyles.Default.Background.Color1 = Color.AliceBlue; } private void OnBind(object sender, GridDataBindingCompleteEventArgs e) { var panel = e.GridPanel; foreach (var r in panel.Rows) { var row = r as GridRow; var payTypeNo = row.Cells["payTypeNo"].Value.ToString(); if ("合计".Equals(payTypeNo)) { row.CellStyles.Default.Background.Color1 = Color.AliceBlue; row.CellStyles.Default.Font = new Font("微软雅黑", 14.00f, FontStyle.Bold, GraphicsUnit.Pixel); } } } private void btn_print_Click(object sender, EventArgs e) { PrintSalesPaySummary printSalesPaySummary = new PrintSalesPaySummary(); printSalesPaySummary.StoreNo = Global.Instance.Worker.StoreInfo.No; printSalesPaySummary.StoreName = Global.Instance.Worker.StoreInfo.PrintName; printSalesPaySummary.WorkerNo = workerNo; printSalesPaySummary.WorkerName = ""; printSalesPaySummary.PrintTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); printSalesPaySummary.StartTime = this.startPicker.Value.ToString("yyyy-MM-dd HH:mm:ss"); printSalesPaySummary.EndTime = this.endPicker.Value.ToString("yyyy-MM-dd HH:mm:ss"); printSalesPaySummary.TotalCount = string.Format("{0}", 0); printSalesPaySummary.TotalMoney = string.Format("{0}", 0.00M); List imtes = new List(); foreach (SalesPaySummary pay in listPay) { if (!"合计".Equals(pay.PayTypeNo)) { imtes.Add(pay); } else { printSalesPaySummary.TotalCount = string.Format("{0}", pay.PayCount); printSalesPaySummary.TotalMoney = string.Format("{0}", pay.Amount); } } printSalesPaySummary.Items = imtes; this.ShowToastNotify(this, "开始打印"); //构建收银小票模版参数 var vars = ReportHelper.BuilderPayVariable(printSalesPaySummary); Tuple result = ReportHelper.PrinterTicket("收银方式汇总", vars, true, false); this.ShowToastNotify(this, string.Format("{0}", result.Item2)); } private void OnControlBoxMinClick(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; } /// /// 日期值改变的时候查询 /// /// /// private void onDateChange(object sender, EventArgs e) { //QueryTicket(); } public void QueryTicket() { workerNo = StringUtils.GetString(txtWorkNo.Text); if (!"".Equals(workerNo) && workerNo.Length < 5) { int length = 5 - workerNo.Length; for (int i = 0; i < length; i++) { workerNo = "0" + workerNo; } } listPay = getDishList(workerNo, incomeFlag , orderType,this.startPicker.Value.ToString("yyyy-MM-dd HH:mm:ss"), this.endPicker.Value.ToString("yyyy-MM-dd HH:mm:ss")); payListTable.PrimaryGrid.DataSource = listPay; } private void cb_change_click(object sender, EventArgs e) { var obj = sender as CheckBoxX; var indexT = obj.Tag as string; if ("全部".Equals(indexT)) { orderType = -1; } if ("堂食".Equals(indexT)) { orderType = 0; } if ("外带".Equals(indexT)) { orderType = 1; } if ("电话外卖".Equals(indexT)) { orderType = 2; } if ("餐桌".Equals(indexT)) { orderType = 3; } if ("美团外卖".Equals(indexT)) { orderType = 4; } if ("饿了么".Equals(indexT)) { orderType = 5; } if ("百度外卖".Equals(indexT)) { orderType = 6; } if ("微信点餐".Equals(indexT)) { orderType = 7; } QueryTicket(); } private void CbIncomeChangeClick(object sender, EventArgs e) { var obj = sender as CheckBoxX; var indexT = obj.Tag as string; if ("全部".Equals(indexT)) { incomeFlag = -1; } if ("实收".Equals(indexT)) { incomeFlag = 1; } if ("虚收".Equals(indexT)) { incomeFlag = 0; } QueryTicket(); } } }