You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
338 lines
12 KiB
C#
338 lines
12 KiB
C#
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<SalesPaySummary> listPay = new List<SalesPaySummary>();
|
|
|
|
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<SalesPaySummary> 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<SalesPaySummary>(sql).ToList();
|
|
if (listPay == null)
|
|
{
|
|
listPay = new List<SalesPaySummary>();
|
|
}
|
|
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<SalesPaySummary> imtes = new List<SalesPaySummary>();
|
|
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<bool, string> 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;
|
|
}
|
|
/// <summary>
|
|
/// 日期值改变的时候查询
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
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();
|
|
}
|
|
}
|
|
}
|