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

192 lines
9.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using SuperMap.RealEstate.ServiceModel;
using HWSB = SuperMap.RealEstate.HighWay.Storage.Business;
using Business = SuperMap.RealEstate.ExchangeData.Business;
using HCC = HZQR.Common.Common;
using HZQR.Common;
namespace OpenApi.Method
{
/// <summary>
/// 销售流水相关方法
/// </summary>
public class SellDataHelper
{
#region
/// <summary>
/// 获取交易流水订单表列表【根据时间段查询】
/// </summary>
/// <param name="transaction"></param>
/// <param name="ServerpartCode">服务区编码</param>
/// <param name="ShopCode">门店编码</param>
/// <param name="StartDate">查询开始时间</param>
/// <param name="EndDate">查询结束时间</param>
/// <param name="ShowDetail">是否显示商品明细</param>
/// <returns></returns>
public static List<Model.YSSELLMASTERModel> GetYSSELLMASTERList(Transaction transaction,
string ServerpartCode, string ShopCode, string StartDate, string EndDate, bool ShowDetail)
{
List<Model.YSSELLMASTERModel> YSSELLMASTERList = new List<Model.YSSELLMASTERModel>();
string WhereSQL = "", RowFilterSQL = "";
if (!string.IsNullOrWhiteSpace(ServerpartCode))
{
WhereSQL += " AND A.SERVERPARTCODE = '" + ServerpartCode + "'";
}
if (!string.IsNullOrWhiteSpace(ShopCode))
{
WhereSQL += " AND A.SHOPCODE = '" + ShopCode + "'";
}
if (!string.IsNullOrWhiteSpace(StartDate))
{
WhereSQL += " AND A.SELLMASTER_DATE >= " + DateTime.Parse(StartDate).ToString("yyyyMMdd000000");
}
if (!string.IsNullOrWhiteSpace(EndDate))
{
WhereSQL += " AND A.SELLMASTER_DATE < " + DateTime.Parse(EndDate).ToString("yyyyMMdd240000");
}
string SQLString;
if (ShowDetail)
{
SQLString = @"SELECT
A.SELLMASTER_CODE,A.SERVERPARTCODE,A.SERVERPART_NAME,A.SHOPCODE,A.SHOPNAME,
A.MACHINECODE,A.SELLWORKER_CODE,A.SELLWORKER_NAME,A.SELLMASTER_TYPE,A.SELLMASTER_DATE,
A.TICKET_CODE,A.SELLMASTER_COUNT,A.SELLMASTER_OFFPRICE,A.SELLMASTER_AMOUNT,A.CASH_AMOUNT,
A.INTERNAL_AMOUNT,A.PAYMENT_TYPE,A.COUPON_TYPE,A.PAY_AMOUNT,A.PAYMENT_GROUP,
A.MERCHANT_ORDER,A.REFUND_ORDER,A.SELLMASTER_STATE,A.SELLMASTER_DESC,A.TRANSFER_STATE,
A.HOFTORDERCODE,A.HOFTMERCHANTCODE,B.COMMODITY_BARCODE,B.COMMODITY_NAME,
B.COMMODITY_TYPE,B.SELLDETAILS_COUNT,B.SELLDETAILS_PRICE,B.SELLDETAILS_AMOUNT,B.LINENUM
FROM
HIGHWAY_SELLDATA.T_YSSELLMASTER A,
HIGHWAY_SELLDATA.T_YSSELLDETAILS B
WHERE
A.SELLMASTER_CODE = B.SELLMASTER_CODE AND
A.SELLMASTER_STATE NOT IN (0)" + WhereSQL;
}
else
{
SQLString = "SELECT * FROM HIGHWAY_SELLDATA.T_YSSELLMASTER A WHERE SELLMASTER_STATE NOT IN (0)" + WhereSQL;
}
DataTable dtYSSELLMASTER = new Business.SELLDATA(transaction).ExecuteDataTable(SQLString);
if (RowFilterSQL != "")
{
dtYSSELLMASTER.DefaultView.RowFilter = RowFilterSQL;
}
foreach (DataRow drYSSELLMASTER in dtYSSELLMASTER.DefaultView.ToTable(true, "SELLMASTER_CODE",
"SERVERPARTCODE", "SERVERPART_NAME", "SHOPCODE", "SHOPNAME", "MACHINECODE",
"SELLWORKER_CODE", "SELLWORKER_NAME", "SELLMASTER_TYPE", "SELLMASTER_DATE",
"TICKET_CODE", "SELLMASTER_COUNT", "SELLMASTER_OFFPRICE", "SELLMASTER_AMOUNT",
"CASH_AMOUNT", "INTERNAL_AMOUNT", "PAYMENT_TYPE", "COUPON_TYPE", "PAY_AMOUNT", "PAYMENT_GROUP",
"SELLMASTER_STATE", "SELLMASTER_DESC", "TRANSFER_STATE").Select("", "SELLMASTER_DATE"))
{
decimal CashPayment = 0, WeChatPayment = 0, AlipayPayment = 0, OtherPayment = 0;
//如果是人工确认的交易,且通道返回不成功,则计入为现金支付
if (drYSSELLMASTER["TRANSFER_STATE"].ToString() == "0")
{
CashPayment = drYSSELLMASTER["CASH_AMOUNT"].TryParseToDecimal();
}
else
{
//获取现金交易支付方式中的现金和移动支付金额
switch (drYSSELLMASTER["PAYMENT_TYPE"].TryParseToDecimal())
{
case 1000://现金支付
CashPayment = drYSSELLMASTER["CASH_AMOUNT"].TryParseToDecimal();
break;
case 1010://微信支付
WeChatPayment = drYSSELLMASTER["CASH_AMOUNT"].TryParseToDecimal();
break;
case 1020://支付宝
AlipayPayment = drYSSELLMASTER["CASH_AMOUNT"].TryParseToDecimal();
break;
case 1030://云闪付
OtherPayment = drYSSELLMASTER["CASH_AMOUNT"].TryParseToDecimal();
break;
}
}
if (!string.IsNullOrWhiteSpace(drYSSELLMASTER["SELLMASTER_DESC"].ToString()))
{
//拆解组合支付的内容
foreach (string PayDetail in drYSSELLMASTER["SELLMASTER_DESC"].ToString().Split(','))
{
if (drYSSELLMASTER["TRANSFER_STATE"].ToString() == "0")
{
CashPayment += PayDetail.Split(':')[1].TryParseToDecimal();
}
else
{
switch (PayDetail.Split(':')[0])
{
case "ALIPAY":
case "WECHAT":
case "UNIONPAY":
OtherPayment += PayDetail.Split(':')[1].TryParseToDecimal();
break;
default:
CashPayment += PayDetail.Split(':')[1].TryParseToDecimal();
break;
}
}
}
}
Model.YSSELLMASTERModel yssellmasterModel = new Model.YSSELLMASTERModel
{
SELLMASTER_CODE = drYSSELLMASTER["SELLMASTER_CODE"].ToString(), //订单唯一标识(同移动支付单号)
SERVERPARTCODE = drYSSELLMASTER["SERVERPARTCODE"].ToString(), //服务区编码
SERVERPART_NAME = drYSSELLMASTER["SERVERPART_NAME"].ToString(), //服务区名称
SHOPCODE = drYSSELLMASTER["SHOPCODE"].ToString(), //门店编码
SHOPNAME = drYSSELLMASTER["SHOPNAME"].ToString(), //门店名称
MACHINECODE = drYSSELLMASTER["MACHINECODE"].ToString(), //收银机号
SELLWORKER_CODE = drYSSELLMASTER["SELLWORKER_CODE"].ToString(), //收银员工号
SELLWORKER_NAME = drYSSELLMASTER["SELLWORKER_NAME"].ToString(), //收银员名称
SELLMASTER_DATE = HCC.Common.TranslateDateTime(drYSSELLMASTER["SELLMASTER_DATE"].ToString()), //交易时间
TICKET_CODE = drYSSELLMASTER["TICKET_CODE"].ToString(), //小票流水号
SELLMASTER_COUNT = drYSSELLMASTER["SELLMASTER_COUNT"].TryParseToDecimal(), //销售数量
SELLMASTER_OFFPRICE = drYSSELLMASTER["SELLMASTER_OFFPRICE"].TryParseToDecimal(), //优惠金额
SELLMASTER_AMOUNT = drYSSELLMASTER["SELLMASTER_AMOUNT"].TryParseToDecimal(), //应付金额
CASHPAY_AMOUNT = CashPayment,
WECHATPAY_AMOUNT = WeChatPayment,
ALIPAY_AMOUNT = AlipayPayment,
OTHERPAY_INFO = OtherPayment
};
if (ShowDetail)
{
yssellmasterModel.SellDetailList = new List<Model.YSSELLDETAILSModel>();
foreach (DataRow drDetail in dtYSSELLMASTER.Select("SELLMASTER_CODE = '" +
drYSSELLMASTER["SELLMASTER_CODE"] + "'", "LINENUM"))
{
Model.YSSELLDETAILSModel ysselldetailsModel = new Model.YSSELLDETAILSModel
{
COMMODITY_BARCODE = drDetail["COMMODITY_BARCODE"].ToString(), //商品条码
COMMODITY_NAME = drDetail["COMMODITY_NAME"].ToString(), //商品名称
COMMODITY_TYPE = drDetail["COMMODITY_TYPE"].ToString(), //商品类别
SELLDETAILS_COUNT = drDetail["SELLDETAILS_COUNT"].TryParseToDecimal(), //销售数量
SELLDETAILS_PRICE = drDetail["SELLDETAILS_PRICE"].TryParseToDecimal(), //商品单价
SELLDETAILS_AMOUNT = drDetail["SELLDETAILS_AMOUNT"].TryParseToDecimal(), //销售金额
LINENUM = drDetail["LINENUM"].TryParseToInt(), //行号
};
yssellmasterModel.SellDetailList.Add(ysselldetailsModel);
}
}
YSSELLMASTERList.Add(yssellmasterModel);
}
return YSSELLMASTERList;
}
#endregion
}
}