192 lines
9.9 KiB
C#
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
|
|
}
|
|
} |