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.
1118 lines
59 KiB
C#
1118 lines
59 KiB
C#
using POSV.Component;
|
|
using POSV.Entity;
|
|
using POSV.HandOver;
|
|
using POSV.Helper;
|
|
using POSV.MessageEvent;
|
|
using POSV.ShoppingCart;
|
|
using POSV.StoreBusiness;
|
|
using POSV.Utils;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
namespace POSV.Shift
|
|
{
|
|
public partial class ShiftBlindForm : BusinessForm
|
|
{
|
|
HandOverTicket handOverTicket = null;
|
|
public ShiftBlindForm()
|
|
{
|
|
InitializeComponent();
|
|
this.controlBox1.Text = "收银交班";
|
|
this.controlBox1.ShowApplicationVersion = false;
|
|
}
|
|
|
|
|
|
|
|
protected override void OnLoad(EventArgs e)
|
|
{
|
|
base.OnLoad(e);
|
|
|
|
if (this.DesignMode) return;
|
|
|
|
DefaultGridStyle.setDefaultGridStyle(this.payListTable);
|
|
|
|
//正在交班中
|
|
Global.isHandOver = true;
|
|
|
|
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;
|
|
//组装界面数据
|
|
workerNoLable.Text = handOverTicket.WorkNo;
|
|
workerNameLable.Text = handOverTicket.WorkName;
|
|
label_startTime.Text = handOverTicket.DatetimeBegin;
|
|
label_endTime.Text = handOverTicket.DatetimeEnd;
|
|
label_people.Text = "" + StringUtils.GetInt(handOverTicket.PeopleCount);
|
|
label_ticketCount.Text = "" + StringUtils.GetInt(handOverTicket.TicketCount);
|
|
//label_amount.Text = "" + StringUtils.GetDecimal(handOverTicket.Amount);
|
|
label_dealTicketCount.Text = "" + StringUtils.GetInt(handOverTicket.DealTicketCount);
|
|
//label_dealAmount.Text = "" + StringUtils.GetDecimal(handOverTicket.DealAmount);
|
|
label_backTicketCount.Text = "" + StringUtils.GetInt(handOverTicket.BackTicketCount);
|
|
// label_backAmount.Text = "" + StringUtils.GetDecimal(handOverTicket.BackAmount);
|
|
//label_discountMoney.Text = "" + StringUtils.GetDecimal(handOverTicket.DiscountMoney);
|
|
//label_receivable.Text = "" + StringUtils.GetDecimal(handOverTicket.Receivable);
|
|
//label_maling.Text = "" + StringUtils.GetDecimal(handOverTicket.Maling);
|
|
//label_paid.Text = "" + StringUtils.GetDecimal(handOverTicket.Paid);
|
|
label_cardCount.Text = "" + StringUtils.GetInt(handOverTicket.CardCount);
|
|
//===退卡余额汇总
|
|
accountDestroyCountlabelX.Text = "" + StringUtils.GetInt(handOverTicket.CardRefundCount);
|
|
//accountDestroylabelX.Text = "" + StringUtils.GetDecimal(handOverTicket.AccountDestroy);
|
|
//accountDestroylabelX.Text = "" + StringUtils.GetDecimal(handOverTicket.CardRealMoney);
|
|
// label_cardRealMoney.Text = "" + StringUtils.GetDecimal(handOverTicket.CardRealMoney);
|
|
//label_inmoney.Text = "" + StringUtils.GetDecimal(handOverTicket.Inmoney);
|
|
//label_outmoney.Text = "" + StringUtils.GetDecimal(handOverTicket.Outmoney);
|
|
//label_sumRealMoney.Text = "" + StringUtils.GetDecimal(handOverTicket.SumRealMoney);
|
|
//label_shiftAmount.Text = "" + StringUtils.GetDecimal(handOverTicket.ShiftAmount);
|
|
label_imprest.Text = "" + StringUtils.GetDecimal(handOverTicket.Imprest);
|
|
//===班次配送费
|
|
//label_distributionFee.Text = "" + StringUtils.GetDecimal(handOverTicket.DistributionFee);
|
|
List<HandOverDetail> lsitDetai = handOverTicket.Detail.FindAll(x => !x.PayModeNo.Equals("01"));
|
|
payListTable.PrimaryGrid.DataSource = lsitDetai;
|
|
//未交班人员提醒
|
|
string unShiftWorker = getUnShiftWorker();
|
|
if (unShiftWorker != null && !"".Equals(unShiftWorker))
|
|
{
|
|
label_unShiftWorker.Text = "特别提醒: " + unShiftWorker + " 未交班";
|
|
}
|
|
else
|
|
{
|
|
label_unShiftWorker.Text = "";
|
|
}
|
|
|
|
//外送未交单提醒
|
|
if (Global.Instance.GlobalConfigBoolValue(ConfigConstant.CONFIG_CASHIER_WSUNFINISHNUMNOTIFY, true))
|
|
{
|
|
var wsCount = GetWsUnFinishOrder();
|
|
if (wsCount > 0)
|
|
{
|
|
var dialog = new DialogForm("外送未交单提醒", string.Format("还有<{0}>单外送单未交单!", wsCount), MessageBoxIcon.Warning, MessageBoxButtons.OK);
|
|
dialog.TopLevel = true;
|
|
dialog.ShowDialog();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <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;
|
|
}
|
|
|
|
private void OnControlBoxCloseClick(object sender, EventArgs e)
|
|
{
|
|
OnCloseTouchClick(sender, e);
|
|
}
|
|
|
|
|
|
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 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;
|
|
|
|
}
|
|
|
|
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}' ");
|
|
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)
|
|
{
|
|
try
|
|
{
|
|
this.ButtonOk.Enabled = false;
|
|
if (Global.Instance.GlobalConfigBoolValue(ConfigConstant.CONFIG_CASHIER_ISVERIFICATIONORDER))
|
|
{
|
|
int _count = 0;
|
|
//核销提示
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
{
|
|
using (var transaction = db.GetTransaction())
|
|
{
|
|
string querySql = "select * from pos_saoma_pay_ticket where payStatus ='{0}'";
|
|
querySql = string.Format(querySql, 0);
|
|
_count = db.Query<SaomaPayTicket>(querySql).Count();
|
|
}
|
|
}
|
|
if (_count > 0)
|
|
{
|
|
DialogForm dialog = new DialogForm("操作提醒", "您有未核销订单,是否继续交班?", MessageBoxIcon.Warning, MessageBoxButtons.OKCancel);
|
|
if (DialogResult.OK != dialog.ShowDialog())
|
|
{
|
|
return;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
if ("".Equals(this.moneyTextBox.Text))
|
|
{
|
|
this.ShowToastNotify(this, "请录入交款金额");
|
|
return;
|
|
}
|
|
|
|
if (handOverTicket != null)
|
|
{
|
|
//人民币手工金额
|
|
decimal handsMoney = StringUtils.GetDecimal(this.moneyTextBox.Text);
|
|
decimal difMoney = 0.00M;
|
|
|
|
string shiftNo = OrderUtils.Instance.GenerateShiftNo();
|
|
|
|
handOverTicket.Id = IdWorkerUtils.Instance.NextId();
|
|
handOverTicket.No = shiftNo;
|
|
handOverTicket.Memo = memoTextBox.Text;
|
|
|
|
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;
|
|
if ("01".Equals(handOverDetail.PayModeNo))
|
|
{
|
|
handOverDetail.HandsMoney = handsMoney;
|
|
difMoney = handsMoney - (handOverDetail.SumMoney + handOverTicket.Inmoney - handOverTicket.Outmoney);
|
|
}
|
|
else
|
|
{
|
|
handOverDetail.HandsMoney = handOverDetail.SumMoney;
|
|
}
|
|
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);
|
|
//交班开钱箱
|
|
bool openCashbox = false;
|
|
if (Global.Instance.GlobalConfigBoolValue(ConfigConstant.CONFIG_CASHIER_ISSHIFTOPENCASH))
|
|
{
|
|
openCashbox = Global.Instance.GlobalConfigBoolValue(ConfigConstant.CONFIG_CASHIER_ISSHIFTOPENCASH);
|
|
}
|
|
Tuple<bool, string> result = ShiftHelper.PrinterTicket("交班汇总", vars, true, openCashbox);
|
|
this.ShowToastNotify(this, string.Format("{0}", result.Item2));
|
|
//是否交班中
|
|
Global.isHandOver = false;
|
|
StoreBusinessUtils.SaveOperationLog("103", "班次:" + handOverTicket.ShiftNo);
|
|
//关闭当前秤
|
|
MsgEvent.Send(Constant.CURRENTSTEELYARD_STATUS_CHANGE, "close");
|
|
//两秒以后关闭
|
|
System.Threading.Thread.Sleep(2000);
|
|
OnCloseTouchClick(sender, e);
|
|
//交班后重启收银程序
|
|
Global.Instance.Restart = true;
|
|
|
|
|
|
Application.ExitThread();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LOGGER.Error(ex, "交班异常");
|
|
var dialog = new DialogForm("交班异常","交班异常,请查询交班记录确认是否已交班避免重复交班", MessageBoxIcon.Warning, MessageBoxButtons.OK);
|
|
dialog.TopLevel = true;
|
|
dialog.ShowDialog();
|
|
}
|
|
|
|
finally { this.ButtonOk.Enabled = true; }
|
|
|
|
}
|
|
|
|
private void OnControlBoxKeyboardClick(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
KeyboardType keyboardType = KeyboardType.数字;
|
|
Type type = this.ActiveControl.GetType();
|
|
PropertyInfo pinfo = type.GetProperty("Keyboard");
|
|
if (pinfo != null)
|
|
{
|
|
keyboardType = (KeyboardType)pinfo.GetValue(this.ActiveControl, null);
|
|
}
|
|
|
|
var keyboard = Application.OpenForms["VirtualKeyboard"];
|
|
if (keyboard == null)
|
|
{
|
|
keyboard = new VirtualKeyboard(keyboardType);
|
|
}
|
|
|
|
((VirtualKeyboard)keyboard).ShowVirtualKeyboard(this, keyboardType);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LOGGER.Error(ex, "打开屏幕键盘异常");
|
|
}
|
|
}
|
|
}
|
|
}
|