1987 lines
125 KiB
C#
1987 lines
125 KiB
C#
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
|
||
}
|
||
|
||
public static class StringExtensions
|
||
{
|
||
/// <summary>
|
||
/// 按单字节字符串向左填充长度
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <param name="length"></param>
|
||
/// <param name="paddingChar"></param>
|
||
/// <returns></returns>
|
||
public static string PadLeftWhileDouble(string input, int length, char paddingChar = '\0')
|
||
{
|
||
try
|
||
{
|
||
var singleLength = GetSingleLength(input);
|
||
return input.PadLeft(length - singleLength + input.Length, paddingChar);
|
||
}
|
||
catch
|
||
{
|
||
return input;
|
||
}
|
||
}
|
||
private static int GetSingleLength(string input)
|
||
{
|
||
if (string.IsNullOrEmpty(input))
|
||
{
|
||
return 0;
|
||
}
|
||
return Regex.Replace(input, @"[^\x00-\xff]", "aa").Length;//计算得到该字符串对应单字节字符串的长度
|
||
}
|
||
/// <summary>
|
||
/// 按单字节字符串向右填充长度
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <param name="length"></param>
|
||
/// <param name="paddingChar"></param>
|
||
/// <returns></returns>
|
||
public static string PadRightWhileDouble(this string input, int length, char paddingChar = '\0')
|
||
{
|
||
var singleLength = GetSingleLength(input);
|
||
return input.PadRight(length - singleLength + input.Length, paddingChar);
|
||
}
|
||
}
|
||
}
|