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.

1136 lines
59 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using POSV.Entity;
using POSV.HandOver;
using POSV.Helper;
using POSV.MessageEvent;
using POSV.ShoppingCart;
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.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace POSV.Shift
{
public partial class FastShitBlindForm : BusinessForm
{
HandOverTicket handOverTicket = null;
//总长度
private const int _totalLength = 25;
//左列长度
private const int _leftLength = 10;
//右列长度
private const int _rightLength = _totalLength - _leftLength;
//默认左边距
private const int _defaultPadLeft = 2;
public FastShitBlindForm()
{
InitializeComponent();
LOGGER.Info("打开交班界面");
}
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
if (this.DesignMode) return;
Task.Factory.StartNew(() =>
{
handOverTicket = loadData();
//汇总支付方式
List<HandOverDetail> detail = getHandOverDetail();
foreach (HandOverDetail handOverDetail in detail)
{
handOverDetail.HandsMoney = handOverDetail.SumMoney;
}
handOverTicket.Detail = detail;
//汇总菜品类别销售
List<HandOverProduct> ProductList = loadHandOverProduct();
handOverTicket.Product = ProductList;
//汇总班次优惠金额
List<HandOverInfo> InfoList = loadHandOverInfo();
handOverTicket.Info = InfoList;
//汇总班次支付方式明细
List<HandOverPay> payList = loadHandOverPay();
handOverTicket.Pay = payList;
//汇总班次菜品分类
List<HandOverProductType> productTypeList = loadHandOverProductType();
handOverTicket.ProductType = productTypeList;
//汇总班次营业模式数据
List<HandOverSaleMode> modeList = loadHandOverSaleMode();
handOverTicket.Mode = modeList;
}).ContinueWith(task =>
{
this.Invoke(new Action(() =>
{
//组装界面数据
workerNoLable.Text = handOverTicket.WorkNo;
workerNameLable.Text = handOverTicket.WorkName;
label_startTime.Text = handOverTicket.DatetimeBegin;
label_endTime.Text = handOverTicket.DatetimeEnd;
BuildContent();
}));
});
}
private void BuildContent()
{
var plan = Global.Instance.BusinessPlanLog;
//主单信息
StringBuilder bs = new StringBuilder();
bs.AppendLine(BuildTwoCText(string.Format("总人数:"), _leftLength, string.Format("{0}人", handOverTicket.PeopleCount), _rightLength));
bs.AppendLine(BuildTwoCText(string.Format("合计单数:"), _leftLength, string.Format("{0}单", handOverTicket.TicketCount), _rightLength));
bs.AppendLine(BuildTwoCText(string.Format("合计金额:"), _leftLength, string.Format("{0}元", handOverTicket.Amount), _rightLength));
bs.AppendLine(BuildTwoCText(string.Format("成交单数:"), _leftLength, string.Format("{0}单", handOverTicket.DealTicketCount), _rightLength));
bs.AppendLine(BuildTwoCText(string.Format("成交金额:"), _leftLength, string.Format("{0}元", handOverTicket.DealAmount), _rightLength));
bs.AppendLine(BuildTwoCText(string.Format("退款单数:"), _leftLength, string.Format("{0}单", handOverTicket.BackTicketCount), _rightLength));
bs.AppendLine(BuildTwoCText(string.Format("退款金额:"), _leftLength, string.Format("{0}元", handOverTicket.BackAmount), _rightLength));
bs.AppendLine(BuildTwoCText(string.Format("销售优惠:"), _leftLength, string.Format("{0}元", handOverTicket.DiscountMoney), _rightLength));
bs.AppendLine(BuildTwoCText(string.Format("销售应收:"), _leftLength, string.Format("{0}元", handOverTicket.Receivable), _rightLength));
bs.AppendLine(BuildTwoCText(string.Format("抹零金额:"), _leftLength, string.Format("{0}元", handOverTicket.Maling), _rightLength));
bs.AppendLine("-------------------------");
bs.AppendLine(BuildTwoCText(string.Format("实收金额:"), _leftLength, string.Format("{0}元", handOverTicket.Paid), _rightLength));
this.richTextBoxEx1.Text = bs.ToString();
List<HandOverDetail> payList = handOverTicket.Detail;
//支付信息
bs = new StringBuilder();
foreach (var typeData in payList) {
bs.AppendLine(BuildTwoCText(string.Format("{0}", typeData.PayModeName), _leftLength, string.Format("{0}元", typeData.Money), _rightLength));
}
bs.AppendLine("-------------------------");
bs.AppendLine(BuildTwoCText(string.Format("合计:"), _leftLength, string.Format("{0}元", handOverTicket.Paid), _rightLength));
this.richTextBoxEx2.Text = bs.ToString();
//卡务信息
bs = new StringBuilder();
foreach (var typeData in payList)
{
bs.AppendLine(BuildTwoCText(string.Format("{0}", typeData.PayModeName), _leftLength, string.Format("{0}元", typeData.CardMoney), _rightLength));
}
bs.AppendLine("-------------------------");
bs.AppendLine(BuildTwoCText(string.Format("充值笔数:"), _leftLength, string.Format("{0}笔", handOverTicket.CardCount), _rightLength));
bs.AppendLine(BuildTwoCText(string.Format("充值金额:"), _leftLength, string.Format("{0}元", handOverTicket.CardRealMoney), _rightLength));
bs.AppendLine("-------------------------");
bs.AppendLine(BuildTwoCText(string.Format("退卡笔数:"), _leftLength, string.Format("{0}笔", handOverTicket.CardRefundCount), _rightLength));
bs.AppendLine(BuildTwoCText(string.Format("退卡金额:"), _leftLength, string.Format("{0}元", handOverTicket.CardRefundMoney), _rightLength));
this.richTextBoxEx3.Text = bs.ToString();
}
private string BuildOneRText(string text, int paddingLeft)
{
return text + "".PadLeft(paddingLeft, ' ');
}
private string BuildTwoCText(string leftStr, int leftLength, string rightStr, int rightLength)
{
StringBuilder result = new StringBuilder();
leftStr = leftStr ?? "";
rightStr = rightStr ?? "";
var tempLeftStr = leftStr;
var tempRightStr = rightStr;
//左侧字符真实长度
var leftStrLen = GetPrintStringLength(tempLeftStr);
bool leftNewLine = false;
if (leftStrLen > leftLength)
{
//左侧已经超出,独占一行
leftNewLine = true;
}
else
{
//填充空格
var leftDiff = leftLength - leftStrLen;
tempLeftStr = "".PadLeft(leftDiff, ' ') + tempLeftStr;
}
//右侧字符真实长度
var rightStrLen = GetPrintStringLength(tempRightStr);
if (rightStrLen > rightLength)
{
//右侧已超出,独占一行
var totalLength = leftLength + rightLength;
if (rightStrLen > totalLength)
{
//从头开始
}
else
{
//填充空格
var rightDiff = totalLength - rightStrLen;
tempRightStr = "".PadLeft(rightDiff, ' ') + tempRightStr;
}
}
else
{
//填充空格
var rightDiff = rightLength - rightStrLen;
tempRightStr = "".PadLeft(rightDiff, ' ') + tempRightStr;
}
result.Append(tempLeftStr);
if (leftNewLine)
{
result.Append(Environment.NewLine);
}
result.Append(tempRightStr);
return result.ToString();
}
private static int GetPrintStringLength(string str)
{
int valueLength = 0;
string chinese = @"^[\u0391-\uFFE5]+$";
// 获取字段值的长度如果含中文字符则每个中文字符长度为2否则为1
for (int i = 0; i < str.Length; i++)
{
// 获取一个字符
string temp = str[i].ToString();
// 判断是否为中文字符
if (Regex.IsMatch(temp, chinese))
{
valueLength += 2;
}
else
{
valueLength += 1;
}
}
// 进位取整
return valueLength;
}
/// <summary>
/// 查询未交单外送单数量
/// </summary>
/// <returns></returns>
private int GetWsUnFinishOrder()
{
int result = 0;
try
{
List<OrderDelivery> deliveryList = null;
using (var db = Global.Instance.OpenDataBase)
{
deliveryList = db.Fetch<OrderDelivery>(@"where status != @0 order by createDate", 2);
}
if (deliveryList.Count > 0)
{
result = deliveryList.Count;
}
}
catch (Exception ex)
{
LOGGER.Error(ex, "交班检查外送未交单发生异常");
}
return result;
}
public string getUnShiftWorker()
{
string unShiftWorker = "";
try
{
using (var db = Global.Instance.OpenDataBase)
{
StringBuilder sqlBuld = new StringBuilder();
sqlBuld.Append(" SELECT workerNo,workerName from ");
sqlBuld.Append(" pos_business_plan_log ");
sqlBuld.Append(" WHERE status = 0 and workerNo<> '{0}' and storeId ='{1}'");
string sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.StoreId);
List<BusinessPlanLog> businessPlanLogList = db.Query<BusinessPlanLog>(sql).ToList();
foreach (BusinessPlanLog entity in businessPlanLogList)
{
unShiftWorker = unShiftWorker + entity.WorkerNo + "(" + entity.WorkerName + ")" + ",";
}
if (unShiftWorker != null && !"".Equals(unShiftWorker))
{
unShiftWorker = unShiftWorker.Substring(0, unShiftWorker.Length - 1);
}
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
return unShiftWorker;
}
private void OnCloseTouchClick(object sender, EventArgs e)
{
Global.isHandOver = false;
//先关闭父窗体
if (this.Owner != null)
{
this.Owner.Close();
}
//再关闭当前窗体
this.Close();
}
private void ButtonCancel_Click(object sender, EventArgs e)
{
OnCloseTouchClick(sender, e);
}
public List<HandOverPay> loadHandOverPay()
{
List<HandOverPay> list = new List<HandOverPay>();
try
{
using (var db = Global.Instance.OpenDataBase)
{
//第一步汇总各营业模式下的支付方式总金额
StringBuilder sqlBuld = new StringBuilder();
sqlBuld.Append(" select count(a.id) as count,round(sum(a.amount),2) as money,a.no as payModeNo,a.name as payModeName,b.orderType as busMode from pos_order_pay a ");
sqlBuld.Append(" left join pos_order b on a.orderId = b.id ");
sqlBuld.Append(" where b.workerNo = '{0}' ");
sqlBuld.Append(" and b.shiftNo = '{1}' ");
sqlBuld.Append(" and b.storeId = '{2}' ");
sqlBuld.Append(" and b.orderStatus in (0, 2, 4 ) ");
sqlBuld.Append(" GROUP BY a.no , b.orderType ");
string sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
List<HandOverPay> handOverPayList = db.Query<HandOverPay>(sql).ToList();
foreach (HandOverPay handOverPay in handOverPayList)
{
handOverPay.BusType = 0;//销售
list.Add(handOverPay);
}
//第二步汇总充值各支付下的总金额
sqlBuld = new StringBuilder();
sqlBuld.Append(" select a.payNo as payModeNo,a.payName as payModeName,count(a.payNo) as count,round(sum(a.amount),2) AS money from pos_card_recharge_pay a ");
sqlBuld.Append(" left join pos_card_recharge b on a.rechargeId = b.id ");
sqlBuld.Append(" where b.workerNo = '{0}' ");
sqlBuld.Append(" and b.planNo = '{1}' and b.storeId = '{2}' ");
sqlBuld.Append(" and rechargeStatus = 2 ");
sqlBuld.Append(" group by a.payNo ");
sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
List<HandOverPay> handOverRechargePayList = db.Query<HandOverPay>(sql).ToList();
foreach (HandOverPay handOverPay in handOverRechargePayList)
{
handOverPay.BusMode = -1;
handOverPay.BusType = 1;//充值
list.Add(handOverPay);
}
//第三步汇总礼品卡销售各支付下的总金额
sqlBuld = new StringBuilder();
sqlBuld.Append(" select a.payNo as payModeNo,a.payName as payModeName,count(a.payNo) as count,round(sum(a.amount),2) AS money from pos_card_sale_pay a ");
sqlBuld.Append(" left join pos_card_sale b on a.ticketId = b.id ");
sqlBuld.Append(" where b.workerNo = '{0}' ");
sqlBuld.Append(" and b.shiftNo = '{1}' and b.storeId = '{2}' ");
sqlBuld.Append(" group by a.payNo ");
sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
List<HandOverPay> handOverSalePayList = db.Query<HandOverPay>(sql).ToList();
foreach (HandOverPay handOverPay in handOverSalePayList)
{
handOverPay.BusMode = -1;
handOverPay.BusType = 1;//充值
list.Add(handOverPay);
}
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
return list;
}
public List<HandOverProduct> loadHandOverProduct()
{
List<HandOverProduct> handOverProductList = null;
List<HandOverProduct> list = null;
try
{
using (var db = Global.Instance.OpenDataBase)
{
StringBuilder sqlBuld = new StringBuilder();
sqlBuld.Append(" SELECT a.typeId AS typeId, ");
sqlBuld.Append(" ifnull(a.typeName,'') AS typeName, ifnull(a.productName,'') AS productName,a.specName as specName, ");
sqlBuld.Append(" a.productNo AS productNo,round(SUM(a.quantity - a.rquantity),2) AS count,");
sqlBuld.Append(" round(sum(case when a.isSuit = 3 then a.quantity else 0 end), 2) as suitQuantity,");
sqlBuld.Append(" round(sum(case when a.isSuit != 3 then a.totalReceivableAmount else 0 end),2) as amount ");
sqlBuld.Append(" FROM pos_order_item a ");
sqlBuld.Append(" left join pos_order b on a.orderId = b.id ");
sqlBuld.Append(" WHERE b.workerNo = '{0}' ");
sqlBuld.Append(" and b.shiftNo = '{1}' ");
sqlBuld.Append(" and b.storeId = '{2}' ");
sqlBuld.Append(" and b.orderStatus in (0, 2, 4) ");
sqlBuld.Append(" GROUP BY a.productId , a.specId");
sqlBuld.Append(" ORDER BY a.typeId,a.productNo ");
string sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
handOverProductList = db.Query<HandOverProduct>(sql).ToList();
string seriesId = "";
string seriesName = "";
Dictionary<string, Object> seriesMap = new Dictionary<string, Object>();
Dictionary<string, Object> typeMap = new Dictionary<string, Object>();
decimal count = 0.00M;
decimal suitQuantity = 0.00M;
decimal amount = 0.00M;
decimal sumCount = 0.00M;
decimal sumSuitQuantity = 0.00M;
decimal sumAmount = 0.00M;
int i = 0;
List<Dictionary<string, Object>> result = new List<Dictionary<string, Object>>();
int listLength = handOverProductList.Count;
foreach (HandOverProduct product in handOverProductList)
{
string typeId = product.TypeId;
if (!seriesId.Equals(typeId))
{
// 分类改变的时候把分类加入列表
if (i != 0)
{
seriesMap.Add("type", 1);
seriesMap.Add("name", seriesName);
seriesMap.Add("count", count);
seriesMap.Add("suitQuantity", suitQuantity);
seriesMap.Add("amount", amount);
result.Add(seriesMap);
//分类改变时,清除缓存
typeMap = new Dictionary<string, Object>();
}
seriesMap = new Dictionary<string, Object>();
count = 0.00M;
suitQuantity = 0.00M;
amount = 0.00M;
seriesId = typeId;
seriesName = product.TypeName;
}
count += product.Count;
suitQuantity += product.SuitQuantity;
amount += product.Amount;
sumCount += product.Count;
sumSuitQuantity += product.SuitQuantity;
sumAmount += product.Amount;
//开始先加入分类名称
if (!typeMap.ContainsKey("name") || !typeMap["name"].Equals(product.TypeName))
{
typeMap.Add("type", 3);
typeMap.Add("name", product.TypeName);
typeMap.Add("count", "");
typeMap.Add("suitQuantity", "");
typeMap.Add("amount", "");
result.Add(typeMap);
}
// 菜品加入列表
Dictionary<string, Object> dishMap = new Dictionary<string, Object>();
dishMap.Add("type", 0);
if (product.SpecName != null && !"".Equals(product.SpecName))
{
dishMap.Add("name", product.ProductName + "(" + product.SpecName + ")");
}
else
{
dishMap.Add("name", product.ProductName);
}
dishMap.Add("count", product.Count);
dishMap.Add("suitQuantity", product.SuitQuantity);
dishMap.Add("amount", product.Amount);
result.Add(dishMap);
i = i + 1;
if (i == listLength)
{
seriesMap.Add("type", 1);
seriesMap.Add("name", seriesName);
seriesMap.Add("count", count);
seriesMap.Add("suitQuantity", suitQuantity);
seriesMap.Add("amount", amount);
result.Add(seriesMap);
//分类改变时,清除缓存
typeMap = new Dictionary<string, Object>();
}
}
Dictionary<string, Object> sumMap = new Dictionary<string, Object>();
sumMap.Add("name", "销售");
sumMap.Add("type", 2);
sumMap.Add("count", sumCount);
sumMap.Add("suitQuantity", sumSuitQuantity);
sumMap.Add("amount", sumAmount);
result.Add(sumMap);
list = new List<HandOverProduct>();
foreach (Dictionary<string, Object> map in result)
{
HandOverProduct entity = new HandOverProduct();
entity.Type = StringUtils.GetInt(map["type"]);
entity.Name = StringUtils.GetString(map["name"]);
entity.Count = StringUtils.GetDecimal(map["count"]);
entity.SuitQuantity = StringUtils.GetDecimal(map["suitQuantity"]);
entity.Amount = StringUtils.GetDecimal(map["amount"]);
list.Add(entity);
}
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
return list;
}
/// <summary>
/// 汇总各营业模式的次数和金额
/// </summary>
/// <returns></returns>
public List<HandOverSaleMode> loadHandOverSaleMode()
{
List<HandOverSaleMode> list = null;
try
{
using (var db = Global.Instance.OpenDataBase)
{
StringBuilder sqlBuld = new StringBuilder();
sqlBuld.Append(" select orderType ,count(id) as count,round(sum(receivableAmount),2) as amount from pos_order ");
sqlBuld.Append(" where workerNo = '{0}' ");
sqlBuld.Append(" and shiftNo = '{1}' ");
sqlBuld.Append(" and storeId = '{2}' ");
sqlBuld.Append(" and orderStatus in (0, 2, 4) ");
sqlBuld.Append(" GROUP BY orderType ");
string sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
list = db.Query<HandOverSaleMode>(sql).ToList();
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
return list;
}
/// <summary>
/// 获取交班优惠
/// </summary>
/// <returns></returns>
public List<HandOverInfo> loadHandOverInfo()
{
List<HandOverInfo> list = null;
try
{
using (var db = Global.Instance.OpenDataBase)
{
StringBuilder sqlBuld = new StringBuilder();
sqlBuld.Append(" select a.promotionType,count(a.id) as count,round(sum(a.discountAmount),2) as amount from pos_order_item_promotion a ");
sqlBuld.Append(" left join pos_order b on a.tradeNo = b.tradeNo ");
sqlBuld.Append(" where a.promotionType<> '50' ");
sqlBuld.Append(" and b.workerNo = '{0}' ");
sqlBuld.Append(" and b.shiftNo = '{1}' ");
sqlBuld.Append(" and b.storeId = '{2}' ");
sqlBuld.Append(" and b.orderStatus in (0, 2, 4) ");
sqlBuld.Append(" GROUP BY a.promotionType ");
string sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
list = db.Query<HandOverInfo>(sql).ToList();
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
return list;
}
//汇总销售分类
public List<HandOverProductType> loadHandOverProductType()
{
List<HandOverProductType> list = null;
try
{
using (var db = Global.Instance.OpenDataBase)
{
StringBuilder sqlBuld = new StringBuilder();
sqlBuld.Append(" select a.typeId AS typeId,a.typeName AS typeName,round(SUM(a.quantity - a.rquantity),2) AS count, ");
sqlBuld.Append(" round(SUM(a.totalReceivableAmount),2) AS amount from pos_order_item a ");
sqlBuld.Append(" left join pos_order b on a.tradeNo = b.tradeNo ");
sqlBuld.Append(" where b.workerNo = '{0}' ");
sqlBuld.Append(" and b.shiftNo = '{1}' ");
sqlBuld.Append(" and b.storeId = '{2}' ");
sqlBuld.Append(" and a.isSuit in (1, 2) ");
sqlBuld.Append(" and b.orderStatus in (0, 2, 4) ");
sqlBuld.Append(" GROUP BY a.typeId ");
sqlBuld.Append(" ORDER BY a.typeId");
string sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
list = db.Query<HandOverProductType>(sql).ToList();
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
return list;
}
public HandOverTicket loadData()
{
HandOverTicket handOverTicket = null;
try
{
using (var db = Global.Instance.OpenDataBase)
{
StringBuilder sqlBuld = new StringBuilder();
// 第一步汇总主单数据
sqlBuld.Append(" select round(sum(people),2) as peopleCount, ");
sqlBuld.Append(" round(sum(case when orderStatus IN (0,2,4) then 1 else 0 end),2) as ticketCount, ");
sqlBuld.Append(" round(sum(case when orderStatus IN (0,2,4) then amount else 0 end),2) as amount, ");
sqlBuld.Append(" round(sum(case when orderStatus =4 then 1 else 0 end),2) as dealTicketCount , ");
sqlBuld.Append(" round(sum(case when orderStatus =4 then amount else 0 end),2) as dealAmount , ");
sqlBuld.Append(" round(sum(case when orderStatus = 2 then 1 else 0 end),2) as backTicketCount, ");
sqlBuld.Append(" round(sum(case when orderStatus = 2 then amount else 0 end),2) as backAmount, ");
sqlBuld.Append(" round(sum(case when orderStatus IN (0,2,4) then discountAmount else 0 end),2) as discountMoney, ");
sqlBuld.Append(" round(sum(case when orderStatus IN (0,2,4) then receivableAmount else 0 end),2) as receivable, ");
sqlBuld.Append(" round(sum(case when orderStatus IN (0,2,4) then malingAmount else 0 end),2) as maling ");
sqlBuld.Append(" from pos_order where ");
sqlBuld.Append(" workerNo = '{0}' and shiftNo = '{1}' ");
sqlBuld.Append(" and storeId = '{2}' ");
string sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
handOverTicket = db.FirstOrDefault<HandOverTicket>(sql);
if (handOverTicket == null)
{
handOverTicket = new HandOverTicket();
handOverTicket.PeopleCount = 0;
handOverTicket.TicketCount = 0;
handOverTicket.Amount = 0.00M;
handOverTicket.DealTicketCount = 0;
handOverTicket.DealAmount = 0.00M;
handOverTicket.BackTicketCount = 0;
handOverTicket.BackAmount = 0.00M;
handOverTicket.DiscountMoney = 0.00M;
handOverTicket.Receivable = 0.00M;
handOverTicket.Maling = 0.00M;
}
handOverTicket.TenantId = Global.Instance.BusinessPlanLog.TenantId;
handOverTicket.WorkId = Global.Instance.BusinessPlanLog.WorkerId;
handOverTicket.WorkNo = Global.Instance.BusinessPlanLog.WorkerNo;
handOverTicket.WorkName = Global.Instance.BusinessPlanLog.WorkerName;
handOverTicket.ShiftName = Global.Instance.BusinessPlanLog.Name;
handOverTicket.ShiftNo = Global.Instance.BusinessPlanLog.No;
handOverTicket.StoreId = Global.Instance.BusinessPlanLog.StoreId;
handOverTicket.StoreNo = Global.Instance.BusinessPlanLog.StoreNo;
handOverTicket.StoreName = Global.Instance.Authc.StoreName;
handOverTicket.AcceptWorkerNo = Global.Instance.BusinessPlanLog.WorkerNo;
handOverTicket.DatetimeBegin = Global.Instance.BusinessPlanLog.LoginTime;
handOverTicket.DatetimeEnd = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
handOverTicket.DatetimeShift = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
handOverTicket.PosNo = Global.Instance.Authc.PosNo;
handOverTicket.DeviceIp = DeviceUtils.Instance.IPAddress;
handOverTicket.DeviceMac = DeviceUtils.Instance.MacAddress;
handOverTicket.DeviceName = DeviceUtils.Instance.ComputerName;
// 第1.5部汇总电子券金额
sqlBuld = new StringBuilder();
sqlBuld.Append(" select sum(a.discountAmount) as couponDiscountMoney ");
sqlBuld.Append(" from pos_order_item_promotion a ");
sqlBuld.Append(" left join pos_order b on a.orderId = b.id ");
sqlBuld.Append(" where b.workerNo = '{0}' ");
sqlBuld.Append(" and b.shiftNo = '{1}' ");
sqlBuld.Append(" and b.storeId = '{2}' ");
sqlBuld.Append(" and b.orderStatus in (0, 2, 4) ");
sqlBuld.Append(" and a.promotionType in(80, 81, 82) ");
sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
HandOverTicket storeDiscount = db.FirstOrDefault<HandOverTicket>(sql);
if (storeDiscount == null)
{
handOverTicket.CouponDiscountMoney = 0;
handOverTicket.OtherDiscountMoney = handOverTicket.DiscountMoney;
}
else
{
handOverTicket.CouponDiscountMoney = storeDiscount.CouponDiscountMoney;
handOverTicket.OtherDiscountMoney = handOverTicket.DiscountMoney - storeDiscount.CouponDiscountMoney;
}
// 第二部汇总卡务金额
sqlBuld = new StringBuilder();
sqlBuld.Append(" select ");
sqlBuld.Append(" round(sum(money),2) as cardRealMoney ,count(id) as cardCount from pos_card_recharge where");
sqlBuld.Append(" workerNo = '{0}' and planNo = '{1}' ");
sqlBuld.Append(" and storeId = '{2}' ");
sqlBuld.Append(" and rechargeStatus = 2 ");
sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
HandOverTicket storeCardRecharge = db.FirstOrDefault<HandOverTicket>(sql);
if (storeCardRecharge == null)
{
handOverTicket.CardCount = 0;
handOverTicket.CardRealMoney = 0.00M;
}
else
{
handOverTicket.CardCount = storeCardRecharge.CardCount;
handOverTicket.CardRealMoney = storeCardRecharge.CardRealMoney;
}
// 第二步的扩展汇总礼品卡销售金额
sqlBuld = new StringBuilder();
sqlBuld.Append(" select ");
sqlBuld.Append(" round(sum(money),2) as cardRealMoney ,count(id) as cardCount from pos_card_sale where");
sqlBuld.Append(" workerNo = '{0}' and shiftNo = '{1}' ");
sqlBuld.Append(" and storeId = '{2}' ");
sqlBuld.Append(" and payStatus=1 ");
sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
HandOverTicket storeCardSale = db.FirstOrDefault<HandOverTicket>(sql);
if (storeCardSale == null)
{
handOverTicket.CardCount = handOverTicket.CardCount;
handOverTicket.CardRealMoney = handOverTicket.CardRealMoney;
}
else
{
handOverTicket.CardCount = handOverTicket.CardCount + storeCardSale.CardCount;
handOverTicket.CardRealMoney = handOverTicket.CardRealMoney + storeCardSale.CardRealMoney;
}
// 第三部汇总非营业收入支出金额
sqlBuld = new StringBuilder();
sqlBuld.Append(" select ");
sqlBuld.Append(" round(sum(case when type=1 then money else 0 end),2) as outmoney, ");
sqlBuld.Append(" round(sum(case when type=2 then money else 0 end),2) as inmoney ");
sqlBuld.Append(" from pos_store_cost_revenue where ");
sqlBuld.Append(" workNo = '{0}' and shiftNo = '{1}' ");
sqlBuld.Append(" and storeId = '{2}' ");
sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
HandOverTicket storeCostRevenue = db.FirstOrDefault<HandOverTicket>(sql);
if (storeCostRevenue == null)
{
handOverTicket.Inmoney = 0.00M;
handOverTicket.Outmoney = 0.00M;
}
else
{
handOverTicket.Inmoney = storeCostRevenue.Inmoney;
handOverTicket.Outmoney = storeCostRevenue.Outmoney;
}
// 查询备用金
handOverTicket.Imprest = Global.Instance.BusinessPlanLog.Imprest;
// 第五步汇总卡务退卡次数金额
sqlBuld = new StringBuilder();
sqlBuld.Append(" select ");
sqlBuld.Append(" round(sum(refundMoney),2) as cardRefundMoney ,count(id) as cardRefundCount from pos_card_account_destroy where");
sqlBuld.Append(" workerNo = '{0}' and planNo = '{1}' ");
sqlBuld.Append(" and storeId = '{2}' ");
sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
HandOverTicket storeCardRefund = db.FirstOrDefault<HandOverTicket>(sql);
if (storeCardRefund == null)
{
handOverTicket.CardRefundCount = 0;
handOverTicket.CardRefundMoney = 0.00M;
}
else
{
handOverTicket.CardRefundCount = storeCardRefund.CardRefundCount;
handOverTicket.CardRefundMoney = storeCardRefund.CardRefundMoney;
}
//第五步扩展礼品卡销售退卡金额次数
sqlBuld = new StringBuilder();
sqlBuld.Append(" select ");
sqlBuld.Append(" round(sum(money),2) as cardRefundMoney ,count(id) as cardRefundCount from pos_card_sale where");
sqlBuld.Append(" workerNo = '{0}' and shiftNo = '{1}' ");
sqlBuld.Append(" and storeId = '{2}' ");
sqlBuld.Append(" and payStatus=2 ");
sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
HandOverTicket storeCardSaleRefund = db.FirstOrDefault<HandOverTicket>(sql);
if (storeCardSaleRefund == null)
{
handOverTicket.CardRefundCount = handOverTicket.CardRefundCount;
handOverTicket.CardRefundMoney = handOverTicket.CardRefundMoney;
}
else
{
handOverTicket.CardRefundCount = handOverTicket.CardRefundCount + storeCardSaleRefund.CardRefundCount;
handOverTicket.CardRefundMoney = handOverTicket.CardRefundMoney + System.Math.Abs(storeCardSaleRefund.CardRefundMoney);
}
//第六步汇总支付虚实收
sqlBuld = new StringBuilder();
sqlBuld.Append(" select round(sum(case when a.incomeFlag = 1 then a.amount else 0 end),2) as realMoney , ");
sqlBuld.Append(" round(sum(case when a.incomeFlag = 0 then a.amount else 0 end), 2) as virtualMoney ");
sqlBuld.Append(" from pos_order_pay a ");
sqlBuld.Append(" left join pos_order b on a.orderId = b.id where b.workerNo = '{0}' ");
sqlBuld.Append(" and b.shiftNo = '{1}' and b.storeId = '{2}' ");
sqlBuld.Append(" and b.orderStatus in (0, 2, 4) ");
sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
HandOverTicket storeVirtualRealMoney = db.FirstOrDefault<HandOverTicket>(sql);
if (storeVirtualRealMoney == null)
{
handOverTicket.RealMoney = 0.00M;
handOverTicket.VirtualMoney = 0.00M;
}
else
{
handOverTicket.RealMoney = storeVirtualRealMoney.RealMoney;
handOverTicket.VirtualMoney = storeVirtualRealMoney.VirtualMoney;
}
//第七步获取门店支付配送费
sqlBuld = new StringBuilder();
sqlBuld.Append(" select ");
sqlBuld.Append(" round(sum(case when status=0 then distributionFee else 0 end),2) - round(sum(case when status=1 then distributionFee else 0 end),2) as distributionFee ");
sqlBuld.Append(" from pos_wx_waimai_order where ");
sqlBuld.Append(" workerNo = '{0}' and shiftNo = '{1}' ");
sqlBuld.Append(" and storeId = '{2}' ");
sqlBuld.Append(" and isIncome = '1' ");
sql = string.Format(sqlBuld.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
HandOverTicket wxWaimaiOrder = db.FirstOrDefault<HandOverTicket>(sql);
if (wxWaimaiOrder == null)
{
handOverTicket.DistributionFee = 0.00M;
}
else
{
handOverTicket.DistributionFee = wxWaimaiOrder.DistributionFee;
}
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
return handOverTicket;
}
public List<HandOverDetail> getHandOverDetail()
{
List<HandOverDetail> sumList = new List<HandOverDetail>();
try
{
using (var db = Global.Instance.OpenDataBase)
{
Dictionary<string, string> payTypeMap = new Dictionary<string, string>();
// 第一步销售收入
StringBuilder sqlBuf = new StringBuilder();
sqlBuf.Append(" select a.no as payModeNo,a.name as payModeName,count(a.no) as count ,round(sum(a.amount),2) as money from pos_order_pay a ");
sqlBuf.Append(" left join pos_order b on a.orderId = b.id");
sqlBuf.Append(" where ");
sqlBuf.Append(" b.workerNo ='{0}' ");
sqlBuf.Append(" and b.shiftNo ='{1}' ");
sqlBuf.Append(" and b.storeId = '{2}' ");
sqlBuf.Append(" and b.orderStatus in (0,2,4) ");
sqlBuf.Append(" group by a.no ");
string sql = string.Format(sqlBuf.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
List<HandOverDetail> list = db.Query<HandOverDetail>(sql).ToList();
int i = 0;
foreach (HandOverDetail handOverDetail in list)
{
handOverDetail.Index = i + 1;
i = i + 1;
payTypeMap.Add(handOverDetail.PayModeNo, handOverDetail.PayModeName);
}
// 第二部汇总卡务金额
sqlBuf = new StringBuilder();
sqlBuf.Append(" select a.payNo as payModeNo,a.payName as payModeName,count(a.payNo) as count,round(sum(a.amount),2) AS money from pos_card_recharge_pay a ");
sqlBuf.Append(" left join pos_card_recharge b on a.rechargeId = b.id ");
sqlBuf.Append(" where b.workerNo = '{0}' ");
sqlBuf.Append(" and b.planNo = '{1}' and b.storeId = '{2}' ");
sqlBuf.Append(" and rechargeStatus = 2 ");
sqlBuf.Append(" group by a.payNo ");
sql = string.Format(sqlBuf.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
List<HandOverDetail> listDetail = db.Query<HandOverDetail>(sql).ToList();
foreach (HandOverDetail cardRechargeDetail in listDetail)
{
//payTypeMap[cardRechargeDetail.PayModeNo] = cardRechargeDetail.PayModeName;
if (payTypeMap.ContainsKey(cardRechargeDetail.PayModeNo))
{
payTypeMap[cardRechargeDetail.PayModeNo] = cardRechargeDetail.PayModeName;
}
else
{
payTypeMap.Add(cardRechargeDetail.PayModeNo, cardRechargeDetail.PayModeName);
}
}
//第二步扩展 汇总礼品卡销售金额
sqlBuf = new StringBuilder();
sqlBuf.Append(" select a.payNo as payModeNo,a.payName as payModeName,count(a.payNo) as count,round(sum(a.amount),2) AS money from pos_card_sale_pay a ");
sqlBuf.Append(" left join pos_card_sale b on a.ticketId = b.id ");
sqlBuf.Append(" where b.workerNo = '{0}' ");
sqlBuf.Append(" and b.shiftNo = '{1}' and b.storeId = '{2}' ");
sqlBuf.Append(" group by a.payNo ");
sql = string.Format(sqlBuf.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
List<HandOverDetail> listSaleDetail = db.Query<HandOverDetail>(sql).ToList();
foreach (HandOverDetail cardSaleDetail in listSaleDetail)
{
//payTypeMap[cardRechargeDetail.PayModeNo] = cardRechargeDetail.PayModeName;
if (payTypeMap.ContainsKey(cardSaleDetail.PayModeNo))
{
payTypeMap[cardSaleDetail.PayModeNo] = cardSaleDetail.PayModeName;
}
else
{
payTypeMap.Add(cardSaleDetail.PayModeNo, cardSaleDetail.PayModeName);
}
}
// 第三部汇总卡务退款金额
sqlBuf = new StringBuilder();
sqlBuf.Append(" select a.payNo as payModeNo,a.payName as payModeName,count(a.payNo) as count,round(sum(a.refundMoney),2) AS money from pos_card_account_destroy a ");
sqlBuf.Append(" where a.workerNo = '{0}' ");
sqlBuf.Append(" and a.planNo = '{1}' and a.storeId = '{2}' ");
sqlBuf.Append(" group by a.payNo ");
sql = string.Format(sqlBuf.ToString(), Global.Instance.BusinessPlanLog.WorkerNo, Global.Instance.BusinessPlanLog.No, Global.Instance.BusinessPlanLog.StoreId);
List<HandOverDetail> listRefundDetail = db.Query<HandOverDetail>(sql).ToList();
foreach (HandOverDetail cardRefundDetail in listRefundDetail)
{
if (payTypeMap.ContainsKey(cardRefundDetail.PayModeNo))
{
payTypeMap[cardRefundDetail.PayModeNo] = cardRefundDetail.PayModeName;
}
else
{
payTypeMap.Add(cardRefundDetail.PayModeNo, cardRefundDetail.PayModeName);
}
}
foreach (KeyValuePair<string, string> payType in payTypeMap)
{
HandOverDetail sumDetail = new HandOverDetail();
foreach (HandOverDetail handOverDetail in list)
{
if (payType.Key.Equals(handOverDetail.PayModeNo))
{
sumDetail.PayModeNo = handOverDetail.PayModeNo;
sumDetail.PayModeName = handOverDetail.PayModeName;
sumDetail.Count = handOverDetail.Count;
sumDetail.Money = handOverDetail.Money;
}
}
foreach (HandOverDetail cardRechargeDetail in listDetail)
{
if (payType.Key.Equals(cardRechargeDetail.PayModeNo))
{
sumDetail.PayModeNo = cardRechargeDetail.PayModeNo;
sumDetail.PayModeName = cardRechargeDetail.PayModeName;
sumDetail.CardCount = cardRechargeDetail.Count;
sumDetail.CardMoney = cardRechargeDetail.Money;
}
}
foreach (HandOverDetail cardSaleDetail in listSaleDetail)
{
if (payType.Key.Equals(cardSaleDetail.PayModeNo))
{
sumDetail.PayModeNo = cardSaleDetail.PayModeNo;
sumDetail.PayModeName = cardSaleDetail.PayModeName;
sumDetail.CardCount = sumDetail.CardCount + cardSaleDetail.Count;
sumDetail.CardMoney = sumDetail.CardMoney + cardSaleDetail.Money;
}
}
foreach (HandOverDetail cardRefundDetail in listRefundDetail)
{
if (payType.Key.Equals(cardRefundDetail.PayModeNo))
{
sumDetail.PayModeNo = cardRefundDetail.PayModeNo;
sumDetail.PayModeName = cardRefundDetail.PayModeName;
sumDetail.CardCount = sumDetail.CardCount + cardRefundDetail.Count;//数量合计
sumDetail.CardMoney = sumDetail.CardMoney - cardRefundDetail.Money;//金额相减
}
}
sumList.Add(sumDetail);
}
//如果明细里没有01支付方式,需要添加
HandOverDetail detailEntity = sumList.FirstOrDefault(x => "01".Equals(x.PayModeNo));
if (detailEntity == null)
{
detailEntity = new HandOverDetail();
var payMode = OrderUtils.GetPayMode("01");
detailEntity.PayModeNo = "01";
if (payMode != null)
{
detailEntity.PayModeName = payMode.Name;
}
else
{
detailEntity.PayModeName = "人民币";
}
detailEntity.Count = 0;
detailEntity.Money = 0.00M;
detailEntity.CardCount = 0;
detailEntity.CardMoney = 0.00M;
sumList.Add(detailEntity);
}
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
return sumList;
}
public void saveHandOver(HandOverTicket entity)
{
try
{
lock (Global.Instance.SyncLock)
{
using (var db = Global.Instance.OpenDataBase)
{
using (var transaction = db.GetTransaction())
{
// 保存主单数据
db.Save<HandOverTicket>(entity);
// 保存支付汇总
List<HandOverDetail> detail = entity.Detail;
if (detail != null && detail.Count > 0)
{
foreach (HandOverDetail detailEntity in detail)
{
db.Save<HandOverDetail>(detailEntity);
}
}
// 保存盘点数据 (茶饮上专用,暂时不做)
// 保存交班支付方式明细
List<HandOverPay> pay = entity.Pay;
if (pay != null && pay.Count > 0)
{
foreach (HandOverPay handOverPay in pay)
{
db.Save<HandOverPay>(handOverPay);
}
}
// 交班成功更新登陆状态
string updateSql = "update pos_business_plan_log set status =1, shiftTime ='{0}',isLogin =0 where tenantId = '{1}' and storeId = '{2}' and workerId ='{3}' and posNo = '{4}' and no='{5}' ";
string sql = string.Format(updateSql, entity.DatetimeShift, entity.TenantId, entity.StoreId, entity.WorkId, entity.PosNo, entity.ShiftNo);
db.Execute(sql);
transaction.Complete();
}
}
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
}
public void saveHandOverObject(UploadHandoverObject entity)
{
try
{
lock (Global.Instance.SyncLock)
{
using (var db = Global.Instance.OpenDataBase)
{
using (var transaction = db.GetTransaction())
{
// 保存要上传的数据
db.Save<UploadHandoverObject>(entity);
transaction.Complete();
}
}
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
}
private void ButtonOk_Click(object sender, EventArgs e)
{
if (handOverTicket != null)
{
decimal handsMoney = 0.00M;
decimal difMoney = 0.00M;
string shiftNo = OrderUtils.Instance.GenerateShiftNo();
handOverTicket.Id = IdWorkerUtils.Instance.NextId();
handOverTicket.No = shiftNo;
handOverTicket.Memo = string.Format("员工:{0},{1}交班单", handOverTicket.WorkName, handOverTicket.ShiftNo);
handOverTicket.ShiftNo = Global.Instance.BusinessPlanLog.No;
if (handOverTicket.Detail != null)
{
foreach (HandOverDetail handOverDetail in handOverTicket.Detail)
{
handOverDetail.Id = IdWorkerUtils.Instance.NextId();
handOverDetail.TenantId = handOverTicket.TenantId;
handOverDetail.BusNo = handOverTicket.No;
handOverDetail.PosNo = Global.Instance.Authc.PosNo;
handOverDetail.DeviceIp = DeviceUtils.Instance.IPAddress;
handOverDetail.DeviceMac = DeviceUtils.Instance.MacAddress;
handOverDetail.DeviceName = DeviceUtils.Instance.ComputerName;
handOverDetail.HandsMoney = handOverDetail.SumMoney;
if ("01".Equals(handOverDetail.PayModeNo))
{
handsMoney = handOverDetail.SumMoney + handOverTicket.Inmoney - handOverTicket.Outmoney;
//人民币金额计算方式
handOverDetail.HandsMoney = handsMoney;
difMoney = 0.00M;
}
handOverDetail.StoreId = handOverTicket.StoreId;
handOverDetail.TicketId = handOverTicket.Id;
}
}
if (handOverTicket.Pay != null)
{
foreach (HandOverPay handOverPay in handOverTicket.Pay)
{
handOverPay.Id = IdWorkerUtils.Instance.NextId();
handOverPay.TenantId = handOverTicket.TenantId;
handOverPay.BusNo = handOverTicket.No;
handOverPay.PosNo = Global.Instance.Authc.PosNo;
handOverPay.DeviceIp = DeviceUtils.Instance.IPAddress;
handOverPay.DeviceMac = DeviceUtils.Instance.MacAddress;
handOverPay.DeviceName = DeviceUtils.Instance.ComputerName;
handOverPay.StoreId = handOverTicket.StoreId;
handOverPay.TicketId = handOverTicket.Id;
}
}
saveHandOver(handOverTicket);
var uploadObject = new UploadHandoverObject();
uploadObject.Id = IdWorkerUtils.Instance.NextId();
uploadObject.TenantId = this.handOverTicket.TenantId;
uploadObject.TradeNo = this.handOverTicket.No;
uploadObject.SyncStatus = 0;
uploadObject.HandOverTicket = this.handOverTicket;
uploadObject.PrintStatus = HandOverPrintStatus.WAIT;
uploadObject.UploadErrors = 0;
uploadObject.PrintTimes = 0;
saveHandOverObject(uploadObject);
//有要上传的数据
LOGGER.Info("有需要上传的交班数据,isHaveUpLoadShift=true");
Global.isHaveUpLoadShift = true;
//交班打印
this.ShowToastNotify(this, "开始打印");
//构建收银小票模版参数
handOverTicket.PrintType = "";
handOverTicket.handMoney = handsMoney;//手工金额
handOverTicket.diffMoney = difMoney;//差异金额
bool ShiftPrint = Global.Instance.GlobalConfigBoolValue(ConfigConstant.CONFIG_CASHIER_SHIFPRINT, false);
var vars = ShiftHelper.BuilderTicketVariable(handOverTicket, ShiftPrint, false);
Tuple<bool, string> result = ShiftHelper.PrinterTicket("食堂版交班汇总_通用模版", vars, true, false);
this.ShowToastNotify(this, string.Format("{0}", result.Item2));
//是否交班
Global.isHandOver = false;
//关闭当前秤
MsgEvent.Send(Constant.CURRENTSTEELYARD_STATUS_CHANGE, "close");
//两秒退出系统
System.Threading.Thread.Sleep(2000);
OnCloseTouchClick(sender, e);
//交班后重启收银程序
Global.Instance.Restart = true;
Application.ExitThread();
}
}
}
}