2025-03-28 09:49:56 +08:00

1943 lines
123 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 ->
/// <summary>
/// 生成稽核单
/// </summary>
/// <param name="code">稽核工号</param>
/// <param name="EndaccountCode">稽核单号</param>
public static void GetAuditResult(string code, string EndaccountCode)
{
try
{
List<string> _PrintList = new List<string>();
_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 ->
/// <summary>
/// 打印稽核单
/// </summary>
/// <param name="EndAccountCode">结账表编号</param>
/// <param name="isAuto"></param>
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<string> _PrintList = new List<string>();
_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 ->
/// <summary>
/// 插入稽核数据
/// </summary>
/// <param name="personCode">稽核工号</param>
/// <param name="money">缴款金额</param>
/// <param name="auditTime">稽核时间</param>
/// <param name="EndAccountCode">输出:稽核数据唯一标识编码</param>
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 ->
/// <summary>
/// 查询稽核结果数据
/// </summary>
/// <returns></returns>
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 ->
/// <summary>
/// 生成结账单
/// </summary>
/// <param name="money">缴款金额</param>
/// <param name="person">结账人工号</param>
/// <param name="time">结账时间</param>
/// <param name="starttime">账期开始时间</param>
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<string> _PrintList = new List<string>();
_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 ->
/// <summary>
/// 生成账期日结营收数据
/// </summary>
/// <param name="Contribution">缴款金额</param>
/// <param name="EndpersonCode">结账人工号</param>
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 ->
/// <summary>
/// 生成单品报表
/// </summary>
/// <param name="startdate">开始时间</param>
/// <param name="enddate">结束时间</param>
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<string> _PrintList = new List<string>();
_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 ->
/// <summary>
/// 生成本地交班单文件
/// </summary>
/// <param name="money">缴款金额</param>
/// <param name="contributionAmount">上一工班缴款金额</param>
/// <param name="person1">当班人员工号</param>
/// <param name="person2">接班人员工号</param>
/// <param name="time">当班结束时间</param>
/// <param name="endaccountCode">账期编号</param>
/// <param name="classStartDate">当班开始时间</param>
public static void GetShift(decimal money, decimal contributionAmount, string person1, string person2, string time, string endaccountCode, string classStartDate)
{
try
{
//生成待打印的交班单信息
List<string> _PrintList = new List<string>
{
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 ->
/// <summary>
/// 生成收银交班数据
/// </summary>
/// <param name="price">缴款金额</param>
/// <param name="preson">接班人员工号</param>
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 ->
/// <summary>
/// 结账
/// </summary>
/// <param name="EndaccountCode">账期标识编码</param>
/// <param name="StartDate">账期开始时间</param>
/// <param name="EndDate">账期结束时间</param>
/// <param name="preson">结账人工号</param>
/// <param name="price">缴款金额</param>
/// <param name="endaccountID">账期数据ID用于账期数据文本备份</param>
/// <returns></returns>
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<string> SQLStringList = new List<string>();
List<string> DataTransferSaleList = new List<string>();
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 ->
/// <summary>
/// 收银员交班
/// </summary>
/// <param name="EndTime"></param>
/// <param name="preson"></param>
/// <param name="price"></param>
/// <returns></returns>
private static bool GetShiftData(string EndTime, string preson, decimal price)
{
try
{
string _SelectSql = "";
string _StartDate = "";
string _EndaccountCode = "";
string _EndAccountID = "";
List<string> _DataCommoditySaleNewList = new List<string>();
List<string> _DataCommoditySaleExtarList = new List<string>();
List<string> _DataTransferSaleList = new List<string>();
List<string> _SQLStringList = new List<string>();
DataTable _DataTable = new DataTable();
try
{
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(new List<string>
{
//对单品表数据扫描传输标识字段进行补全
@"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 ->
/// <summary>
/// 打印交班单结账单
/// </summary>
/// <param name="IsShift">是否交班</param>
/// <param name="Contribution">缴款金额</param>
/// <param name="takeOverPrice">接班金额</param>
/// <param name="EndpersonCode">结账人编号</param>
/// <param name="_EndDate">结账时间</param>
/// <param name="EndaccountCode">账期编号</param>
/// <param name="_ClassStartDate">班期开始时间</param>
/// <param name="_StartDate">账期开始时间</param>
/// <param name="PersonCode">当班收银员工号</param>
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
}
}