using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows;
using System.Threading;
using System.Text.RegularExpressions;
namespace PosDataTest
{
public class Prints
{
#region 方法 -> 生成稽核结果单
///
/// 生成稽核单
///
/// 稽核工号
/// 稽核单号
public static void GetAuditResult(string code, string EndaccountCode)
{
try
{
List _PrintList = new List();
_PrintList.Add(PrintHelper.CreateCenterLine(QualityHelper.serverpartname + "稽查信息"));
switch (code)
{
case "8000":
case "8001":
case "8002":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "公司稽查"));//公司稽查:8000、8001、8002
break;
case "9501":
case "9601":
case "9701":
case "zd9001":
case "zd9002":
case "zd9003":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "[浙东]区域稽查"));//区域稽查:9501-9601-9701(浙东)
break;
case "9502":
case "9602":
case "9702":
case "zn9001":
case "zn9002":
case "zn9003":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "[浙南]区域稽查"));//区域稽查:9502-9602-9702(浙南)
break;
case "9503":
case "9603":
case "9703":
case "zx9001":
case "zx9002":
case "zx9003":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "[浙西]区域稽查"));//区域稽查:9503-9603-9703(浙西)
break;
case "9504":
case "9604":
case "9704":
case "zb9001":
case "zb9002":
case "zb9003":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "[浙北]区域稽查"));//区域稽查:9504-9604-9704(浙北)
break;
case "9505":
case "9605":
case "9705":
case "zz9001":
case "zz9002":
case "zz9003":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "[浙中]区域稽查"));//区域稽查:9505-9605-9705(浙中)
break;
case "9506":
case "9606":
case "9706":
case "yh9001":
case "yh9002":
case "yh9003":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "[沿海]区域稽查"));//区域稽查:9506-9606-9706(沿海)
break;
case "G9999":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "公司远程稽查"));//公司远程稽核:G9999
break;
case "Q9999":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "区域远程稽核"));//区域远程稽核:Q9999
break;
case "F9999":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "服务区远程稽查"));//服务区远程稽查:F9999
break;
case "ZN9999":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "智能稽查"));//智能稽查:ZN9999
break;
default:
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "服务区稽查"));
break;
}
_PrintList.Add(PrintHelper.CreateSideLine("收银机号:", QualityHelper.machinecode));
_PrintList.Add(PrintHelper.CreateSideLine("稽查门店:", "[" + QualityHelper.shopcode + "]"));
_PrintList.Add(PrintHelper.CreateRightLine(ESSupport.DataStorage.DataFunction.QueryShopName(QualityHelper.serverpartcode, QualityHelper.shopcode)));
_PrintList.Add(PrintHelper.CreateSideLine("稽查人员", "[" + code + "]"));
switch (code)
{
case "F9999":
_PrintList.Add(PrintHelper.CreateRightLine("服务区远程稽查"));
break;
case "Q9999":
_PrintList.Add(PrintHelper.CreateRightLine("区域远程稽查"));
break;
case "G9999":
_PrintList.Add(PrintHelper.CreateRightLine("公司远程稽查"));
break;
case "ZN9999":
_PrintList.Add(PrintHelper.CreateRightLine("智能稽查"));
break;
default:
_PrintList.Add(PrintHelper.CreateRightLine(ESSupport.DataStorage.DataFunction.QueryPersonName(QualityHelper.serverpartcode, code)));
break;
}
DataTable _DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT STARTDATE,ENDDATE,ENDPERSON_CODE,CASHIER_CODE,
CASHIER_NAME,ISNULL(CASHPAY,0) AS CASHPAY,
ISNULL(CONTRIBUTION_AMOUNT,0) AS CONTRIBUTION_AMOUNT
FROM T_ENDACCOUNT_NEW
WHERE ENDACCOUNT_CODE ='{EndaccountCode}' ").Tables[0];
if (_DataTable.Rows.Count > 0)
{
_PrintList.Add(PrintHelper.CreateLeftLine("稽查时间:"));
_PrintList.Add(PrintHelper.CreateRightLine(_DataTable.Rows[0]["ENDDATE"].ToString()));
decimal.TryParse(_DataTable.Rows[0]["CASHPAY"].ToString(), out decimal _CashPay);
decimal.TryParse(_DataTable.Rows[0]["CONTRIBUTION_AMOUNT"].ToString(), out decimal _ContributionAmount);
if (_DataTable.Rows[0]["ENDPERSON_CODE"].ToString() == "ZN9999" && _ContributionAmount - _CashPay != 0)
{
_PrintList.Add(PrintHelper.CreateSideLine("稽查结果:", "[稽查信息保存成功]"));
_PrintList.Add(PrintHelper.CreateSideLine("当班收银员:", "[" + _DataTable.Rows[0]["CASHIER_CODE"].ToString() + "]"));
_PrintList.Add(PrintHelper.CreateRightLine(_DataTable.Rows[0]["CASHIER_NAME"].ToString()));
_PrintList.Add(PrintHelper.CreateSideLine("稽查金额:", _ContributionAmount.ToString("F2")));
_PrintList.Add(PrintHelper.CreateCenterLine("本次稽查有长短款"));
_PrintList.Add(PrintHelper.CreateCenterLine("请等待管理员现场复核"));
_PrintList.Add(PrintHelper.CreateLeftLine("管理员复核方式:"));
_PrintList.Add(PrintHelper.CreateLeftLine(" 1.打开系统菜单"));
_PrintList.Add(PrintHelper.CreateLeftLine(" 2.选择稽核选项"));
_PrintList.Add(PrintHelper.CreateLeftLine(" 3.选择智能稽核复核"));
_PrintList.Add(PrintHelper.CreateLeftLine(" 4.根据实际情况选择打印稽核报表或进行流水补录"));
}
else
{
_PrintList.Add(PrintHelper.CreateSideLine("稽查结果:", "[稽查信息保存成功]"));
}
}
else
{
_PrintList.Add(PrintHelper.CreateSideLine("稽查结果:", "[稽查信息保存失败]"));
}
PrintHelper.PrintList(_PrintList, int.Parse(QualityHelper.xpprint_num), int.Parse(QualityHelper.paper_walk), false);
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("稽查信息打印失败:" + ex.Message);
}
}
#endregion
#region 方法 -> 生成稽核单
///
/// 打印稽核单
///
/// 结账表编号
///
public static bool PrintAudit(string EndAccountCode, bool isCheckContribution = false)
{
try
{
DataTable _DataTable = new DataTable();
try
{
_DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT ENDPERSON_CODE,STARTDATE,ENDDATE,ISNULL(TICKET_COUNT,0) AS TICKET_COUNT,
ISNULL(TOTAL_COUNT,0) AS TOTAL_COUNT,ISNULL(TOTAL_AMOUNT,0) AS TOTAL_AMOUNT,
ISNULL(TOTAL_OFFAMOUNT,0) AS TOTAL_OFFAMOUNT,ISNULL(CASHPAY,0) AS CASHPAY,
ISNULL(BANKPAY,0) AS BANKPAY,ISNULL(MEMBERPAY,0) AS MEMBERPAY,
ISNULL(COUPONPAY,0) AS COUPONPAY,ISNULL(MOBILEPAY,0) AS MOBILEPAY,
ISNULL(INTERNALPAY,0) AS INTERNALPAY,ISNULL(CONTRIBUTION_AMOUNT,0) AS CONTRIBUTION_AMOUNT,
PAYMENT_DETAILS,CASHIER_CODE,CASHIER_NAME
FROM T_ENDACCOUNT_NEW WHERE SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
SHOPCODE = '{QualityHelper.shopcode}' AND MACHINECODE = '{QualityHelper.machinecode}' AND
ENDACCOUNT_TYPE = 5 AND ENDACCOUNT_CODE = '{EndAccountCode}'").Tables[0];
}
catch (Exception ex)
{
return false;
}
if (_DataTable.Rows.Count > 0)
{
List _PrintList = new List();
_PrintList.Add(PrintHelper.CreateCenterLine(QualityHelper.serverpartname + "稽查报表"));
string EndPersonCode = _DataTable.Rows[0]["ENDPERSON_CODE"].ToString();
string str_CashierCode = _DataTable.Rows[0]["CASHIER_CODE"].ToString();
string str_CashierName = _DataTable.Rows[0]["CASHIER_NAME"].ToString();
switch (EndPersonCode)
{
case "8000":
case "8001":
case "8002":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "公司稽查"));//公司稽查:9000、9001、9002
break;
case "9501":
case "9601":
case "9701":
case "zd9001":
case "zd9002":
case "zd9003":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "[浙东]区域稽查"));//区域稽查:9501-9601-9701(浙东)
break;
case "9502":
case "9602":
case "9702":
case "zn9001":
case "zn9002":
case "zn9003":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "[浙南]区域稽查"));//区域稽查:9502-9602-9702(浙南)
break;
case "9503":
case "9603":
case "9703":
case "zx9001":
case "zx9002":
case "zx9003":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "[浙西]区域稽查"));//区域稽查:9503-9603-9703(浙西)
break;
case "9504":
case "9604":
case "9704":
case "zb9001":
case "zb9002":
case "zb9003":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "[浙北]区域稽查"));//区域稽查:9504-9604-9704(浙北)
break;
case "9505":
case "9605":
case "9705":
case "zz9001":
case "zz9002":
case "zz9003":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "[浙中]区域稽查"));//区域稽查:9505-9605-9705(浙中)
break;
case "9506":
case "9606":
case "9706":
case "yh9001":
case "yh9002":
case "yh9003":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "[沿海]区域稽查"));//区域稽查:9506-9606-9706(沿海)
break;
case "G9999":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "公司远程稽查"));//公司远程稽核:G9999
break;
case "Q9999":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "区域远程稽核"));//区域远程稽核:Q9999
break;
case "F9999":
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "服务区远程稽查"));//服务区远程稽查:F9999
break;
default:
_PrintList.Add(PrintHelper.CreateSideLine("稽查类型:", "服务区稽查"));
break;
}
_PrintList.Add(PrintHelper.CreateSideLine("收银机号:", QualityHelper.machinecode));
_PrintList.Add(PrintHelper.CreateSideLine("稽查门店:", "[" + QualityHelper.shopcode + "]"));
_PrintList.Add(PrintHelper.CreateRightLine(ESSupport.DataStorage.DataFunction.QueryShopName(QualityHelper.serverpartcode, QualityHelper.shopcode)));
switch (EndPersonCode)
{
case "G9999":
case "Q9999":
case "F9999":
case "ZN9999":
//远程及智能稽核打印稽核时的当班收银人员信息
_PrintList.Add(PrintHelper.CreateSideLine("稽查人员:", "[" + EndPersonCode + "]"));
_PrintList.Add(PrintHelper.CreateRightLine("智能稽查"));
_PrintList.Add(PrintHelper.CreateSideLine("当班收银员:", "[" + str_CashierCode + "]"));
_PrintList.Add(PrintHelper.CreateRightLine(str_CashierName));
break;
default:
//普通稽查打印实际操作人员及当班收银人员信息
_PrintList.Add(PrintHelper.CreateSideLine("稽查人员:", "[" + EndPersonCode + "]"));
_PrintList.Add(PrintHelper.CreateRightLine(ESSupport.DataStorage.DataFunction.QueryPersonName(QualityHelper.serverpartcode, EndPersonCode)));
_PrintList.Add(PrintHelper.CreateSideLine("当班收银员:", "[" + str_CashierCode + "]"));
_PrintList.Add(PrintHelper.CreateRightLine(str_CashierName));
break;
}
_PrintList.Add("稽查开始时间:");
DateTime.TryParse(_DataTable.Rows[0]["STARTDATE"].ToString(), out DateTime StartTime);
_PrintList.Add(PrintHelper.CreateRightLine(StartTime.ToString()));
_PrintList.Add("稽查结束时间:");
DateTime.TryParse(_DataTable.Rows[0]["ENDDATE"].ToString(), out DateTime EndTime);
_PrintList.Add(PrintHelper.CreateRightLine(EndTime.ToString()));
TimeSpan _TimeSpan = EndTime.Subtract(StartTime).Duration();
string dateDiff = _TimeSpan.Hours.ToString() + "小时" + _TimeSpan.Minutes.ToString() + "分钟";
_PrintList.Add(PrintHelper.CreateSideLine("工班总时长:", dateDiff));
_PrintList.Add(" ");
decimal.TryParse(_DataTable.Rows[0]["CASHPAY"].ToString(), out decimal cashpay);
decimal.TryParse(_DataTable.Rows[0]["COUPONPAY"].ToString(), out decimal couponpay);
decimal.TryParse(_DataTable.Rows[0]["BANKPAY"].ToString(), out decimal bankpay);
decimal.TryParse(_DataTable.Rows[0]["MOBILEPAY"].ToString(), out decimal mobilepay);
decimal.TryParse(_DataTable.Rows[0]["MEMBERPAY"].ToString(), out decimal memberpay);
//decimal.TryParse(_DataTable.Rows[0]["ENDDATE"].ToString(), out decimal otherpay);
decimal.TryParse(_DataTable.Rows[0]["INTERNALPAY"].ToString(), out decimal internalpay);
decimal.TryParse(_DataTable.Rows[0]["TICKET_COUNT"].ToString(), out decimal ticketcount);
decimal.TryParse(_DataTable.Rows[0]["TOTAL_OFFAMOUNT"].ToString(), out decimal offprice);
decimal.TryParse(_DataTable.Rows[0]["TOTAL_AMOUNT"].ToString(), out decimal factamount);
decimal.TryParse(_DataTable.Rows[0]["TOTAL_COUNT"].ToString(), out decimal sellcount);
decimal.TryParse(_DataTable.Rows[0]["CONTRIBUTION_AMOUNT"].ToString(), out decimal money);
_PrintList.Add(PrintHelper.CreateSideLine("现金交易合计:", cashpay.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 稽查金额:", money.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine("【稽查差额:】", (money - cashpay).ToString("F2") + "元"));
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add(PrintHelper.CreateSideLine("现金交易合计:", (cashpay + couponpay).ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 现金金额:", cashpay.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 消费券金额:", couponpay.ToString("F2") + "元"));
_PrintList.Add(" ");
_PrintList.Add(PrintHelper.CreateSideLine("移动支付合计:", mobilepay.ToString("F2") + "元"));
if (mobilepay > 0 && _DataTable.Rows[0]["PAYMENT_DETAILS"].ToString().Trim() != "")
{
string[] _strArrayList = _DataTable.Rows[0]["PAYMENT_DETAILS"].ToString().Trim().Split(',');
for (int i = 0; i < _strArrayList.Count(); i++)
{
string[] _strArray = _strArrayList[i].Split(':');
if (_strArray.Count() > 1)
{
switch (_strArray[0].ToUpper())
{
case "WECHATPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 微信支付:", decimal.Parse(_strArray[1]).ToString("F2") + "元"));
break;
case "ALIPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 支付宝支付:", decimal.Parse(_strArray[1]).ToString("F2") + "元"));
break;
case "QPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" QQ钱包:", decimal.Parse(_strArray[1]).ToString("F2") + "元"));
break;
case "JDPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 京东钱包:", decimal.Parse(_strArray[1]).ToString("F2") + "元"));
break;
case "BESTPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 翼支付:", decimal.Parse(_strArray[1]).ToString("F2") + "元"));
break;
case "UNIONPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 银联支付:", decimal.Parse(_strArray[1]).ToString("F2") + "元"));
break;
}
}
}
}
_PrintList.Add(" ");
_PrintList.Add(PrintHelper.CreateSideLine("其他支付合计:", (bankpay + memberpay + internalpay).ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 银行卡金额:", bankpay.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 会员卡金额:", memberpay.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(QualityHelper.enterprisevip == "1" ? " 企业会员金额:" : " 内部消费金额:", internalpay.ToString("F2") + "元"));
_PrintList.Add(" ");
_PrintList.Add(PrintHelper.CreateSideLine("交易合计金额:", (bankpay + memberpay + internalpay + mobilepay + couponpay + cashpay).ToString("F2") + "元"));
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add(PrintHelper.CreateSideLine("总客单数量:", ticketcount.ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine("总销售数量:", sellcount.ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine("总销售金额:", factamount.ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine("总优惠金额:", offprice.ToString("F2")));
//智能稽核时校验是否存在长短款,存在长短款则增加等待复核的提示
if (isCheckContribution && money - cashpay != 0)
{
_PrintList.Add(PrintHelper.CreateCenterLine("本次稽核有长短款"));
_PrintList.Add(PrintHelper.CreateCenterLine("请等待管理员现场复核"));
}
if (PrintHelper.PrintList(_PrintList, int.Parse(QualityHelper.xpprint_num), int.Parse(QualityHelper.paper_walk), false))
{
return true;
}
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("稽核单打印失败:" + ex.Message);
}
return false;
}
#endregion
#region 方法 -> 插入稽核数据
///
/// 插入稽核数据
///
/// 稽核工号
/// 缴款金额
/// 稽核时间
/// 输出:稽核数据唯一标识编码
public static bool InsertAudit(string personCode, decimal money, DateTime auditTime, out string EndAccountCode)
{
EndAccountCode = "";
try
{
DataTable table_EndAccount = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT MAX(STARTDATE) AS STARTDATE
FROM T_ENDACCOUNT_NEW
WHERE SERVERPARTCODE='{QualityHelper.serverpartcode}' AND
SHOPCODE='{QualityHelper.shopcode}' AND MACHINECODE='{QualityHelper.machinecode}'AND
ENDACCOUNT_TYPE = 1 AND ENDDATE IS NULL").Tables[0];
//获取营收数据表ID序列
int _MaxId = ESSupport.DataStorage.DataFunction.CreateNextSequence("T_ENDACCOUNT_NEW", "ENDACCOUNT_ID");
//获取当前账期开始时间
DateTime time_StartDate = (DateTime)table_EndAccount.Rows[0]["STARTDATE"];
//统计营收数据
DataTable table_SellMaster = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT COUNT(1) AS TICKETCOUNT,
ISNULL(SUM(SELLMASTER_COUNT),0) AS SELLMASTER_COUNT,
ISNULL(SUM(SELLMASTER_OFFPRICE),0) AS SELLMASTER_OFFPRICE,
ISNULL(SUM(SELLMASTER_AMOUNT),0) AS SELLMASTER_AMOUNT,
ISNULL(SUM(CASHPAY),0) AS CASHPAY,ISNULL(SUM(BANKPAY),0) AS BANKPAY,
ISNULL(SUM(MEMBERPAY),0) AS MEMBERPAY,ISNULL(SUM(COUPONPAY),0) AS COUPONPAY,
ISNULL(SUM(MOBILEPAY),0) AS MOBILEPAY,ISNULL(SUM(INTERNALPAY),0) AS INTERNALPAY,
ISNULL(SUM(OTHERPAY),0) AS OTHERPAY
FROM T_SELLMASTER
WHERE SERVERPARTCODE='{QualityHelper.serverpartcode}' AND
SHOPCODE='{QualityHelper.shopcode}' AND
MACHINECODE='{QualityHelper.machinecode}' AND
SELLMASTER_DATE BETWEEN DATETIME('{time_StartDate.ToString()}') AND DATETIME('{auditTime.ToString()}')").Tables[0];
//定义营收数据字段变量
decimal ticketcount = 0;
decimal totalcount = 0;
decimal totalsellamount = 0;
decimal totaloffamount = 0;
decimal cashpay = 0;//现金
decimal couponpay = 0;//消费券
decimal bankpay = 0;//银行卡
decimal memberpay = 0;//会员
decimal mobilepay = 0;//移动支付
decimal internalpay = 0;//内部消费
decimal otherpay = 0;//其他消费
if (table_SellMaster.Rows.Count > 0)
{
ticketcount = decimal.Parse(table_SellMaster.Rows[0]["ticketcount"].ToString());
totalcount = decimal.Parse(table_SellMaster.Rows[0]["sellmaster_count"].ToString());
totaloffamount = decimal.Parse(table_SellMaster.Rows[0]["sellmaster_offprice"].ToString());
totalsellamount = decimal.Parse(table_SellMaster.Rows[0]["sellmaster_amount"].ToString());
cashpay = decimal.Parse(table_SellMaster.Rows[0]["cashpay"].ToString());
bankpay = decimal.Parse(table_SellMaster.Rows[0]["bankpay"].ToString());
memberpay = decimal.Parse(table_SellMaster.Rows[0]["memberpay"].ToString());
couponpay = decimal.Parse(table_SellMaster.Rows[0]["couponpay"].ToString());
mobilepay = decimal.Parse(table_SellMaster.Rows[0]["mobilepay"].ToString());
internalpay = decimal.Parse(table_SellMaster.Rows[0]["internalpay"].ToString());
otherpay = decimal.Parse(table_SellMaster.Rows[0]["otherpay"].ToString());
}
//统计支付类型数据
DataTable table_Payment = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT SUM(MOBILEPAY) AS COUNT,PAYMENT_TYPE
FROM T_SELLMASTER
WHERE SERVERPARTCODE='{QualityHelper.serverpartcode}' AND
SHOPCODE='{QualityHelper.shopcode}' AND
MACHINECODE = '{QualityHelper.machinecode}' AND
SELLMASTER_DATE BETWEEN DATETIME('{time_StartDate.ToString()}') AND DATETIME('{auditTime.ToString()}')
GROUP BY PAYMENT_TYPE").Tables[0];
string payment_details = "";
//拼接移动支付详情信息字符串
for (int i = 0; i < table_Payment.Rows.Count; i++)
{
if (table_Payment.Rows[i]["COUNT"].ToString() != "0")
{
payment_details += table_Payment.Rows[i]["PAYMENT_TYPE"] + ":" + table_Payment.Rows[i]["COUNT"] + ",";
}
}
if (payment_details.Length > 0)
{
payment_details = payment_details.Substring(0, payment_details.Length - 1);
}
//生成账期表唯一标识编码
EndAccountCode = ESSupport.DataStorage.DataFunction.CreateUniqueCode(QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode);
//插入稽核数据到本地数据库
try
{
//保存稽核数据记录
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran($@"INSERT INTO T_ENDACCOUNT_NEW(ENDACCOUNT_ID,STARTDATE,ENDDATE,
SERVERPARTCODE,SHOPCODE,MACHINECODE,ENDPERSON_CODE,TICKET_COUNT,
TOTAL_COUNT,TOTAL_AMOUNT,TOTAL_OFFAMOUNT,CASHPAY,BANKPAY,COUPONPAY,
MEMBERPAY,MOBILEPAY,INTERNALPAY,CONTRIBUTION_AMOUNT,ENDACCOUNT_TYPE,
TRANSFER_STATE,ENDACCOUNT_CODE,PAYMENT_DETAILS,CASHIER_CODE,CASHIER_NAME)
VALUES({_MaxId},DATETIME('{time_StartDate.ToString()}'),DATETIME('{auditTime.ToString()}'),'{QualityHelper.serverpartcode}',
'{QualityHelper.shopcode}','{QualityHelper.machinecode}','{personCode}',{ticketcount},{totalcount},
{totalsellamount},{totaloffamount},{cashpay},{bankpay},{couponpay},{memberpay},{mobilepay},{internalpay},
{money},5,0,'{EndAccountCode}','{payment_details}','{QualityHelper.sellworkercode}','{QualityHelper.sellworkername}')");
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog($"稽核数据写入本地失败。原因:{ex.Message}\r\n" +
$"【服务区:{QualityHelper.serverpartname};门店:{QualityHelper.shopname};" +
$"收银机号:{QualityHelper.machinecode};稽核时间:{auditTime.ToString("yyyy/MM/dd HH:mm:ss")}】");
return false;
}
return true;
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("稽核数据写入失败:" + ex.Message);
return false;
}
}
#endregion
#region 方法 -> 返回稽核数据
///
/// 查询稽核结果数据
///
///
public static DataTable GetAuditTable(DateTime auditTime)
{
DataTable _AuditTable = new DataTable();
try
{
DateTime time_StartDate = (DateTime)ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT MAX(STARTDATE) AS STARTDATE
FROM T_ENDACCOUNT_NEW
WHERE SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
SHOPCODE = '{QualityHelper.shopcode}' AND
MACHINECODE = '{QualityHelper.machinecode}' AND
ENDDATE IS NULL AND ENDACCOUNT_TYPE = 1").Tables[0].Rows[0]["STARTDATE"];
_AuditTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"select a.sellworker_name as name,convert(decimal,count(*)) as counts,
isnull(sum(a.sellmaster_count),0) as numcount,
isnull(sum(a.sellmaster_amount),0) as pricrcount,
isnull(sum(a.sellmaster_offprice),0) as ratecount,
isnull(sum(a.cashpay), 0) as cashpay,
isnull(sum(case a.payment_type when 'ALIPAY' then a.mobilepay else 0 end),0) as alipay,
isnull(sum(case a.payment_type when 'WECHATPAY' then a.mobilepay else 0 end),0) as wechat,
isnull(sum(case a.payment_type when 'UNIONPAY' then a.mobilepay else 0 end),0) as unionpay
from t_sellmaster a
where a.serverpartcode = '{QualityHelper.serverpartcode}' and
a.shopcode = '{QualityHelper.shopcode}' and a.machinecode = '{QualityHelper.machinecode}' and
a.sellmaster_date between datetime('{time_StartDate}') and datetime('{auditTime.ToString("yyyy/MM/dd HH:mm:ss")}')
group by a.sellworker_name").Tables[0];
decimal tickectcout = (decimal)_AuditTable.Compute("sum(counts)", "");
decimal salecount = (decimal)_AuditTable.Compute("sum(numcount)", "");
decimal pricecount = (decimal)_AuditTable.Compute("sum(pricrcount)", "");
decimal repricecount = (decimal)_AuditTable.Compute("sum(ratecount)", "");
decimal cashpay = (decimal)_AuditTable.Compute("sum(cashpay)", "");
decimal alipay = (decimal)_AuditTable.Compute("sum(alipay)", "");
decimal wechat = (decimal)_AuditTable.Compute("sum(wechat)", "");
decimal unionpay = (decimal)_AuditTable.Compute("sum(unionpay)", "");
DataRow _DataRow = _AuditTable.NewRow();
_DataRow["name"] = "合计";
_DataRow["counts"] = tickectcout.ToString();
_DataRow["numcount"] = salecount.ToString();
_DataRow["pricrcount"] = pricecount.ToString();
_DataRow["ratecount"] = repricecount.ToString();
_DataRow["cashpay"] = cashpay;
_DataRow["alipay"] = alipay;
_DataRow["wechat"] = wechat;
_DataRow["unionpay"] = unionpay;
_AuditTable.Rows.InsertAt(_DataRow, _AuditTable.Rows.Count);
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog($"稽核数据查询失败。原因:{ex.Message}");
}
return _AuditTable;
}
#endregion
#region 方法 -> 生成结账单小票
///
/// 生成结账单
///
/// 缴款金额
/// 结账人工号
/// 结账时间
/// 账期开始时间
public static void GetCheckOut(string EndaccountCode)
{
try
{
string _SelectSql = "SELECT ISNULL(TICKET_COUNT,0) AS TICKET_COUNT,ISNULL(TOTAL_COUNT,0) AS TOTAL_COUNT," +
"ISNULL(TOTAL_OFFAMOUNT,0) AS TOTAL_OFFAMOUNT,ISNULL(TOTAL_AMOUNT,0) AS TOTAL_AMOUNT," +
"ISNULL(CASHPAY,0) AS CASHPAY,ISNULL(BANKPAY,0) AS BANKPAY,ISNULL(MEMBERPAY,0) AS MEMBERPAY," +
"ISNULL(COUPONPAY,0) AS COUPONPAY,ISNULL(MOBILEPAY,0) AS MOBILEPAY,ISNULL(INTERNALPAY,0) AS INTERNALPAY," +
"ENDPERSON_CODE,ISNULL(CONTRIBUTION_AMOUNT,0) AS CONTRIBUTION_AMOUNT,STARTDATE,ENDDATE,PAYMENT_DETAILS " +
"FROM T_ENDACCOUNT_NEW WHERE SERVERPARTCODE = '" + QualityHelper.serverpartcode +
"' AND SHOPCODE = '" + QualityHelper.shopcode + "' AND MACHINECODE = '" + QualityHelper.machinecode +
"' AND ENDACCOUNT_CODE = '" + EndaccountCode + "'";
DataTable _DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0];
if (_DataTable.Rows.Count > 0)
{
List _PrintList = new List();
_PrintList.Add(PrintHelper.CreateCenterLine(QualityHelper.serverpartname));
_PrintList.Add(PrintHelper.CreateCenterLine("收银结账总单"));
_PrintList.Add(PrintHelper.CreateSideLine("结账人员:", $"[{_DataTable.Rows[0]["ENDPERSON_CODE"].ToString()}]"));
string EndPersonName = ESSupport.DataStorage.DataFunction.QueryPersonName(QualityHelper.serverpartcode, _DataTable.Rows[0]["ENDPERSON_CODE"].ToString());
_PrintList.Add(PrintHelper.CreateRightLine(EndPersonName));
_PrintList.Add(PrintHelper.CreateSideLine("结账门店:", $"[{QualityHelper.shopcode}]"));
_PrintList.Add(PrintHelper.CreateRightLine(ESSupport.DataStorage.DataFunction.QueryShopName(QualityHelper.serverpartcode, QualityHelper.shopcode)));
_PrintList.Add(PrintHelper.CreateSideLine("收银机号:", QualityHelper.machinecode));
_PrintList.Add("账期开始时间:");
DateTime.TryParse(_DataTable.Rows[0]["STARTDATE"].ToString(), out DateTime StartTime);
_PrintList.Add(PrintHelper.CreateRightLine(StartTime.ToString("yyyy/MM/dd HH:mm:ss")));
_PrintList.Add("账期结束时间:");
DateTime.TryParse(_DataTable.Rows[0]["ENDDATE"].ToString(), out DateTime EndTime);
_PrintList.Add(PrintHelper.CreateRightLine(EndTime.ToString("yyyy/MM/dd HH:mm:ss")));
decimal.TryParse(_DataTable.Rows[0]["CASHPAY"].ToString(), out decimal cashpay);
decimal.TryParse(_DataTable.Rows[0]["COUPONPAY"].ToString(), out decimal couponpay);
decimal.TryParse(_DataTable.Rows[0]["BANKPAY"].ToString(), out decimal bankpay);
decimal.TryParse(_DataTable.Rows[0]["MOBILEPAY"].ToString(), out decimal mobilepay);
decimal.TryParse(_DataTable.Rows[0]["MEMBERPAY"].ToString(), out decimal memberpay);
//decimal.TryParse(_DataTable.Rows[0]["ENDDATE"].ToString(), out decimal otherpay);
decimal.TryParse(_DataTable.Rows[0]["INTERNALPAY"].ToString(), out decimal internalpay);
decimal.TryParse(_DataTable.Rows[0]["TICKET_COUNT"].ToString(), out decimal ticketcount);
decimal.TryParse(_DataTable.Rows[0]["TOTAL_OFFAMOUNT"].ToString(), out decimal offprice);
decimal.TryParse(_DataTable.Rows[0]["TOTAL_AMOUNT"].ToString(), out decimal factamount);
decimal.TryParse(_DataTable.Rows[0]["TOTAL_COUNT"].ToString(), out decimal sellcount);
decimal.TryParse(_DataTable.Rows[0]["CONTRIBUTION_AMOUNT"].ToString(), out decimal money);
_PrintList.Add("交易总额:");
//_PrintList.Add(PrintHelper.CreateSideLine(" 现金交易:", (couponpay+cashpay).ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 现金交易:", cashpay.ToString("F2") + "元"));
if (mobilepay != 0)
{
_PrintList.Add(PrintHelper.CreateSideLine(" 移动支付:", mobilepay.ToString("F2") + "元"));
}
if (memberpay != 0)
{
_PrintList.Add(PrintHelper.CreateSideLine(" 会员支付:", memberpay.ToString("F2") + "元"));
}
if (internalpay != 0 || bankpay != 0)
{
_PrintList.Add(PrintHelper.CreateSideLine(" 其他支付:", (internalpay + bankpay).ToString("F2") + "元"));
}
_PrintList.Add(" ");
_PrintList.Add(PrintHelper.CreateSideLine("现金差额:", (money - cashpay).ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 缴款金额:", money.ToString("F2") + "元"));
//_PrintList.Add(PrintHelper.CreateSideLine(" 现金交易:",(couponpay+ cashpay).ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 现金交易:", cashpay.ToString("F2") + "元"));
if (QualityHelper.serverpartcode == "888888" ||
(QualityHelper.serverpartcode == "330005" && QualityHelper.shopcode == "021002"))
{
try
{
DataTable _MemberPayCheck = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT COUNT(TICKET_CODE) AS TICKETCOUNT,
SUM(TICKET_AMOUNT) AS TICKETAMOUNT
FROM T_MEMBERSHIP_PAY
WHERE MEMBERSHIPPAY_RESULT = 0 AND
SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
SHOPCODE = '{QualityHelper.shopcode}' AND
MACHINECODE = '{QualityHelper.machinecode}' AND
MEMBERSHIPPAY_DATE BETWEEN DATETIME('{StartTime.ToString()}') AND
DATETIME('{EndTime.ToString()}') ").Tables[0];
if (_MemberPayCheck.Rows.Count > 0)
{
_PrintList.Add(" ");
_PrintList.Add("备注:");
decimal.TryParse(_MemberPayCheck.Rows[0]["TICKETCOUNT"].ToString(), out decimal _TicketCount);
if (_TicketCount > 0)
{
_PrintList.Add(" 会员交易结果校验失败,会员支付结果请以管理平台为准。");
}
else
{
_PrintList.Add(" 会员交易结果校验成功。");
}
}
}
catch { }
}
_PrintList.Add("-".PadLeft(32, '-'));
//_PrintList.Add(PrintHelper.CreateSideLine("现金交易:", (couponpay + cashpay).ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine("现金交易合计:", cashpay.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 现金金额:", cashpay.ToString("F2") + "元"));
if (couponpay != 0)
{
string sql = "SELECT SUM(COUPONPAY) AS COUPONPAY,COUPON_TYPE FROM T_SELLMASTER " +
"WHERE SERVERPARTCODE='" + QualityHelper.serverpartcode + "' AND SHOPCODE = '" + QualityHelper.shopcode +
"' AND MACHINECODE = '" + QualityHelper.machinecode + "' AND SELLMASTER_DATE BETWEEN DATETIME('" +
StartTime.ToString() + "') AND DATETIME('" + EndTime.ToString() + "') GROUP BY COUPON_TYPE";
try
{
DataTable dt = ESSupport.Lib.SyBaseHelper.QueryOdbc(sql).Tables[0];
if (dt.Rows.Count > 0)
{
_PrintList.Add("优惠券合计:");
for (int i = 0; i < dt.Rows.Count; i++)
{
switch (dt.Rows[i]["coupon_type"].ToString())
{
case "VipCoupon":
_PrintList.Add(PrintHelper.CreateSideLine(" 电子优惠券:", decimal.Parse(dt.Rows[i]["couponpay"].ToString()).ToString("F2") + "元"));
break;
case "BusCoupons":
_PrintList.Add(PrintHelper.CreateSideLine(" 大巴券:", decimal.Parse(dt.Rows[i]["couponpay"].ToString()).ToString("F2") + "元"));
break;
case "GroupPay":
_PrintList.Add(PrintHelper.CreateSideLine(" 团队餐:", decimal.Parse(dt.Rows[i]["couponpay"].ToString()).ToString("F2") + "元"));
break;
case "MealVoucher":
_PrintList.Add(PrintHelper.CreateSideLine(" 消费券:", decimal.Parse(dt.Rows[i]["couponpay"].ToString()).ToString("F2") + "元"));
break;
}
}
}
}
catch (Exception ex)
{
}
}
_PrintList.Add(PrintHelper.CreateSideLine("移动支付合计:", mobilepay.ToString("f2") + "元"));
if (mobilepay != 0 && !string.IsNullOrWhiteSpace(_DataTable.Rows[0]["PAYMENT_DETAILS"].ToString()))
{
string[] _strPaymentList = _DataTable.Rows[0]["PAYMENT_DETAILS"].ToString().Trim().Split(',');
for (int i = 0; i < _strPaymentList.Count(); i++)
{
string[] _strPayment = _strPaymentList[i].Split(':');
if (_strPayment.Count() > 1)
{
switch (_strPayment[0].ToUpper())
{
case "WECHATPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 微信支付:", decimal.Parse(_strPayment[1]).ToString("F2") + "元"));
break;
case "ALIPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 支付宝:", decimal.Parse(_strPayment[1]).ToString("F2") + "元"));
break;
case "QPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" QQ钱包:", decimal.Parse(_strPayment[1]).ToString("F2") + "元"));
break;
case "JDPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 京东钱包:", decimal.Parse(_strPayment[1]).ToString("F2") + "元"));
break;
case "BESTPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 翼支付:", decimal.Parse(_strPayment[1]).ToString("F2") + "元"));
break;
case "UNIONPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 云闪付:", decimal.Parse(_strPayment[1]).ToString("F2") + "元"));
break;
}
}
}
}
_PrintList.Add(PrintHelper.CreateSideLine("会员支付合计:", memberpay.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine("其他支付合计:", (bankpay + internalpay).ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 银行卡金额:", bankpay.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(QualityHelper.enterprisevip == "1" ? " 企业会员金额:" : " 内部消费金额:", internalpay.ToString("F2") + "元"));
//_PrintList.Add(PrintHelper.CreateSideLine(" 其他消费金额:", otherpay.ToString("F2") + "元"));
_PrintList.Add(" ");
_PrintList.Add(PrintHelper.CreateSideLine("交易总金额:", (cashpay + couponpay +
bankpay + mobilepay + internalpay + memberpay).ToString("F2") + "元"));
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add(PrintHelper.CreateSideLine("总客单数量:", ticketcount.ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine("总销售数量:", sellcount.ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine("总销售金额:", factamount.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine("总优惠金额:", offprice.ToString("F2") + "元"));
//付费会员折扣统计
try
{
DataTable _MemberRate = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT A.MEMBERSHIPPAY_TYPE,COUNT(1) AS TICKETCOUNT,
ISNULL(SUM(A.TICKET_AMOUNT),0) AS TOTALAMOUNT
FROM T_MEMBERSHIP_PAY A
WHERE UPPER(A.MEMBERSHIPPAY_TYPE) = 'BENEFITS' AND
A.SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
A.SHOPCODE = '{QualityHelper.shopcode}' AND
A.MACHINECODE = '{QualityHelper.machinecode}' AND
A.MEMBERSHIPPAY_DATE BETWEEN DATETIME('{StartTime.ToString()}') AND DATETIME('{EndTime.ToString()}')
GROUP BY A.MEMBERSHIPPAY_TYPE").Tables[0];
if (_MemberRate.Rows.Count > 0)
{
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add("会员折扣明细:");
_PrintList.Add(PrintHelper.CreateSideLine(" 优惠客单数:", decimal.Parse(_MemberRate.Rows[0]["TICKETCOUNT"].ToString()).ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine(" 优惠总金额:", decimal.Parse(_MemberRate.Rows[0]["TOTALAMOUNT"].ToString()).ToString("F2") + "元"));
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("会员折扣打印异常:" + ex.Message);
}
try
{
DataTable _CouponRate = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT COMMODITY_NAME AS COUPONNAME,
SUM(TICKTE_COUNT) AS TICKETCOUNT,
SUM(TOTAL_AMOUNT * -1) AS TOTALCOUPONAMOUNT
FROM T_COMMODITYSALE_NEW
WHERE COMMODITY_CODE IN ('99999996','99999997','99999998','99999999') AND
ENDACCOUNT_CODE = '{EndaccountCode}'
GROUP BY COMMODITY_CODE,COMMODITY_NAME").Tables[0];
if (_CouponRate.Rows.Count > 0)
{
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add("不计营收优惠明细:");
foreach (DataRow _CouponRow in _CouponRate.Rows)
{
_PrintList.Add($" {_CouponRow["COUPONNAME"].ToString()}:");
_PrintList.Add(PrintHelper.CreateSideLine(" 使用数量:", decimal.Parse(_CouponRow["TICKETCOUNT"].ToString()).ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine(" 抵减金额:", decimal.Parse(_CouponRow["TOTALCOUPONAMOUNT"].ToString()).ToString("F2") + "元"));
}
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("不计营收优惠打印异常:" + ex.Message);
}
try
{
DataTable _CouponTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT A.COUPONNAME,A.COUPONTEXT,COUNT(1) AS TICKETCOUNT,
SUM(A.COUPONAMOUNT) AS TOTALCOUPONAMOUNT
FROM T_COUPONPAY A
WHERE A.SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
A.SHOPCODE = '{QualityHelper.shopcode}' AND
A.MACHINECODE = '{QualityHelper.machinecode}' AND
A.COUPONPAY_STATE = 1010 AND
A.COUPONPAY_DATE BETWEEN DATETIME('{StartTime.ToString()}') AND DATETIME('{EndTime.ToString()}')
GROUP BY A.COUPONNAME,A.COUPONTEXT").Tables[0];
if (_CouponTable.Rows.Count > 0)
{
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add("电子优惠券明细:");
foreach (DataRow _CouponRow in _CouponTable.Rows)
{
_PrintList.Add($" {_CouponRow["COUPONNAME"].ToString()}:");
_PrintList.Add(PrintHelper.CreateSideLine(" 使用数量:", decimal.Parse(_CouponRow["TICKETCOUNT"].ToString()).ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine(" 抵减金额:", decimal.Parse(_CouponRow["TOTALCOUPONAMOUNT"].ToString()).ToString("F2") + "元"));
}
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("电子优惠券打印异常:" + ex.Message);
}
try
{
_SelectSql = "SELECT ISNULL(SUM(TOTAL_COUNT),0) AS TOTAL_COUNT,ISNULL(SUM(TOTAL_AMOUNT),0) AS TOTAL_AMOUNT " +
"FROM T_COMMODITYSALE_NEW WHERE COMMODITY_TYPE LIKE '%烟%' AND ENDACCOUNT_CODE = '" + EndaccountCode + "'";
DataTable _CommoditySaleTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0];
if (_CommoditySaleTable.Rows.Count > 0)
{
decimal _Count = decimal.Parse(_CommoditySaleTable.Rows[0]["TOTAL_COUNT"].ToString());
decimal _Amount = decimal.Parse(_CommoditySaleTable.Rows[0]["TOTAL_AMOUNT"].ToString());
if (_Count != 0)
{
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add("香烟类总计:");
_PrintList.Add(PrintHelper.CreateSideLine(" 销售数量:", _Count.ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine(" 销售金额:", _Amount.ToString("F2") + "元"));
_SelectSql = string.Format(
@"SELECT ISNULL(SUM(TOTALCOUNT),0) AS TOTALCOUNT,ISNULL(SUM(TOTALSELLAMOUNT),0) AS TOTALSELLAMOUNT
FROM T_COMMODITYSALE_EXTAR WHERE COMMODITY_TYPE LIKE '%烟%' AND FLAG = 5000 AND STARTDATE >= DATETIME('{0}') AND
ENDDATE <= DATETIME('{1}') AND SERVERPARTCODE = '{2}' AND SHOPCODE = '{3}' AND MACHINECODE = '{4}'",
StartTime.ToString(), EndTime.ToString(), QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode);
DataTable _CommoditySaleMobile = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0];
if (_CommoditySaleMobile.Rows.Count > 0)
{
decimal _MobileAmount = decimal.Parse(_CommoditySaleMobile.Rows[0]["TOTALSELLAMOUNT"].ToString());
_PrintList.Add(PrintHelper.CreateSideLine(" 移动支付:", _MobileAmount.ToString("F2") + "元"));
}
}
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("香烟打印异常:" + ex.Message);
}
try
{
_SelectSql = "SELECT ISNULL(SUM(TOTAL_COUNT),0) AS TOTAL_COUNT,ISNULL(SUM(TOTAL_AMOUNT),0) AS TOTAL_AMOUNT " +
"FROM T_COMMODITYSALE_NEW WHERE COMMODITY_TYPE LIKE '%客房%' AND ENDACCOUNT_CODE = '" + EndaccountCode + "'";
DataTable _CommoditySaleTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0];
if (_CommoditySaleTable.Rows.Count > 0)
{
decimal _Count = decimal.Parse(_CommoditySaleTable.Rows[0]["TOTAL_COUNT"].ToString());
decimal _Amount = decimal.Parse(_CommoditySaleTable.Rows[0]["TOTAL_AMOUNT"].ToString());
if (_Count != 0)
{
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add("客房类总计:");
_PrintList.Add(PrintHelper.CreateSideLine(" 销售数量:", _Count.ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine(" 销售金额:", _Amount.ToString("F2") + "元"));
_SelectSql = string.Format(
@"SELECT ISNULL(SUM(TOTALCOUNT),0) AS TOTALCOUNT,ISNULL(SUM(TOTALSELLAMOUNT),0) AS TOTALSELLAMOUNT
FROM T_COMMODITYSALE_EXTAR WHERE COMMODITY_TYPE LIKE '%客房%' AND FLAG = 5000 AND STARTDATE >= DATETIME('{0}') AND
ENDDATE <= DATETIME('{1}') AND SERVERPARTCODE = '{2}' AND SHOPCODE = '{3}' AND MACHINECODE = '{4}'",
StartTime.ToString(), EndTime.ToString(), QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode);
DataTable _CommoditySaleMobile = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0];
if (_CommoditySaleMobile.Rows.Count > 0)
{
decimal _MobileAmount = decimal.Parse(_CommoditySaleMobile.Rows[0]["TOTALSELLAMOUNT"].ToString());
_PrintList.Add(PrintHelper.CreateSideLine(" 移动支付:", _MobileAmount.ToString("F2") + "元"));
}
}
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("客房打印异常:" + ex.Message);
}
try
{
DataTable _OnlineSaleTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT COUNT(*) AS TICKETCOUNT,
ISNULL(SUM(SELLMASTER_COUNT),0) AS SELLMASTER_COUNT,
ISNULL(SUM(SELLMASTER_OFFPRICE),0) AS SELLMASTER_OFFPRICE,
ISNULL(SUM(SELLMASTER_AMOUNT),0) AS SELLMASTER_AMOUNT,
ISNULL(SUM(CASHPAY),0) AS CASHPAY,
ISNULL(SUM(BANKPAY),0) AS BANKPAY,
ISNULL(SUM(MEMBERPAY),0) AS MEMBERPAY,
ISNULL(SUM(COUPONPAY),0) AS COUPONPAY,
ISNULL(SUM(MOBILEPAY),0) AS MOBILEPAY,
ISNULL(SUM(INTERNALPAY),0) AS INTERNALPAY,
ISNULL(SUM(OTHERPAY),0) AS OTHERPAY
FROM T_SELLMASTER
WHERE SERVERPARTCODE='{QualityHelper.serverpartcode}' AND
SHOPCODE='{QualityHelper.shopcode}' AND
MACHINECODE='{QualityHelper.machinecode}' AND
SELLMASTER_DATE BETWEEN DATETIME('{StartTime.ToString("yyyy/MM/dd HH:mm:ss")}') AND
DATETIME('{EndTime.ToString("yyyy/MM/dd HH:mm:ss")}') AND
UPPER(COUPON_TYPE) = 'ONLINEPAY'").Tables[0];
if (_OnlineSaleTable.Rows.Count > 0)
{
decimal _TicketCount = decimal.Parse(_OnlineSaleTable.Rows[0]["TICKETCOUNT"].ToString());
decimal _SaleCount = decimal.Parse(_OnlineSaleTable.Rows[0]["SELLMASTER_COUNT"].ToString());
decimal _Amount = decimal.Parse(_OnlineSaleTable.Rows[0]["SELLMASTER_AMOUNT"].ToString());
if (_SaleCount != 0)
{
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add("在线订单总计:");
_PrintList.Add(PrintHelper.CreateSideLine(" 订单笔数:", _TicketCount.ToString("F0")));
_PrintList.Add(PrintHelper.CreateSideLine(" 销售数量:", _SaleCount.ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine(" 销售金额:", _Amount.ToString("F2") + "元"));
}
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("在线订单打印异常:" + ex.Message);
}
try
{
_SelectSql = "SELECT ISNULL(SUM(TOTAL_COUNT),0) AS TOTAL_COUNT,ISNULL(SUM(TOTAL_AMOUNT),0) AS TOTAL_AMOUNT " +
"FROM T_COMMODITYSALE_NEW WHERE COMMODITY_CODE = '00000000' AND ENDACCOUNT_CODE = '" + EndaccountCode + "'";
DataTable _CommoditySaleTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0];
if (_CommoditySaleTable.Rows.Count > 0)
{
decimal _Count = decimal.Parse(_CommoditySaleTable.Rows[0]["TOTAL_COUNT"].ToString());
decimal _Amount = decimal.Parse(_CommoditySaleTable.Rows[0]["TOTAL_AMOUNT"].ToString());
if (_Count != 0)
{
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add("稽核补录总计:");
_PrintList.Add(PrintHelper.CreateSideLine(" 销售数量:", _Count.ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine(" 销售金额:", _Amount.ToString("F2") + "元"));
_SelectSql = string.Format(
@"SELECT ISNULL(SUM(TOTALCOUNT),0) AS TOTALCOUNT,ISNULL(SUM(TOTALSELLAMOUNT),0) AS TOTALSELLAMOUNT
FROM T_COMMODITYSALE_EXTAR WHERE COMMODITY_CODE LIKE '00000000' AND FLAG = 5000 AND STARTDATE >= DATETIME('{0}') AND
ENDDATE <= DATETIME('{1}') AND SERVERPARTCODE = '{2}' AND SHOPCODE = '{3}' AND MACHINECODE = '{4}'",
StartTime.ToString(), EndTime.ToString(), QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode);
DataTable _CommoditySaleMobile = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0];
if (_CommoditySaleMobile.Rows.Count > 0)
{
decimal _MobileAmount = decimal.Parse(_CommoditySaleMobile.Rows[0]["TOTALSELLAMOUNT"].ToString());
_PrintList.Add(PrintHelper.CreateSideLine(" 移动支付:", _MobileAmount.ToString("F2") + "元"));
}
}
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("稽核补录打印异常:" + ex.Message);
}
_SelectSql = "SELECT STARTDATE,ENDDATE,SELLWORKER_CODE,ISNULL(TICKET_COUNT,0) AS TICKET_COUNT," +
"ISNULL(TOTAL_COUNT,0) AS TOTAL_COUNT,ISNULL(TOTAL_AMOUNT,0) AS TOTAL_AMOUNT,ISNULL(TOTAL_OFFAMOUNT,0)" +
" AS TOTAL_OFFAMOUNT,ISNULL(CASHPAY,0) AS CASHPAY,ISNULL(BANKPAY,0) AS BANKPAY,ISNULL(MEMBERPAY,0) AS MEMBERPAY," +
"ISNULL(COUPONPAY,0) AS COUPONPAY,ISNULL(MOBILEPAY,0) AS MOBILEPAY,ISNULL(INTERNALPAY,0) AS INTERNALPAY," +
"ISNULL(OTHERPAY,0) AS OTHERPAY,ISNULL(CONTRIBUTION_AMOUNT,0) AS CONTRIBUTION_AMOUNT,PAYMENT_DETAILS " +
"FROM T_PERSONSELL_NEW WHERE SERVERPARTCODE = '" + QualityHelper.serverpartcode + "' AND SHOPCODE = '" +
QualityHelper.shopcode + "' AND MACHINECODE = '" + QualityHelper.machinecode + "' AND ENDACCOUNT_CODE = '" +
EndaccountCode + "' ORDER BY WOKER_NUMBER";
DataTable PersonSellTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0];
if (PersonSellTable.Rows.Count > 0)
{
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add("收银人员明细:");
for (int i = 0; i < PersonSellTable.Rows.Count; i++)
{
string SellWorkName = ESSupport.DataStorage.DataFunction.QueryPersonName(QualityHelper.serverpartcode, PersonSellTable.Rows[i]["SELLWORKER_CODE"].ToString());
decimal.TryParse(PersonSellTable.Rows[i]["CASHPAY"].ToString(), out cashpay);
decimal.TryParse(PersonSellTable.Rows[i]["COUPONPAY"].ToString(), out couponpay);
decimal.TryParse(PersonSellTable.Rows[i]["BANKPAY"].ToString(), out bankpay);
decimal.TryParse(PersonSellTable.Rows[i]["MOBILEPAY"].ToString(), out mobilepay);
decimal.TryParse(PersonSellTable.Rows[i]["MEMBERPAY"].ToString(), out memberpay);
//decimal.TryParse(_DataTable.Rows[0]["ENDDATE"].ToString(), out decimal otherpay);
decimal.TryParse(PersonSellTable.Rows[i]["INTERNALPAY"].ToString(), out internalpay);
decimal.TryParse(PersonSellTable.Rows[i]["TICKET_COUNT"].ToString(), out ticketcount);
decimal.TryParse(PersonSellTable.Rows[i]["TOTAL_OFFAMOUNT"].ToString(), out offprice);
decimal.TryParse(PersonSellTable.Rows[i]["TOTAL_AMOUNT"].ToString(), out factamount);
decimal.TryParse(PersonSellTable.Rows[i]["TOTAL_COUNT"].ToString(), out sellcount);
decimal.TryParse(PersonSellTable.Rows[i]["CONTRIBUTION_AMOUNT"].ToString(), out money);
//decimal.TryParse(_DataTable.Rows[0]["OTHERPAY"].ToString(), out decimal otherpay);
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add(PrintHelper.CreateSideLine("收银人员:", "[" + PersonSellTable.Rows[i]["SELLWORKER_CODE"] + "]" + SellWorkName));
_PrintList.Add(PrintHelper.CreateSideLine("客单数量:", ticketcount.ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine("销售数量:", sellcount.ToString("F2")));
_PrintList.Add(PrintHelper.CreateSideLine("销售金额:", factamount.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine("优惠金额:", offprice.ToString("F2") + "元"));
//_PrintList.Add(PrintHelper.CreateSideLine("现金交易合计:", (cashpay + couponpay).ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine("现金交易合计:", cashpay.ToString("F2") + "元"));
if (mobilepay != 0)
{
_PrintList.Add(PrintHelper.CreateSideLine("移动支付合计:", mobilepay.ToString("F2") + "元"));
}
//if (bankpay != 0)
//{
// _PrintList.Add(PrintHelper.CreateSideLine("银行卡合计:", bankpay.ToString("F2") + "元"));
//}
if (memberpay != 0)
{
_PrintList.Add(PrintHelper.CreateSideLine("会员支付合计:", memberpay.ToString("F2") + "元"));
}
if (couponpay != 0)
{
_PrintList.Add(PrintHelper.CreateSideLine("优惠券合计:", couponpay.ToString("F2") + "元"));
}
if (internalpay != 0 || bankpay != 0)
{
_PrintList.Add(PrintHelper.CreateSideLine("其他支付合计:", (internalpay + bankpay).ToString("F2") + "元"));
}
//if (internalpay != 0)
//{
// _PrintList.Add(PrintHelper.CreateSideLine(QualityHelper.enterprisevip == "1" ? "企业会员合计:" : "内部消费合计:", internalpay.ToString("F2") + "元"));
//}
_PrintList.Add(PrintHelper.CreateSideLine("现金差额:", (money - cashpay).ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 缴款金额:", money.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 现金交易:", cashpay.ToString("F2") + "元"));
_PrintList.Add("-".PadLeft(32, '-'));
//_PrintList.Add(PrintHelper.CreateSideLine("现金交易合计:", (cashpay + couponpay).ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine("现金交易合计:", cashpay.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 现金金额:", cashpay.ToString("F2") + "元"));
if (couponpay != 0)
{
string sql = "SELECT ISNULL(SUM(COUPONPAY),0) AS COUPONPAY,COUPON_TYPE " +
"FROM T_SELLMASTER WHERE SERVERPARTCODE = '" + QualityHelper.serverpartcode +
"' AND SHOPCODE = '" + QualityHelper.shopcode + "' AND MACHINECODE = '" +
QualityHelper.machinecode + "' AND SELLMASTER_DATE BETWEEN DATETIME('" +
PersonSellTable.Rows[i]["STARTDATE"] + "') AND DATETIME('" +
PersonSellTable.Rows[i]["ENDDATE"] + "') GROUP BY COUPON_TYPE";
try
{
DataTable _datatable = ESSupport.Lib.SyBaseHelper.QueryOdbc(sql).Tables[0];
if (_datatable.Rows.Count > 0)
{
_PrintList.Add("优惠券合计:");
for (int l = 0; l < _datatable.Rows.Count; l++)
{
switch (_datatable.Rows[l]["COUPON_TYPE"].ToString().ToUpper())
{
case "VIPCOUPON":
_PrintList.Add(PrintHelper.CreateSideLine(" 电子优惠券:", decimal.Parse(_datatable.Rows[i]["couponpay"].ToString()).ToString("F2") + "元"));
break;
case "BUSCOUPONS":
_PrintList.Add(PrintHelper.CreateSideLine(" 大巴券:", decimal.Parse(_datatable.Rows[l]["COUPONPAY"].ToString()).ToString("F2") + "元"));
break;
case "GROUPPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 团队餐:", decimal.Parse(_datatable.Rows[l]["COUPONPAY"].ToString()).ToString("F2") + "元"));
break;
case "MEALVOUCHER":
_PrintList.Add(PrintHelper.CreateSideLine(" 消费券:", decimal.Parse(_datatable.Rows[i]["couponpay"].ToString()).ToString("F2") + "元"));
break;
}
}
}
}
catch (Exception ex)
{
}
}
_PrintList.Add(PrintHelper.CreateSideLine("移动支付合计:", mobilepay.ToString("F2") + "元"));
if (mobilepay != 0 && !string.IsNullOrWhiteSpace(PersonSellTable.Rows[0]["PAYMENT_DETAILS"].ToString()))
{
string[] _strArrayList = PersonSellTable.Rows[i]["PAYMENT_DETAILS"].ToString().Trim().Split(',');
for (int j = 0; j < _strArrayList.Count(); j++)
{
string[] _strArray = _strArrayList[j].Trim().Split(':');
if (_strArray.Count() > 1)
{
switch (_strArray[0].ToUpper())
{
case "WECHATPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 微信支付:", decimal.Parse(_strArray[1]).ToString("F2") + "元"));
break;
case "ALIPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 支付宝支付:", decimal.Parse(_strArray[1]).ToString("F2") + "元"));
break;
case "QPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" QQ钱包:", decimal.Parse(_strArray[1]).ToString("F2") + "元"));
break;
case "JDPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 京东钱包:", decimal.Parse(_strArray[1]).ToString("F2") + "元"));
break;
case "BESTPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 翼支付:", decimal.Parse(_strArray[1]).ToString("F2") + "元"));
break;
case "UNIONPAY":
_PrintList.Add(PrintHelper.CreateSideLine(" 云闪付:", decimal.Parse(_strArray[1]).ToString("F2") + "元"));
break;
}
}
}
}
_PrintList.Add(PrintHelper.CreateSideLine("其他支付合计:", (internalpay + bankpay).ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine(" 银行卡支付:", bankpay.ToString("F2") + "元"));
if (internalpay != 0)
{
_PrintList.Add(PrintHelper.CreateSideLine(QualityHelper.enterprisevip == "1" ? " 企业会员支付:" : " 内部消费支付:", internalpay.ToString("F2") + "元"));
}
_PrintList.Add(" ");
_PrintList.Add(PrintHelper.CreateSideLine("工班交易合计:", (cashpay + couponpay +
bankpay + mobilepay + internalpay + memberpay).ToString("f2") + "元"));
}
}
PrintHelper.PrintList(_PrintList, int.Parse(QualityHelper.jbprint_num), int.Parse(QualityHelper.paper_walk), false);
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("结账总单打印失败:" + ex.ToString());
}
}
#endregion
#region 方法 -> 生成账期日结营收数据
///
/// 生成账期日结营收数据
///
/// 缴款金额
/// 结账人工号
public static bool CheckOutData(decimal Contribution, string EndpersonCode,DateTime endDate)
{
string _EndDate = endDate.ToString();
string _StartDate = "";
string _EndaccountCode = "";
string _ClassStartDate = "";
string _SellWorkerCode = EndpersonCode;
string _EndAccountID = "";
string _PersonSellID = "";
try
{
//获取当前账期信息(账期唯一标识编码、账期开始时间)
DataTable table_EndAccount = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT ENDACCOUNT_ID,ENDACCOUNT_CODE,STARTDATE
FROM T_ENDACCOUNT_NEW
WHERE SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
SHOPCODE = '{QualityHelper.shopcode}' AND
MACHINECODE = '{QualityHelper.machinecode}' AND
ENDACCOUNT_TYPE = 1 AND ENDDATE IS NULL").Tables[0];
_EndAccountID = table_EndAccount.Rows[0]["ENDACCOUNT_ID"].ToString();
_StartDate = table_EndAccount.Rows[0]["STARTDATE"].ToString();
_EndaccountCode = table_EndAccount.Rows[0]["ENDACCOUNT_CODE"].ToString();
//获取当前工班信息(收银员、工班开始时间)
DataTable table_PersonSell = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT PERSONSELL_ID,STARTDATE,SELLWORKER_CODE
FROM T_PERSONSELL_NEW
WHERE ENDACCOUNT_CODE = '{_EndaccountCode}' AND
SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
SHOPCODE = '{QualityHelper.shopcode}' AND
MACHINECODE = '{QualityHelper.machinecode}' AND
ENDDATE IS NULL ORDER BY PERSONSELL_ID DESC").Tables[0];
_PersonSellID = table_PersonSell.Rows[0]["PERSONSELL_ID"].ToString();
_ClassStartDate = table_PersonSell.Rows[0]["STARTDATE"].ToString();
_SellWorkerCode = table_PersonSell.Rows[0]["SELLWORKER_CODE"].ToString();
//获取账期内已结束工班的缴款金额之和
decimal contributionAmount = 0;
DataTable table_Contribution = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT ISNULL(SUM(CONTRIBUTION_AMOUNT),0) AS CONTRIBUTION_AMOUNT
FROM T_PERSONSELL_NEW
WHERE SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
SHOPCODE = '{QualityHelper.shopcode}' AND
MACHINECODE = '{QualityHelper.machinecode}' AND
ENDACCOUNT_CODE = '{_EndaccountCode}' AND ENDDATE IS NOT NULL").Tables[0];
decimal.TryParse(table_Contribution.Rows[0]["CONTRIBUTION_AMOUNT"].ToString(), out contributionAmount);
//开始进行结账操作
if (!GetDateData(_EndaccountCode, _StartDate, _EndDate, EndpersonCode, Contribution, _EndAccountID))
{
return false;
}
ESSupport.Lib.LogHelper.WriteServiceLog("日结账操作完成。\r\n" +
$"【服务区:{QualityHelper.serverpartname};门店:{QualityHelper.shopname};" +
$"收银机号:{QualityHelper.machinecode};结账时间:{_EndDate}】\r\n" +
$"///-----------------------------------记录完成----------------------------------///");
try
{
//统计账期内异常稽核情况
AbnormalRecord.GetCheckoutEx(QualityHelper.serverpartcode, QualityHelper.shopcode,
QualityHelper.machinecode, Convert.ToDateTime(_StartDate), Convert.ToDateTime(_EndDate));
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog($"账期内异常稽核记录统计失败。原因:{ex.Message}\r\n" +
$"【服务区:{QualityHelper.serverpartname};门店:{QualityHelper.shopname};" +
$"收银机号:{QualityHelper.machinecode};结账时间:{_EndDate}】");
}
try
{
//结账时生成账期相关数据文件压缩包
ESSupport.ZipFile.PosDataZipFile zip_PosDataZipFile = new ESSupport.ZipFile.PosDataZipFile(
QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode);
zip_PosDataZipFile.CreateEndDataZipFile(_EndaccountCode, DateTime.Parse(_StartDate), DateTime.Parse(_EndDate));
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog($"账期相关数据文件压缩包打包失败。原因:{ex.Message}\r\n" +
$"【服务区:{QualityHelper.serverpartname};门店:{QualityHelper.shopname};" +
$"收银机号:{QualityHelper.machinecode};结账时间:{_EndDate}】");
}
return true;
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog($"日结账操作失败。原因:{ex.Message}\r\n" +
$"【服务区:{QualityHelper.serverpartname};门店:{QualityHelper.shopname};" +
$"收银机号:{QualityHelper.machinecode};结账时间:{_EndDate}】");
return false;
}
}
#endregion
#region 方法 -> 生成单品报表
///
/// 生成单品报表
///
/// 开始时间
/// 结束时间
public static void GetProduct(string endaccount_code, string startdate, string enddate, string productType = "")
{
try
{
DataTable _DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT A.WOKER_NUMBER,A.COMMODITY_NAME,A.COMMODITY_CODE,
SUM(A.TOTAL_COUNT) AS TOTALCOUNT,SUM(A.TOTAL_AMOUNT) AS TOTALSELLAMOUNT
FROM T_COMMODITYSALE_NEW A
WHERE A.ENDACCOUNT_CODE = '{endaccount_code}'
{(productType == "" ? "" : $@" AND A.COMMODITY_TYPE = '{productType}' ")}
GROUP BY A.COMMODITY_NAME,A.COMMODITY_CODE,A.WOKER_NUMBER").Tables[0];
List _PrintList = new List();
_PrintList.Add(PrintHelper.CreateCenterLine("单品销售明细"));
_PrintList.Add(PrintHelper.CreateSideLine("服务区名:", QualityHelper.serverpartname));
_PrintList.Add(PrintHelper.CreateSideLine("门店名称:", ESSupport.DataStorage.DataFunction.QueryShopName(QualityHelper.serverpartcode, QualityHelper.shopcode)));
_PrintList.Add(PrintHelper.CreateSideLine("开始时间:", startdate));
_PrintList.Add(PrintHelper.CreateSideLine("结束时间:", enddate));
_PrintList.Add("-".PadLeft(32, '-'));
decimal pricecount = 0;
decimal count = 0;
for (int i = 0; i < _DataTable.Rows.Count; i++)
{
_PrintList.Add("商品名称:" + _DataTable.Rows[i]["COMMODITY_NAME"].ToString());
_PrintList.Add(PrintHelper.CreateSideLine("销售数量:" + decimal.Parse(_DataTable.Rows[i]["TOTALCOUNT"].ToString()).ToString("F2") + "",
"销售金额:" + decimal.Parse(_DataTable.Rows[i]["TOTALSELLAMOUNT"].ToString()).ToString("F2") + "元"));
_PrintList.Add(" ");
if (_DataTable.Rows[i]["TOTALSELLAMOUNT"].ToString() != "")
{
pricecount = pricecount + decimal.Parse(_DataTable.Rows[i]["TOTALSELLAMOUNT"].ToString());
}
if (_DataTable.Rows[i]["TOTALCOUNT"].ToString() != "")
{
count = count + decimal.Parse(_DataTable.Rows[i]["TOTALCOUNT"].ToString());
}
}
_PrintList.Add("-".PadLeft(32, '-'));
_PrintList.Add(PrintHelper.CreateSideLine("合计金额:", pricecount.ToString("F2") + "元"));
_PrintList.Add(PrintHelper.CreateSideLine("合计数量:", count.ToString("F2")));
PrintHelper.PrintList(_PrintList, int.Parse(QualityHelper.xpprint_num), int.Parse(QualityHelper.paper_walk), false);
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("单品报表打印失败:" + ex.Message);
}
//System.GC.Collect();
}
#endregion
#region 方法 -> 生成本地交班单文件
///
/// 生成本地交班单文件
///
/// 缴款金额
/// 上一工班缴款金额
/// 当班人员工号
/// 接班人员工号
/// 当班结束时间
/// 账期编号
/// 当班开始时间
public static void GetShift(decimal money, decimal contributionAmount, string person1, string person2, string time, string endaccountCode, string classStartDate)
{
try
{
//生成待打印的交班单信息
List _PrintList = new List
{
PrintHelper.CreateCenterLine("收银员交班单"),
PrintHelper.CreateSideLine("当班收银员:", $"[{person1}]"),
PrintHelper.CreateRightLine(
ESSupport.DataStorage.DataFunction.QueryPersonName(QualityHelper.serverpartcode, person1)),
PrintHelper.CreateSideLine("门店编号:", $"[{QualityHelper.shopcode}]"),
PrintHelper.CreateRightLine(
ESSupport.DataStorage.DataFunction.QueryShopName(QualityHelper.serverpartcode, QualityHelper.shopcode)),
PrintHelper.CreateSideLine("", QualityHelper.machinecode),
"当班开始时间:",
PrintHelper.CreateRightLine(classStartDate),
"当班结束时间:",
PrintHelper.CreateRightLine(time),
"-".PadLeft(32, '-'),
PrintHelper.CreateSideLine("交班现金总额:", money.ToString("F2") + "元"),
PrintHelper.CreateSideLine(" 接班金额:", contributionAmount.ToString("F2") + "元"),
PrintHelper.CreateSideLine(" 当班金额:", (money - contributionAmount).ToString("F2") + "元"),
"双方交接确认无误后请在下面签字",
" ",
PrintHelper.CreateLeftLine("当班人:", '_'),
" ",
PrintHelper.CreateLeftLine("接班人:", '_')
};
//通过LPT打印机打印交班单
PrintHelper.PrintList(_PrintList, int.Parse(QualityHelper.jbprint_num), int.Parse(QualityHelper.paper_walk), false);
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("交班单打印失败:" + ex.Message);
}
}
#endregion
#region 方法 -> 生成收银交班数据
///
/// 生成收银交班数据
///
/// 缴款金额
/// 接班人员工号
public static bool ShiftData(decimal price, string preson)
{
try
{
string endtime = DateTime.Now.ToString();
DataTable _DataTable = new DataTable();
string _EndaccountCode = "";
string _ClassStartDate = "";
string _SellWorkerCode = preson;
//获取当前账期唯一编号
string _SelectSql = "SELECT ENDACCOUNT_CODE FROM T_ENDACCOUNT_NEW WHERE STARTDATE = " +
"( SELECT MAX(STARTDATE) FROM T_ENDACCOUNT_NEW WHERE SERVERPARTCODE = '" + QualityHelper.serverpartcode +
"' AND SHOPCODE='" + QualityHelper.shopcode + "' AND MACHINECODE = '" + QualityHelper.machinecode +
"' AND ENDACCOUNT_TYPE = 1 AND ENDDATE IS NULL )";
_DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0];
if (_DataTable.Rows.Count > 0)
{
_EndaccountCode = _DataTable.Rows[0]["ENDACCOUNT_CODE"].ToString();
}
//获取当前班期开始时间收银员编号
_SelectSql = "SELECT PERSONSELL_ID,STARTDATE,SELLWORKER_CODE FROM T_PERSONSELL_NEW " +
"WHERE SERVERPARTCODE = '" + QualityHelper.serverpartcode + "' AND SHOPCODE='" + QualityHelper.shopcode +
"' AND MACHINECODE = '" + QualityHelper.machinecode + "' AND ENDDATE IS NULL ORDER BY PERSONSELL_ID DESC";
_DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0];
if (_DataTable.Rows.Count > 0)
{
_ClassStartDate = _DataTable.Rows[0]["STARTDATE"].ToString();
_SellWorkerCode = _DataTable.Rows[0]["SELLWORKER_CODE"].ToString();
}
//获取之前班期缴款金额之和
_SelectSql = "SELECT SUM(CONTRIBUTION_AMOUNT) FROM T_PERSONSELL_NEW " +
"WHERE SERVERPARTCODE = '" + QualityHelper.serverpartcode +
"' AND SHOPCODE = '" + QualityHelper.shopcode + "' AND " +
"MACHINECODE = '" + QualityHelper.machinecode + "' AND " +
"ENDACCOUNT_CODE = '" + _EndaccountCode + "' AND " +
"ENDDATE IS NOT NULL";
decimal contributionAmount = 0;
_DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0];
if (_DataTable.Rows.Count > 0)
{
//contributionAmount = decimal.Parse(_DataTable.Rows[0][0].ToString());
decimal.TryParse(_DataTable.Rows[0][0].ToString(), out contributionAmount);
}
if (!GetShiftData(endtime, preson, price))
{
return false;
}
return true;
}
catch
{
return false;
}
}
#endregion
#region 方法 -> 结账
///
/// 结账
///
/// 账期标识编码
/// 账期开始时间
/// 账期结束时间
/// 结账人工号
/// 缴款金额
/// 账期数据ID,用于账期数据文本备份
///
private static bool GetDateData(string EndaccountCode, string StartDate, string EndDate, string preson, decimal price, string endaccountID)
{
try
{
//开始正式结账交班前对已完成的工班进行交易数据校验更新,避免存在移动支付交易记录遗漏
PosReportHelper.UpdatePersonsell(QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode, EndaccountCode);
//判断是否存在未交班信息
DataTable _DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT 1 FROM T_PERSONSELL_NEW
WHERE ENDACCOUNT_CODE='{EndaccountCode}' AND
ENDDATE IS NULL").Tables[0];
if (_DataTable.Rows.Count > 0)
{
//存在未完成的交班信息,进行结账前交班操作
if (!GetShiftData(EndDate, preson, price))
{
return false;
}
}
#region 结账表
//获取账期总客单数、总销售数、总销售额、支付方式详情金额
_DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT COUNT(*) AS TICKETCOUNT,
ISNULL(SUM(SELLMASTER_COUNT),0) AS SELLMASTER_COUNT,
ISNULL(SUM(SELLMASTER_OFFPRICE),0) AS SELLMASTER_OFFPRICE,
ISNULL(SUM(SELLMASTER_AMOUNT),0) AS SELLMASTER_AMOUNT,
ISNULL(SUM(CASHPAY),0) AS CASHPAY,
ISNULL(SUM(BANKPAY),0) AS BANKPAY,
ISNULL(SUM(MEMBERPAY),0) AS MEMBERPAY,
ISNULL(SUM(COUPONPAY),0) AS COUPONPAY,
ISNULL(SUM(MOBILEPAY),0) AS MOBILEPAY,
ISNULL(SUM(INTERNALPAY),0) AS INTERNALPAY,
ISNULL(SUM(OTHERPAY),0) AS OTHERPAY
FROM T_SELLMASTER
WHERE SERVERPARTCODE='{QualityHelper.serverpartcode}' AND
SHOPCODE='{QualityHelper.shopcode}' AND MACHINECODE='{QualityHelper.machinecode}' AND
SELLMASTER_DATE BETWEEN DATETIME('{StartDate}') AND DATETIME('{EndDate}')").Tables[0];
decimal TicketCount = 0;
decimal SellMasterCount = 0;
decimal SellMasterOffprice = 0;
decimal SellMasterAmount = 0;
decimal CashPay = 0;
decimal BankPay = 0;
decimal MemberPay = 0;
decimal CouponPay = 0;
decimal MobilePay = 0;
decimal InternalPay = 0;
decimal OtherPay = 0;
if (_DataTable.Rows.Count > 0)
{
decimal.TryParse(_DataTable.Rows[0]["ticketcount"].ToString(), out TicketCount);
decimal.TryParse(_DataTable.Rows[0]["sellmaster_count"].ToString(), out SellMasterCount);
decimal.TryParse(_DataTable.Rows[0]["sellmaster_offprice"].ToString(), out SellMasterOffprice);
decimal.TryParse(_DataTable.Rows[0]["sellmaster_amount"].ToString(), out SellMasterAmount);
decimal.TryParse(_DataTable.Rows[0]["cashpay"].ToString(), out CashPay);
decimal.TryParse(_DataTable.Rows[0]["bankpay"].ToString(), out BankPay);
decimal.TryParse(_DataTable.Rows[0]["memberpay"].ToString(), out MemberPay);
decimal.TryParse(_DataTable.Rows[0]["couponpay"].ToString(), out CouponPay);
decimal.TryParse(_DataTable.Rows[0]["mobilepay"].ToString(), out MobilePay);
decimal.TryParse(_DataTable.Rows[0]["internalpay"].ToString(), out InternalPay);
decimal.TryParse(_DataTable.Rows[0]["otherpay"].ToString(), out OtherPay);
}
//获取移动支付详情
_DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT ISNULL(SUM(MOBILEPAY),0) AS COUNT,PAYMENT_TYPE
FROM T_SELLMASTER
WHERE SERVERPARTCODE='{QualityHelper.serverpartcode}' AND
SHOPCODE='{QualityHelper.shopcode}' AND MACHINECODE='{QualityHelper.machinecode}' AND
SELLMASTER_DATE BETWEEN DATETIME('{StartDate}') AND DATETIME('{EndDate}') AND
PAYMENT_TYPE IS NOT NULL
GROUP BY PAYMENT_TYPE").Tables[0];
string payment_details = "";
for (int i = 0; i < _DataTable.Rows.Count; i++)
{
if (_DataTable.Rows[i]["payment_type"].ToString() != "")
{
payment_details += (payment_details == "" ? "" : ",") + _DataTable.Rows[i]["payment_type"] + ":" + _DataTable.Rows[i]["count"];
}
}
//if (payment_details.Length > 0)
//{
// payment_details = payment_details.Substring(0, payment_details.Length - 1);
//}
try
{
DataTable _BusCouponTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT COUNT(1) AS SELLMASTER_COUNT,
ISNULL(SUM(B.SELLDETAILS_AMOUNT * -1),0) AS SELLMASTER_AMOUNT
FROM T_SELLMASTER A,T_SELLDETAILS B
WHERE A.SERVERPARTCODE='{QualityHelper.serverpartcode}' AND
A.SHOPCODE='{QualityHelper.shopcode}' AND
A.MACHINECODE='{QualityHelper.machinecode}' AND
A.SELLMASTER_DATE BETWEEN DATETIME('{StartDate}') AND
DATETIME('{EndDate}') AND A.SELLMASTER_CODE = B.SELLMASTER_CODE AND
B.COMMODITY_NAME = '大巴券优惠'").Tables[0];
if (_BusCouponTable.Rows.Count > 0)
{
//decimal _TicketCount = decimal.Parse(_OnlineSaleTable.Rows[0]["TICKETCOUNT"].ToString());
decimal _SaleCount = decimal.Parse(_BusCouponTable.Rows[0]["SELLMASTER_COUNT"].ToString());
decimal _Amount = decimal.Parse(_BusCouponTable.Rows[0]["SELLMASTER_AMOUNT"].ToString());
if (_SaleCount != 0)
{
payment_details += (payment_details == "" ? "" : ",") + "BUSCOUPONS:" + _Amount.ToString("F2");
}
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("大巴券结账异常:" + ex.Message);
}
try
{
//获取账期内线上订单客单数、交易数量、交易金额
DataTable _OnlineSaleTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT COUNT(*) AS TICKETCOUNT,
ISNULL(SUM(SELLMASTER_COUNT),0) AS SELLMASTER_COUNT,
ISNULL(SUM(SELLMASTER_OFFPRICE),0) AS SELLMASTER_OFFPRICE,
ISNULL(SUM(SELLMASTER_AMOUNT),0) AS SELLMASTER_AMOUNT,
ISNULL(SUM(CASHPAY),0) AS CASHPAY,
ISNULL(SUM(BANKPAY),0) AS BANKPAY,
ISNULL(SUM(MEMBERPAY),0) AS MEMBERPAY,
ISNULL(SUM(COUPONPAY),0) AS COUPONPAY,
ISNULL(SUM(MOBILEPAY),0) AS MOBILEPAY,
ISNULL(SUM(INTERNALPAY),0) AS INTERNALPAY,
ISNULL(SUM(OTHERPAY),0) AS OTHERPAY
FROM T_SELLMASTER
WHERE SERVERPARTCODE='{QualityHelper.serverpartcode}' AND
SHOPCODE='{QualityHelper.shopcode}' AND
MACHINECODE='{QualityHelper.machinecode}' AND
SELLMASTER_DATE BETWEEN DATETIME('{StartDate}') AND
DATETIME('{EndDate}') AND
UPPER(COUPON_TYPE) = UPPER('ONLINEPAY')").Tables[0];
if (_OnlineSaleTable.Rows.Count > 0)
{
decimal _TicketCount = decimal.Parse(_OnlineSaleTable.Rows[0]["TICKETCOUNT"].ToString());
decimal _SaleCount = decimal.Parse(_OnlineSaleTable.Rows[0]["SELLMASTER_COUNT"].ToString());
decimal _Amount = decimal.Parse(_OnlineSaleTable.Rows[0]["SELLMASTER_AMOUNT"].ToString());
if (_SaleCount != 0)
{
payment_details += (payment_details == "" ? "" : ",") + "ONLINEPAY:" + _Amount.ToString("F2");
}
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("在线订单结账异常:" + ex.Message);
}
List SQLStringList = new List();
List DataTransferSaleList = new List();
if (ESSupport.Lib.SyBaseHelper.QueryOdbc($@"SELECT 1 FROM T_COMMODITYSALE_NEW
WHERE ENDACCOUNT_CODE ='{EndaccountCode}'").Tables[0].Rows.Count == 0)
{
PosReportHelper.CommoditySale(EndaccountCode, QualityHelper.serverpartcode,
QualityHelper.shopcode, QualityHelper.machinecode, DateTime.Parse(StartDate),
DateTime.Parse(EndDate), out SQLStringList, out DataTransferSaleList);
}
int audit_state = 0;
int cigarette_state = 0;
int promotion_state = 0;
int onlinebill_state = 0;
//收银稽查记录检测
if (PosReportHelper.EndaccountAuditState(QualityHelper.serverpartcode,
QualityHelper.shopcode, QualityHelper.machinecode, DateTime.Parse(StartDate),
DateTime.Parse(EndDate)))
{
audit_state = 1;
}
//香烟数据检测
if (PosReportHelper.EndaccountCigaretteState(QualityHelper.serverpartcode,
QualityHelper.shopcode, QualityHelper.machinecode, DateTime.Parse(StartDate),
DateTime.Parse(EndDate)))
{
cigarette_state = 1;
}
//存在有效促销活动时检测促销记录
if (Common.PosControl.SalesPromoteList != null && Common.PosControl.SalesPromoteList.Count > 0 &&
PosReportHelper.EndaccountPromotionState(QualityHelper.serverpartcode,
QualityHelper.shopcode, QualityHelper.machinecode, DateTime.Parse(StartDate),
DateTime.Parse(EndDate)))
{
promotion_state = 1;
}
//已开启在线订单功能时检测在线订单记录
if (QualityHelper.OnlineOrder == "1" && PosReportHelper.EndaccountOnlineBillState(QualityHelper.serverpartcode,
QualityHelper.shopcode, QualityHelper.machinecode, DateTime.Parse(StartDate), DateTime.Parse(EndDate)))
{
onlinebill_state = 1;
}
//生成结账数据更新保存语句
SQLStringList.Add($@"UPDATE T_ENDACCOUNT_NEW
SET ENDDATE=DATETIME('{EndDate}'),ENDPERSON_CODE='{preson}',
TICKET_COUNT={TicketCount},TOTAL_COUNT={SellMasterCount},
TOTAL_AMOUNT={SellMasterAmount},TOTAL_OFFAMOUNT={SellMasterOffprice},
CASHPAY={CashPay},BANKPAY={BankPay},MEMBERPAY={MemberPay},
COUPONPAY={CouponPay},MOBILEPAY={MobilePay},INTERNALPAY={InternalPay},
CONTRIBUTION_AMOUNT={price},PAYMENT_DETAILS='{payment_details}',
AUDIT_STATE = {audit_state},CIGARETTE_STATE = {cigarette_state},
PROMOTION_STATE = {promotion_state},ONLINEBILL_STATE = {onlinebill_state}
WHERE ENDACCOUNT_CODE='{EndaccountCode}'");
//执行结账数据保存语句
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(SQLStringList);
//结账完成,设置交班数据为待上传状态
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(
$@"UPDATE T_PERSONSELL_NEW
SET TRANSFER_STATE = 0
WHERE ENDACCOUNT_CODE = '{EndaccountCode}' ");
#endregion
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog($"日结账操作失败。原因:{ex.Message}\r\n" +
$"【服务区:{QualityHelper.serverpartname};门店:{QualityHelper.shopname};" +
$"收银机号:{QualityHelper.machinecode};账期时间:{EndDate}】");
return false;
}
return true;
//System.GC.Collect();
}
#endregion
#region 方法 -> 交班
///
/// 收银员交班
///
///
///
///
///
private static bool GetShiftData(string EndTime, string preson, decimal price)
{
try
{
string _SelectSql = "";
string _StartDate = "";
string _EndaccountCode = "";
string _EndAccountID = "";
List _DataCommoditySaleNewList = new List();
List _DataCommoditySaleExtarList = new List();
List _DataTransferSaleList = new List();
List _SQLStringList = new List();
DataTable _DataTable = new DataTable();
try
{
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(new List
{
//对单品表数据扫描传输标识字段进行补全
@"UPDATE T_COMMODITYSALE_NEW A
SET A.COMMODITY_SYMBOL = B.COMMODITY_SYMBOL
FROM T_COMMODITYEX B
WHERE A.COMMODITY_CODE = B.COMMODITY_CODE AND
A.COMMODITY_SYMBOL IS NULL" ,
//对流水表数据扫描传输标识、商品类型字段进行补全
@"UPDATE T_SELLDETAILS A
SET A.COMMODITY_TYPE = B.COMMODITY_TYPE,
A.COMMODITY_SYMBOL = B.COMMODITY_SYMBOL
FROM T_COMMODITYEX B
WHERE A.COMMODITY_CODE = B.COMMODITY_CODE AND
A.COMMODITY_SYMBOL IS NULL AND A.COMMODITY_TYPE IS NULL"
});
}
catch (Exception ex)
{
ESSupport.Lib.SyBaseHelper.QueryOdbc($"单品表及流水表商品类型、扫码传输标识字段补全失败。原因:{ex.Message}");
}
#region 获取数据
//获取当前账期开始时间
DataTable table_EndAccount = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT ENDACCOUNT_ID,ENDACCOUNT_CODE,STARTDATE
FROM T_ENDACCOUNT_NEW
WHERE SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
SHOPCODE = '{QualityHelper.shopcode}' AND
MACHINECODE = '{QualityHelper.machinecode}' AND
ENDACCOUNT_TYPE = 1 AND ENDDATE IS NULL ").Tables[0];
if (table_EndAccount.Rows.Count > 0)
{
_EndAccountID = table_EndAccount.Rows[0]["endaccount_id"].ToString();
_StartDate = table_EndAccount.Rows[0]["STARTDATE"].ToString();
_EndaccountCode = table_EndAccount.Rows[0]["ENDACCOUNT_CODE"].ToString();
}
string _PersonStartDate = "";
string _SellWorkerCode = "";
string _PersonSellID = "";
string _WokerNumber = "";
//获取当前班期收银员工号、工班开始时间、工班顺序号
DataTable table_PersonSell = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT PERSONSELL_ID,SELLWORKER_CODE,
STARTDATE,WOKER_NUMBER
FROM T_PERSONSELL_NEW
WHERE ENDACCOUNT_CODE='{_EndaccountCode}' AND
ENDDATE IS NULL
ORDER BY PERSONSELL_ID ").Tables[0];
if (table_PersonSell.Rows.Count > 0)
{
_PersonSellID = table_PersonSell.Rows[0]["PERSONSELL_ID"].ToString();
_SellWorkerCode = table_PersonSell.Rows[0]["SELLWORKER_CODE"].ToString();
_PersonStartDate = table_PersonSell.Rows[0]["STARTDATE"].ToString();
_WokerNumber = table_PersonSell.Rows[0]["WOKER_NUMBER"].ToString();
}
//获取当前账期已交班缴款金额
decimal _TotalContribution = 0;
_SelectSql = "SELECT ISNULL(SUM(CONTRIBUTION_AMOUNT),0) AS CONTRIBUTION_AMOUNT FROM T_PERSONSELL_NEW " +
"WHERE SERVERPARTCODE = '" + QualityHelper.serverpartcode + "' AND SHOPCODE = '" + QualityHelper.shopcode +
"' AND MACHINECODE = '" + QualityHelper.machinecode + "' AND ENDACCOUNT_CODE = '" + _EndaccountCode +
"' AND ENDDATE IS NOT NULL ";
_DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(_SelectSql).Tables[0];
if (_DataTable.Rows.Count > 0)
{
_TotalContribution = decimal.Parse(_DataTable.Rows[0]["CONTRIBUTION_AMOUNT"].ToString());
}
#endregion
if (ESSupport.Lib.SyBaseHelper.QueryOdbc($@"SELECT 1 FROM T_COMMODITYSALE_NEW
WHERE ENDACCOUNT_CODE ='{_EndaccountCode}'").Tables[0].Rows.Count > 0)
{
PosReportHelper.CommoditySale(_EndaccountCode, QualityHelper.serverpartcode,
QualityHelper.shopcode, QualityHelper.machinecode, DateTime.Parse(_PersonStartDate),
DateTime.Parse(EndTime), out _SQLStringList, out _DataTransferSaleList);
}
#region 交班表
//获取工班总客单数、总销售数、总销售额、支付方式详情金额
_DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT COUNT(*) AS TICKETCOUNT,
ISNULL(SUM(SELLMASTER_COUNT),0) AS SELLMASTER_COUNT,
ISNULL(SUM(SELLMASTER_OFFPRICE),0) AS SELLMASTER_OFFPRICE,
ISNULL(SUM(SELLMASTER_AMOUNT),0) AS SELLMASTER_AMOUNT,
ISNULL(SUM(CASHPAY),0) AS CASHPAY,ISNULL(SUM(BANKPAY),0) AS BANKPAY,
ISNULL(SUM(MEMBERPAY),0) AS MEMBERPAY,ISNULL(SUM(COUPONPAY),0) AS COUPONPAY,
ISNULL(SUM(MOBILEPAY),0) AS MOBILEPAY,ISNULL(SUM(INTERNALPAY),0) AS INTERNALPAY,
ISNULL(SUM(OTHERPAY),0) AS OTHERPAY
FROM T_SELLMASTER
WHERE SERVERPARTCODE='{QualityHelper.serverpartcode}' AND SHOPCODE='{QualityHelper.shopcode}' AND
MACHINECODE='{QualityHelper.machinecode}' AND UPPER(SELLWORKER_CODE)=UPPER('{_SellWorkerCode}')AND
SELLMASTER_DATE BETWEEN DATETIME('{_PersonStartDate}') AND DATETIME('{EndTime}') ").Tables[0];
decimal TicketCount = 0;
decimal SellMasterCount = 0;
decimal SellMasterOffprice = 0;
decimal SellMasterAmount = 0;
decimal CashPay = 0;
decimal BankPay = 0;
decimal MemberPay = 0;
decimal CouponPay = 0;
decimal MobilePay = 0;
decimal InternalPay = 0;
decimal OtherPay = 0;
if (_DataTable.Rows.Count > 0)
{
decimal.TryParse(_DataTable.Rows[0]["TICKETCOUNT"].ToString(), out TicketCount);
decimal.TryParse(_DataTable.Rows[0]["SELLMASTER_COUNT"].ToString(), out SellMasterCount);
decimal.TryParse(_DataTable.Rows[0]["SELLMASTER_OFFPRICE"].ToString(), out SellMasterOffprice);
decimal.TryParse(_DataTable.Rows[0]["SELLMASTER_AMOUNT"].ToString(), out SellMasterAmount);
decimal.TryParse(_DataTable.Rows[0]["CASHPAY"].ToString(), out CashPay);
decimal.TryParse(_DataTable.Rows[0]["BANKPAY"].ToString(), out BankPay);
decimal.TryParse(_DataTable.Rows[0]["MEMBERPAY"].ToString(), out MemberPay);
decimal.TryParse(_DataTable.Rows[0]["COUPONPAY"].ToString(), out CouponPay);
decimal.TryParse(_DataTable.Rows[0]["MOBILEPAY"].ToString(), out MobilePay);
decimal.TryParse(_DataTable.Rows[0]["INTERNALPAY"].ToString(), out InternalPay);
decimal.TryParse(_DataTable.Rows[0]["OTHERPAY"].ToString(), out OtherPay);
}
_DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT ISNULL(SUM(MOBILEPAY),0) AS COUNT,PAYMENT_TYPE
FROM T_SELLMASTER
WHERE SERVERPARTCODE='{QualityHelper.serverpartcode}' AND
SHOPCODE='{QualityHelper.shopcode}' AND
MACHINECODE='{QualityHelper.machinecode}' AND
UPPER(SELLWORKER_CODE)=UPPER('{_SellWorkerCode}') AND
SELLMASTER_DATE BETWEEN DATETIME('{_PersonStartDate}') AND DATETIME('{EndTime}') AND
PAYMENT_TYPE IS NOT NULL
GROUP BY PAYMENT_TYPE").Tables[0];
string payment_details = "";
for (int i = 0; i < _DataTable.Rows.Count; i++)
{
if (_DataTable.Rows[i]["payment_type"].ToString() != "")
{
payment_details += (payment_details == "" ? "" : ",") + _DataTable.Rows[i]["payment_type"] + ":" + _DataTable.Rows[i]["count"];
}
}
try
{
DataTable _BusCouponTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT COUNT(1) AS SELLMASTER_COUNT,
ISNULL(SUM(B.SELLDETAILS_AMOUNT * -1),0) AS SELLMASTER_AMOUNT
FROM T_SELLMASTER A,T_SELLDETAILS B
WHERE A.SERVERPARTCODE='{QualityHelper.serverpartcode}' AND
A.SHOPCODE='{QualityHelper.shopcode}' AND
A.MACHINECODE='{QualityHelper.machinecode}' AND
A.SELLMASTER_DATE BETWEEN DATETIME('{_PersonStartDate}') AND
DATETIME('{EndTime}') AND A.SELLMASTER_CODE = B.SELLMASTER_CODE AND
B.COMMODITY_NAME = '大巴券优惠'").Tables[0];
if (_BusCouponTable.Rows.Count > 0)
{
//decimal _TicketCount = decimal.Parse(_OnlineSaleTable.Rows[0]["TICKETCOUNT"].ToString());
decimal _SaleCount = decimal.Parse(_BusCouponTable.Rows[0]["SELLMASTER_COUNT"].ToString());
decimal _Amount = decimal.Parse(_BusCouponTable.Rows[0]["SELLMASTER_AMOUNT"].ToString());
if (_SaleCount != 0)
{
payment_details += (payment_details == "" ? "" : ",") + "BUSCOUPONS:" + _Amount.ToString("F2");
}
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("大巴券结账异常:" + ex.Message);
}
try
{
DataTable _OnlineSaleTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
$@"SELECT COUNT(*) AS TICKETCOUNT,
ISNULL(SUM(SELLMASTER_COUNT),0) AS SELLMASTER_COUNT,
ISNULL(SUM(SELLMASTER_OFFPRICE),0) AS SELLMASTER_OFFPRICE,
ISNULL(SUM(SELLMASTER_AMOUNT),0) AS SELLMASTER_AMOUNT,
ISNULL(SUM(CASHPAY),0) AS CASHPAY,
ISNULL(SUM(BANKPAY),0) AS BANKPAY,
ISNULL(SUM(MEMBERPAY),0) AS MEMBERPAY,
ISNULL(SUM(COUPONPAY),0) AS COUPONPAY,
ISNULL(SUM(MOBILEPAY),0) AS MOBILEPAY,
ISNULL(SUM(INTERNALPAY),0) AS INTERNALPAY,
ISNULL(SUM(OTHERPAY),0) AS OTHERPAY
FROM T_SELLMASTER
WHERE SERVERPARTCODE='{QualityHelper.serverpartcode}' AND
SHOPCODE='{QualityHelper.shopcode}' AND
MACHINECODE='{QualityHelper.machinecode}' AND
SELLMASTER_DATE BETWEEN DATETIME('{_PersonStartDate}') AND
DATETIME('{EndTime}') AND
UPPER(COUPON_TYPE) = UPPER('ONLINEPAY')").Tables[0];
if (_OnlineSaleTable.Rows.Count > 0)
{
//decimal _TicketCount = decimal.Parse(_OnlineSaleTable.Rows[0]["TICKETCOUNT"].ToString());
decimal _SaleCount = decimal.Parse(_OnlineSaleTable.Rows[0]["SELLMASTER_COUNT"].ToString());
decimal _Amount = decimal.Parse(_OnlineSaleTable.Rows[0]["SELLMASTER_AMOUNT"].ToString());
if (_SaleCount != 0)
{
payment_details += (payment_details == "" ? "" : ",") + "ONLINEPAY:" + _Amount.ToString("F2");
}
}
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog("在线订单结账异常:" + ex.Message);
}
//交班表插入数据
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(
$@"UPDATE T_PERSONSELL_NEW
SET ENDDATE = DATETIME('{EndTime}'),TICKET_COUNT = {TicketCount},
TOTAL_COUNT = {SellMasterCount},TOTAL_AMOUNT = {SellMasterAmount},
TOTAL_OFFAMOUNT = {SellMasterOffprice},CASHPAY = {CashPay},
BANKPAY = {BankPay},MEMBERPAY = {MemberPay},
COUPONPAY = {CouponPay},MOBILEPAY = {MobilePay},
OTHERPAY = {OtherPay},INTERNALPAY = {InternalPay},
CONTRIBUTION_AMOUNT = {(price - _TotalContribution)},
PAYMENT_DETAILS = '{payment_details}',TRANSFER_STATE = 1
WHERE SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND SHOPCODE = '{QualityHelper.shopcode}' AND
MACHINECODE = '{QualityHelper.machinecode}' AND ENDDATE IS NULL ");
#endregion
ESSupport.Lib.LogHelper.WriteServiceLog("交班操作完成。\r\n" +
$"【服务区:{QualityHelper.serverpartname};门店:{QualityHelper.shopname};" +
$"收银机号:{QualityHelper.machinecode};交班时间:{EndTime}】\r\n" +
$"///-----------------------------------记录完成----------------------------------///");
return true;
}
catch (Exception ex)
{
ESSupport.Lib.LogHelper.WriteServiceLog($"交班操作失败。原因:{ex.Message}\r\n" +
$"【服务区:{QualityHelper.serverpartname};门店:{QualityHelper.shopname};" +
$"收银机号:{QualityHelper.machinecode};交班时间:{EndTime}】\r\n");
return false;
}
}
#endregion
#region 方法 -> 打印交班单结账单
///
/// 打印交班单结账单
///
/// 是否交班
/// 缴款金额
/// 接班金额
/// 结账人编号
/// 结账时间
/// 账期编号
/// 班期开始时间
/// 账期开始时间
/// 当班收银员工号
private static void PrintCheckoutSlip(bool IsShift, decimal Contribution,
decimal takeOverPrice, string EndpersonCode, string _EndDate,
string EndaccountCode, string _ClassStartDate, string _StartDate, string PersonCode)
{
GetShift(Contribution, takeOverPrice, PersonCode, EndpersonCode,
_EndDate, EndaccountCode, _ClassStartDate);
if (!IsShift)
{
GetCheckOut(EndaccountCode);
PrintHelper.PrintList(PosReportHelper.CreateMobilePayAccount(
QualityHelper.serverpartcode, QualityHelper.shopcode,
QualityHelper.machinecode, DateTime.Today.AddDays(-1)), 1, 6, false);
}
}
#endregion
}
}