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 { /// /// 销售流水相关方法 /// public class SellDataHelper { #region 获取交易流水订单表列表【根据时间段查询】 /// /// 获取交易流水订单表列表【根据时间段查询】 /// /// /// 服务区编码 /// 门店编码 /// 查询开始时间 /// 查询结束时间 /// 是否显示商品明细 /// public static List GetYSSELLMASTERList(Transaction transaction, string ServerpartCode, string ShopCode, string StartDate, string EndDate, bool ShowDetail) { List YSSELLMASTERList = new List(); 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(); 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 } }