1145 lines
61 KiB
C#
1145 lines
61 KiB
C#
using System;
|
||
using System.Configuration;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.Web.UI;
|
||
using System.Web.UI.WebControls;
|
||
using SuperMap.RealEstate.CoreFrameWork;
|
||
using SuperMap.RealEstate.ServiceModel;
|
||
using SuperMap.RealEstate.Utility;
|
||
using SuperMap.RealEstate.Web.UI;
|
||
using SuperMap.RealEstate.Web.UI.WebControls;
|
||
using SuperMap.RealEstate.FrameWork.Business;
|
||
using SuperMap.RealEstate.ExchangeData.Business;
|
||
using HWSB = SuperMap.RealEstate.HighWay.Storage.Business;
|
||
using SSSB = SuperMap.RealEstate.SaleStore.Storage.Business;
|
||
using SRSB = SuperMap.RealEstate.SendRec.Storage.Business;
|
||
using Business = SuperMap.RealEstate.HighWay.SellData.Business;
|
||
using MSPB = SuperMap.RealEstate.MobileServicePlatform.Business;
|
||
using HZQR.Common.Models;
|
||
using HZQR.Common;
|
||
|
||
namespace SuperMap.RealEstate.HighWay.Module.ProblemDeal
|
||
{
|
||
/// <summary>
|
||
/// T_ENDACCOUNT_结账表 的WebUserControl
|
||
/// <summary>
|
||
public partial class ENDACCOUNT : Storage.UI.UserControlsEx<Business.ENDACCOUNT>
|
||
{
|
||
protected string _CigaretteTrade = ConfigurationManager.AppSettings["CigaretteTrade"];
|
||
protected string _UmiformCommodity = ConfigurationManager.AppSettings["UmiformCommodity"];
|
||
|
||
#region 方法 -> 页面加载
|
||
protected void Page_Load(object sender, EventArgs e)
|
||
{
|
||
if (IsPostBack) return;
|
||
|
||
string _SALE_SELLCOUNT = "0", _SALE_SUPPLEMENT = "0";
|
||
CASHPAYMENT.Text = CASH.Text;
|
||
TOTALAMOUNT.Text = TOTALSELLAMOUNT.Text;
|
||
//获取香烟类别编码
|
||
DataTable CigaretteTypeTable = new HWSB.COMMODITYTYPE(Transaction).ExecuteDataTable(
|
||
"SELECT WM_CONCAT(COMMODITYTYPE_CODE) AS COMMODITYTYPE_CODE FROM T_COMMODITYTYPE WHERE PROVINCE_ID = " +
|
||
(PROVINCE_CODE.Text == "" ? "0" : PROVINCE_CODE.Text) + " AND CIGARETTE_TYPE = 1");
|
||
if (CigaretteTypeTable.Rows.Count > 0 && CigaretteTypeTable.Rows[0][0].ToString() != "")
|
||
{
|
||
CigaretteType.Value = CigaretteTypeTable.Rows[0][0].ToString();
|
||
//隐藏香烟列表
|
||
if (CurrObject.CIGARETTE_STATE == 0)
|
||
{
|
||
fieldset_Cigarette.Visible = false;
|
||
}
|
||
else if (CurrObject.CIGARETTE_STATE == null)
|
||
{
|
||
HWSB.SERVERPARTSHOP _SERVERPARTSHOP = new HWSB.SERVERPARTSHOP(Transaction);
|
||
_SERVERPARTSHOP.AddSearchParameter("SERVERPART_ID", SERVERPART_ID.Text);
|
||
_SERVERPARTSHOP.AddSearchParameter("SHOPCODE", SHOPCODE.Text);
|
||
if (_SERVERPARTSHOP.Search())
|
||
{
|
||
if (string.IsNullOrWhiteSpace(_CigaretteTrade) ||
|
||
(!string.IsNullOrWhiteSpace(_SERVERPARTSHOP.SHOPTRADE) &&
|
||
!_CigaretteTrade.Contains(_SERVERPARTSHOP.SHOPTRADE)))
|
||
{
|
||
fieldset_Cigarette.Visible = false;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
fieldset_Cigarette.Visible = false;
|
||
}
|
||
//初始化并加载列表
|
||
//GridViewEx1.SelectingWithInit<Business.SUPPLEMENT>(ObjectDataSource1, GridPageEx1);
|
||
if (TREATMENT_MARK.SelectedValue == "0" && string.IsNullOrWhiteSpace(DIFFERENCE_REASON.Text))
|
||
{
|
||
//CASHPAY.Enabled = false;
|
||
//DIFFERENCE_REASON.Enabled = false;
|
||
DIFFERENCE_REASON.Text = "已确认";
|
||
}
|
||
if (string.IsNullOrEmpty(CurrObject.CHECK_INFO) && !string.IsNullOrEmpty(CurrObject.APPROVED_INFO))
|
||
{
|
||
APPROVED_INFO.Visible = true;
|
||
}
|
||
|
||
DataTable dt = CurrObject.ExecuteDataTable("SELECT * FROM HIGHWAY_SELLDATA.V_SUPPLEMENT " +
|
||
"WHERE SERVERPART_ID = " + SERVERPART_ID.Text + " AND TICKETCODE = '" + Request["ID"] + "'");
|
||
//COMMODITY_NAME = '补充销售流水' AND
|
||
if (dt.Rows.Count > 0)
|
||
{
|
||
if (string.IsNullOrEmpty(MOBILE_CORRECT.Text.Trim()))
|
||
{
|
||
MOBILE_CORRECT.Text = dt.Rows[0]["MOBILE_CORRECT"].ToString();
|
||
}
|
||
if (string.IsNullOrEmpty(SALE_CORRECT.Text.Trim()))
|
||
{
|
||
SALE_CORRECT.Text = dt.Rows[0]["DIFFERENT_CORRECT"].ToString();
|
||
}
|
||
if (string.IsNullOrEmpty(CASH_CORRECT.Text.Trim()))
|
||
{
|
||
CASH_CORRECT.Text = dt.Rows[0]["CASH_CORRECT"].ToString();
|
||
}
|
||
//加载流水冲正金额
|
||
_SALE_SELLCOUNT = dt.Rows[0]["SALE_SELLCOUNT"].ToString();
|
||
_SALE_SUPPLEMENT = dt.Rows[0]["SALE_SUPPLEMENT"].ToString();
|
||
//统计冲正金额:移动支付冲正+现金冲正+流水冲正
|
||
CORRECTAMOUNT.Text = (MOBILE_CORRECT.Text.TryParseToDecimal() +
|
||
CASH_CORRECT.Text.TryParseToDecimal() + _SALE_SUPPLEMENT.TryParseToDecimal()).ToString();
|
||
//统计稽核补录金额
|
||
CHECK_CORRECT.Text = dt.Rows[0]["CHECK_SUPPLEMENT"].ToString();
|
||
//单品冲正金额
|
||
SALE_SUPPLEMENT.Text = (_SALE_SUPPLEMENT.TryParseToDecimal() - CHECK_CORRECT.Text.TryParseToDecimal()).ToString();
|
||
}
|
||
else
|
||
{
|
||
if (string.IsNullOrEmpty(MOBILE_CORRECT.Text.Trim()))
|
||
{
|
||
MOBILE_CORRECT.Text = "0";
|
||
}
|
||
if (string.IsNullOrEmpty(SALE_CORRECT.Text.Trim()))
|
||
{
|
||
SALE_CORRECT.Text = "0";
|
||
}
|
||
if (string.IsNullOrEmpty(CASH_CORRECT.Text.Trim()))
|
||
{
|
||
CASH_CORRECT.Text = "0";
|
||
}
|
||
//统计冲正金额:移动支付冲正+现金冲正+流水冲正
|
||
CORRECTAMOUNT.Text = "0";
|
||
}
|
||
//冲正金额文本框:冲正金额/移动支付冲正金额
|
||
CORRECT_AMOUNT.Text = (string.IsNullOrEmpty(CORRECT_AMOUNT.Text.Trim()) ? (MOBILE_CORRECT.Text.TryParseToDecimal() +
|
||
CASH_CORRECT.Text.TryParseToDecimal()).ToString() : CORRECT_AMOUNT.Text) + "/" + MOBILE_CORRECT.Text;
|
||
SELLCOUNT.Text = _SALE_SELLCOUNT;
|
||
FACTAMOUNT.Text = _SALE_SUPPLEMENT;
|
||
try
|
||
{
|
||
AVERAGEPRICE.Text = TICKETCOUNT.Text == "0" || TICKETCOUNT.Text == "" ? "0" :
|
||
(double.Parse(TOTALSELLAMOUNT.Text) / double.Parse(TICKETCOUNT.Text)).ToString("0.00");
|
||
}
|
||
catch { }
|
||
try
|
||
{
|
||
//显示其他支付金额
|
||
OTHERPAYMENT.Text = (CurrObject.COSTBILL.TryParseToDecimal() + CurrObject.VIPPERSON.TryParseToDecimal() +
|
||
CurrObject.CREDITCARD.TryParseToDecimal()).ToString();
|
||
//显示移动支付金额
|
||
MOBILEPAYMENT.Text = (CurrObject.OTHERPAY.TryParseToDecimal() + CurrObject.TICKETBILL.TryParseToDecimal()).ToString();
|
||
//如果是扫码或者接口上传的数据,移动支付金额默认相同
|
||
if (!string.IsNullOrWhiteSpace(CurrObject.WORKER_NAME) &&
|
||
(CurrObject.WORKER_NAME.Contains("【接口】") || CurrObject.WORKER_NAME.Contains("【扫码】")))
|
||
{
|
||
FACT_AMOUNT.Text = MOBILEPAYMENT.Text;
|
||
SearchBtn_Sale.Enabled = false;
|
||
SearchBtn_Cigarette.Enabled = false;
|
||
CallBtn_Mobile.Enabled = false;
|
||
SearchBtnPromotion.Enabled = false;
|
||
SearchOnlineBill.Enabled = false;
|
||
GetSaleData.Enabled = false;
|
||
GetCigaretteData.Enabled = false;
|
||
BtnGetPromotion.Enabled = false;
|
||
GetOnlineBill.Enabled = false;
|
||
}
|
||
}
|
||
catch { }
|
||
|
||
if (!string.IsNullOrEmpty(Request["CASHPAY"]))
|
||
{
|
||
CASHPAY.Text = Request["CASHPAY"].ToDecrypt();
|
||
}
|
||
if (!string.IsNullOrEmpty(Request["DIFFERENCE_REASON"]))
|
||
{
|
||
DIFFERENCE_REASON.Text = Request["DIFFERENCE_REASON"].ToDecrypt();
|
||
}
|
||
else if (DIFFERENCE_REASON.Text == "无结账信息")
|
||
{
|
||
DIFFERENCE_REASON.Text = "";
|
||
}
|
||
//存在长短款或者冲正金额≠0,则“流水冲正”可以操作
|
||
//if (CORRECT_AMOUNT.Text.Split('/')[0].TryParseToDecimal() != 0 ||
|
||
// DIFFERENT_PRICE.Text.TryParseToDecimal() != 0)
|
||
//{
|
||
// CallBackButton_Add.Enabled = true;
|
||
//}
|
||
//else
|
||
//{
|
||
// CallBackButton_Add.Enabled = false;
|
||
//}
|
||
|
||
#region 合计信息
|
||
if (CurrObject != null && CurrObject.PropertyObject != null && CurrObject.ENDACCOUNT_ID != null)
|
||
{
|
||
//绑定“查询促销信息”按钮事件
|
||
SearchBtnPromotion.OnClientClick = Page.GetOpenPopDialogClientScript(
|
||
"/MemberShip/Modules/101_Search/Consumption/ConsumptionList.aspx?SERVERPART_ID=" +
|
||
CurrObject.SERVERPART_ID.ToEncrypt() + "&SHOPCODE=" + CurrObject.SHOPCODE.ToEncrypt() +
|
||
"&MACHINECODE=" + CurrObject.MACHINECODE.ToEncrypt() + "&StatisticsEndDay=" +
|
||
CurrObject.ENDACCOUNT_DATE.ToEncrypt() + "&StatisticsStartDay=" +
|
||
CurrObject.ENDACCOUNT_STARTDATE.ToEncrypt(), "ConsumptionList", 1000, 600);
|
||
|
||
//绑定“查询在线订单”按钮事件
|
||
SearchOnlineBill.OnClientClick = Page.GetOpenPopDialogClientScript("SearchList/ConsumptionList.aspx?SERVERPART_CODE=" +
|
||
CurrObject.SERVERPARTCODE.ToEncrypt() + "&SHOPCODE=" + CurrObject.SHOPCODE.ToEncrypt() +
|
||
"&MACHINECODE=" + CurrObject.MACHINECODE.ToEncrypt() + "&STARTDATE=" + CurrObject.ENDACCOUNT_STARTDATE.ToEncrypt() +
|
||
"&ENDDATE=" + CurrObject.ENDACCOUNT_DATE.ToEncrypt(), "ConsumptionList", 900, 600);
|
||
|
||
#region 判断是否显示稽核数据,并绑定稽核人员信息
|
||
//如果收银机回传的“是否存在稽核数据”【0:无数据;1:有数据】的标识为1或者未生成标识【PB系统】
|
||
//则查询稽核列表,获取稽核信息
|
||
if (CurrObject.AUDIT_STATE == 1 || CurrObject.AUDIT_STATE == null)
|
||
{
|
||
//绑定稽核列表
|
||
GridViewEx1.SelectingWithInit<Business.CHECKACCOUNT>(ObjectDataSource1, GridPageEx1,
|
||
DictionaryHelper.GetDictionary(Transaction, "TREATMENT_MARK"));
|
||
|
||
if (GridViewEx1.Rows.Count > 0)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(CHECK_NAME.Text))
|
||
{
|
||
List<Business.CHECKACCOUNT> CHECKACCOUNTList = new Business.CHECKACCOUNT(this.Transaction).FillCollection(
|
||
"WHERE SERVERPART_ID = " + SERVERPART_ID.Text + " AND SHOPCODE = '" + SHOPCODE.Text +
|
||
"' AND MACHINECODE = '" + MACHINECODE.Text + "' AND CHECK_STARTDATE = TO_DATE('" +
|
||
ENDACCOUNT_STARTDATE.Text + "','YYYY/MM/DD HH24:MI:SS') AND CHECK_TYPE NOT IN ('稽核补录')");
|
||
//显示稽核人员信息
|
||
foreach (Business.CHECKACCOUNT _CHECKACCOUNT in CHECKACCOUNTList)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(CHECK_NAME.Text) || !("," + CHECK_NAME.Text + ",").Contains(
|
||
"," + _CHECKACCOUNT.WORKER_NAME + ","))
|
||
{
|
||
CHECK_NAME.Text += (string.IsNullOrEmpty(CHECK_NAME.Text.Trim()) ? "" : ",") + _CHECKACCOUNT.WORKER_NAME;
|
||
}
|
||
}
|
||
//统计稽核次数
|
||
CHECK_COUNT.Text = CHECKACCOUNTList.Count.ToString();
|
||
}
|
||
//显示稽核数据列表
|
||
Fieldset_Check.Visible = true;
|
||
}
|
||
else
|
||
{
|
||
//隐藏稽核数据列表
|
||
Fieldset_Check.Visible = false;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//隐藏稽核数据列表
|
||
Fieldset_Check.Visible = false;
|
||
}
|
||
#endregion
|
||
|
||
//如果收银人员信息为空,则绑定收银人员信息
|
||
if (string.IsNullOrEmpty(CurrObject.CASHIER_NAME))
|
||
{
|
||
DataTable _DataTable = CurrObject.ExecuteDataTable(@"SELECT
|
||
WM_CONCAT(DISTINCT CASHIER_NAME)
|
||
FROM
|
||
HIGHWAY_SELLDATA.T_PERSONSELL
|
||
WHERE
|
||
SERVERPART_ID = " + SERVERPART_ID.Text + " AND SHOPCODE = '" + SHOPCODE.Text + "' AND MACHINECODE = '" +
|
||
MACHINECODE.Text + "' AND SELL_STARTDATE >= TO_DATE('" + ENDACCOUNT_STARTDATE.Text +
|
||
"','YYYY/MM/DD HH24:MI:SS') AND SELL_ENDDATE <= TO_DATE('" + ENDACCOUNT_DATE.Text + "','YYYY/MM/DD HH24:MI:SS')");
|
||
|
||
if (_DataTable.Rows.Count > 0)
|
||
{
|
||
CASHIER_NAME.Text = _DataTable.Rows[0][0].ToString();
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
SearchOnlineBill.Enabled = false;
|
||
Fieldset_Check.Visible = false;
|
||
}
|
||
#endregion
|
||
|
||
SearchBtn.OnClientClick = Page.GetOpenPopDialogClientScript(
|
||
"SearchList/SellDataList.aspx?ENDACCOUNT_ID=" + Request["ID"], "SellDataList", 900, 600);
|
||
|
||
SearchBtn_Sale.OnClientClick = Page.GetOpenPopDialogClientScript(
|
||
"SearchList/CommoditySaleList.aspx?ENDACCOUNT_ID=" + Request["ID"], "CommoditySaleList", 1100, 600);
|
||
|
||
SearchBtn_Cigarette.OnClientClick = Page.GetOpenPopDialogClientScript(
|
||
"SearchList/CigaretteSaleList.aspx?ENDACCOUNT_ID=" + Request["ID"], "CigaretteSaleList", 900, 600);
|
||
|
||
BtnHelp.OnClientClick = Page.GetOpenPopDialogClientScript(
|
||
"/HighWay/Modules/Statistics/EndAccount/Help.aspx", "Help", 700, 150);
|
||
|
||
Page.SetControlClientAction(GetSaleData, false);
|
||
Page.SetControlClientAction(GetCigaretteData, false);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 在此加入界面的数据初始化(Page_Load之前),如DropDownList的数据源绑定等
|
||
public override void InitializeWebControl()
|
||
{
|
||
//处理标记
|
||
TREATMENT_MARK.Clear();
|
||
DictionaryHelper.BindingDropDownList("TREATMENT_MARK", TREATMENT_MARK.Items, this.Transaction);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 载入数据
|
||
public override bool LoadData()
|
||
{
|
||
bool flag = false;
|
||
//如果是工作流组件请自行修改载入的逻辑,以下是功能模块的默认代码
|
||
if (!String.IsNullOrEmpty(Request["ID"]))
|
||
{
|
||
CurrObject.ENDACCOUNT_ID_Encrypt = Request["ID"];
|
||
flag = this.Select();
|
||
if (CurrObject.DESCRIPTION_STAFF == null || CurrObject.DESCRIPTION_DATE == null)
|
||
{
|
||
DESCRIPTION_STAFF.Text = this.Page.PassportInfo.Name;
|
||
DESCRIPTION_DATE.Text = DateTime.Now.ToString();
|
||
}
|
||
}
|
||
//默认返回值,工作流组件返回True,功能模块返回False。
|
||
return (WorkFlowPage != null);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 保存事件
|
||
|
||
#region 页面保存前事件
|
||
//OnDataAction_XXXXX 有一个系列可用,在此加入界面的逻辑处理
|
||
//e.CancelDataAction 来处理是否取消该动作;
|
||
//失败的原因可以用Page.Alert()传递到页面
|
||
public override void OnDataAction_BeforeSave(DataActionEventArgs<Business.ENDACCOUNT> e)
|
||
{
|
||
//如果是扫码上传的门店,必须要上传凭证附件才能完成校验
|
||
if (WORKER_NAME.Text.Contains("【扫码】"))
|
||
{
|
||
if (new HWSB.IMAGE(Transaction).GetCount("WHERE TABLE_ID = " + e.CurrObject.KeyID +
|
||
" AND TABLE_NAME = 'HIGHWAY_SELLDATA.T_ENDACCOUNT'") == 0)
|
||
{
|
||
throw new Exception("请上传附件凭证后,再保存结账信息!");
|
||
}
|
||
}
|
||
bool ReviewFlag = false;
|
||
//稽核异常未做说明,则不允许校验通过
|
||
if (GridViewEx1.Rows.Count > 0)
|
||
{
|
||
foreach (GridViewRow _GridViewRow in GridViewEx1.Rows)
|
||
{
|
||
if (_GridViewRow.RowType == DataControlRowType.DataRow)
|
||
{
|
||
string _CHECKACCOUNT_DESC = GridViewEx1.DataKeys[_GridViewRow.RowIndex]["CHECKACCOUNT_DESC"].ToString();
|
||
string _CHECK_STATE = GridViewEx1.DataKeys[_GridViewRow.RowIndex]["CHECK_STATE"].ToString();
|
||
|
||
if (_GridViewRow.Cells[2].Text.Trim('%').TryParseToDecimal() * 10 > 2)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(_CHECKACCOUNT_DESC))
|
||
{
|
||
throw new Exception("请填写稽核异常反馈后,保存结账信息!");
|
||
}
|
||
if (_CHECK_STATE.TryParseToDecimal() == 0)
|
||
{
|
||
ReviewFlag = true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
//获取门店配置信息,数据校验是否需要限制保存事件
|
||
DataTable RTLIMITTable = new Storage.Business.RTBUSINESSLIMIT(Transaction).FillDataTable(
|
||
"WHERE SERVERPART_ID = " + e.CurrObject.SERVERPART_ID + " AND SHOPCODE = '" + e.CurrObject.SHOPCODE + "'");
|
||
//判断门店进行校验是否需要完成近10日内的账单校验
|
||
if (RTLIMITTable.Select("DATA_TYPE = 2010 AND DATA_VALUE = 2000").Length == 0 && (_UmiformCommodity.Split('|').Length < 5 ||
|
||
(_UmiformCommodity.Split('|').Length > 4 && _UmiformCommodity.Split('|')[4] == "1")))
|
||
{
|
||
string SQLString = string.Format(@"SELECT SHOPNAME,NVL(STATISTICS_DATE,ENDACCOUNT_DATE) AS ENDACCOUNT_DATE,
|
||
TO_CHAR(NVL(STATISTICS_DATE,ENDACCOUNT_DATE),'YYYY/MM/DD') AS STATISTICSDATE
|
||
FROM HIGHWAY_SELLDATA.V_ENDACCOUNT_TEMP
|
||
WHERE {0} AND SERVERPART_ID = {1} AND NVL(STATISTICS_TYPE,'0') NOT LIKE '%1020%' AND
|
||
NVL(STATISTICS_DATE,ENDACCOUNT_DATE) < TRUNC(TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS'))
|
||
ORDER BY ENDACCOUNT_DATE", "CHECK_INFO IS NULL", e.CurrObject.SERVERPART_ID,
|
||
(e.CurrObject.STATISTICS_DATE == null ? e.CurrObject.ENDACCOUNT_DATE : e.CurrObject.STATISTICS_DATE));
|
||
DataTable _DataTable = e.CurrObject.ExecuteDataTable(SQLString);
|
||
if (_DataTable.Rows.Count > 0)
|
||
{
|
||
throw new Exception(_DataTable.Rows[0]["STATISTICSDATE"].ToString().Split(' ')[0] +
|
||
_DataTable.Rows[0]["SHOPNAME"].ToString() + "等有" + _DataTable.Select("STATISTICSDATE = '" +
|
||
_DataTable.Rows[0]["STATISTICSDATE"].ToString().Split(' ')[0] + "'").Length +
|
||
"条未完成数据校验的结账信息,请先完成数据校验后进行本次账期的校验!");
|
||
}
|
||
}
|
||
e.CurrObject.CORRECT_AMOUNT = double.Parse(CORRECT_AMOUNT.Text.Split('/')[0]).Round(2);
|
||
//如果销售金额+冲正金额≠实收金额
|
||
if (TOTALSELLAMOUNT.Text.TryParseToDecimal() + CORRECTAMOUNT.Text.TryParseToDecimal() != CASHPAY.Text.TryParseToDecimal())
|
||
{
|
||
throw new Exception("0");
|
||
}
|
||
if (!WORKER_NAME.Text.Contains("【扫码】") && !WORKER_NAME.Text.Contains("【接口】") &&
|
||
!string.IsNullOrWhiteSpace(e.CurrObject.SHOPCODE))
|
||
{
|
||
HWSB.SERVERPARTSHOP _SERVERPARTSHOP = new HWSB.SERVERPARTSHOP(Transaction);
|
||
_SERVERPARTSHOP.AddSearchParameter("SERVERPART_ID", e.CurrObject.SERVERPART_ID);
|
||
_SERVERPARTSHOP.AddSearchParameter("SHOPCODE", e.CurrObject.SHOPCODE);
|
||
if (_SERVERPARTSHOP.Search())
|
||
{
|
||
if (_SERVERPARTSHOP.TRANSFER_TYPE == null || _SERVERPARTSHOP.TRANSFER_TYPE == 0)
|
||
{
|
||
if (RTLIMITTable.Select("DATA_TYPE = 2012 AND DATA_VALUE = 2000").Length == 0 &&
|
||
((decimal.Parse(FACT_AMOUNT.Text) + decimal.Parse(SALE_CORRECT.Text) !=
|
||
decimal.Parse(MOBILEPAYMENT.Text) + decimal.Parse(MOBILE_CORRECT.Text)) &&
|
||
(decimal.Parse(FACT_AMOUNT.Text) + decimal.Parse(SALE_CORRECT.Text) + OnlineAmount.Text.TryParseToDecimal() !=
|
||
decimal.Parse(MOBILEPAYMENT.Text) + decimal.Parse(MOBILE_CORRECT.Text))))
|
||
{
|
||
throw new Exception("1");
|
||
}
|
||
if (e.CurrObject.FACT_AMOUNT == 0 && decimal.Parse(MOBILEPAYMENT.Text) != 0 &&
|
||
decimal.Parse(SALE_CORRECT.Text) == 0 && decimal.Parse(MOBILE_CORRECT.Text) == 0 &&
|
||
RTLIMITTable.Select("DATA_TYPE = 2012 AND DATA_VALUE = 2000").Length > 0)
|
||
{
|
||
e.CurrObject.FACT_AMOUNT = double.Parse(MOBILEPAYMENT.Text).Round(2);
|
||
FACT_AMOUNT.Text = e.CurrObject.FACT_AMOUNT.Value.ToString("0.00");
|
||
}
|
||
}
|
||
//if (_SERVERPARTSHOP.INSALES_TYPE == 1)
|
||
//{
|
||
// if (FACTAMOUNT_SALE.Text.TryParseToDecimal() != CASHPAY.Text.TryParseToDecimal())
|
||
// {
|
||
// throw new Exception("单品金额与实收不一致,请确认一致后进行保存!");
|
||
// }
|
||
//}
|
||
}
|
||
}
|
||
//设置校验人员和校验时间
|
||
if (e.CurrObject.DESCRIPTION_STAFF == null || e.CurrObject.DESCRIPTION_STAFF == "")
|
||
{
|
||
e.CurrObject.DESCRIPTION_STAFF = Page.PassportInfo.Name;
|
||
}
|
||
if (e.CurrObject.DESCRIPTION_DATE == null)
|
||
{
|
||
e.CurrObject.DESCRIPTION_DATE = DateTime.Now;
|
||
}
|
||
e.CurrObject.CHECK_INFO = "Checked";
|
||
|
||
if (Request["DATATYPE"] == "CHECK")
|
||
{
|
||
|
||
}
|
||
else
|
||
{
|
||
//若对客营收大于0,且长短按照小金额计算或是实收金额小于对客营收或是金额误差率大于3‰或是异常稽核数据未按常规处理
|
||
if (e.CurrObject.TOTALSELLAMOUNT != 0 && (e.CurrObject.TOTALSELLAMOUNT > e.CurrObject.CASHPAY ||
|
||
(Math.Abs(e.CurrObject.DIFFERENT_PRICE.Value / e.CurrObject.TOTALSELLAMOUNT.Value) > 0.003) ||
|
||
ReviewFlag || e.CurrObject.DIFFERENT_PRICE < 0 || (e.CurrObject.DIFFERENT_PRICE > 0 &&
|
||
e.CurrObject.TOTALSELLAMOUNT + e.CurrObject.DIFFERENT_PRICE > e.CurrObject.CASHPAY)))
|
||
{
|
||
e.CurrObject.REVIEW_STATE = 1;
|
||
ISPush.Text = "1";
|
||
}
|
||
}
|
||
//记录日结账期变更记录
|
||
Business.ENDACCOUNT.SaveModifyLog(Transaction, e.CurrObject, Page.PassportInfo.ID, Page.PassportInfo.Name);
|
||
|
||
base.OnDataAction_BeforeSave(e);
|
||
}
|
||
#endregion
|
||
|
||
public override void OnDataAction_AfterSave(DataActionEventArgs<Business.ENDACCOUNT> e)
|
||
{
|
||
base.OnDataAction_AfterSave(e);
|
||
//同步日结数据到日结账期临时表(10天之内的账单数据)
|
||
Business.ENDACCOUNT_TEMP _ENDACCOUNT_TEMP = new Business.ENDACCOUNT_TEMP(Transaction);
|
||
if (((e.CurrObject.STATISTICS_DATE != null && e.CurrObject.STATISTICS_DATE > DateTime.Now.Date.AddDays(-10)) ||
|
||
e.CurrObject.ENDACCOUNT_DATE >= DateTime.Now.Date.AddDays(-10)) && _ENDACCOUNT_TEMP.GetCount(
|
||
"WHERE ENDACCOUNT_ID = " + e.CurrObject.ENDACCOUNT_ID) > 0)
|
||
{
|
||
_ENDACCOUNT_TEMP.CopyFrom(CurrObject);
|
||
_ENDACCOUNT_TEMP.Update();
|
||
}
|
||
|
||
//调用js同步结账数据到云端
|
||
//Page.ExecClientScript("SyncToCloud()");
|
||
if (!WORKER_NAME.Text.Contains("【扫码】") && !WORKER_NAME.Text.Contains("【接口】") &&
|
||
!DESCRIPTION_STAFF.Text.Contains("【补】") && !string.IsNullOrWhiteSpace(e.CurrObject.SHOPCODE))
|
||
{
|
||
HWSB.SERVERPARTSHOP _SERVERPARTSHOP = new HWSB.SERVERPARTSHOP(Transaction);
|
||
_SERVERPARTSHOP.AddSearchParameter("SERVERPART_ID", e.CurrObject.SERVERPART_ID);
|
||
_SERVERPARTSHOP.AddSearchParameter("SHOPCODE", e.CurrObject.SHOPCODE);
|
||
if (_SERVERPARTSHOP.Search())
|
||
{
|
||
//存储门店内码
|
||
SERVERPARTSHOP_ID.Text = _SERVERPARTSHOP.KeyID;
|
||
//判断日结数据是否从接口上传,若是从接口上传,则不记录单品数据和销售额的一致性
|
||
if (_SERVERPARTSHOP.TRANSFER_TYPE == null || _SERVERPARTSHOP.TRANSFER_TYPE == 0)
|
||
{
|
||
BusinessLogModel businessLogModel = new BusinessLogModel();
|
||
businessLogModel.BUSINESSLOG_TYPE = 100000;
|
||
businessLogModel.BUSINESS_ID = e.CurrObject.ENDACCOUNT_ID;
|
||
businessLogModel.TABLE_NAME = "T_ENDACCOUNT";
|
||
businessLogModel.OWNER_NAME = "HIGHWAY_SELLDATA";
|
||
businessLogModel.UNIQUECODE = e.CurrObject.SERVERPARTCODE + "|" + e.CurrObject.SHOPCODE + "|" +
|
||
e.CurrObject.ENDACCOUNT_DATE + "|" + e.CurrObject.MACHINECODE + "|" +
|
||
CASHPAY.Text + "|" + _SERVERPARTSHOP.SHOPTRADE;
|
||
businessLogModel.SERVERPARTCODE = e.CurrObject.SERVERPARTCODE;
|
||
businessLogModel.SHOPCODE = e.CurrObject.SHOPCODE;
|
||
businessLogModel.MACHINECODE = e.CurrObject.MACHINECODE;
|
||
businessLogModel.BUSINESSTYPE = _SERVERPARTSHOP.SHOPTRADE.TryParseToInt();
|
||
businessLogModel.SALE_AMOUNT = double.Parse(FACTAMOUNT_SALE.Text).Round(2);
|
||
businessLogModel.CASHPAY_AMOUNT = double.Parse(CASHPAY.Text).Round(2);
|
||
businessLogModel.ENDACCOUNT_ID = e.CurrObject.ENDACCOUNT_ID;
|
||
businessLogModel.STATISTICS_DATE = e.CurrObject.ENDACCOUNT_DATE.Value.ToString("yyyyMMddHHmmss").TryParseToLong();
|
||
|
||
#region 记录日结账期单品销售日志,判断单品数据是否和实收金额一致
|
||
//删除已存储到日志表的结账单品日志信息
|
||
string SQLString = "DELETE FROM PLATFORM_FRAMEWORK.T_BUSINESSLOG WHERE BUSINESS_ID = " +
|
||
e.CurrObject.ENDACCOUNT_ID + " AND TABLE_NAME = 'T_ENDACCOUNT' AND OWNER_NAME = 'HIGHWAY_SELLDATA'";
|
||
new User(Transaction).ExecuteNonQuery(SQLString, null);
|
||
//如果是扫码上传的数据,则增加标识
|
||
if (WORKER_NAME.Text.Contains("【扫】"))
|
||
{
|
||
businessLogModel.BUSINESSLOG_CONTENT = "【扫】" + businessLogModel.BUSINESSLOG_CONTENT;
|
||
}
|
||
//判断单品数据和实收金额是否一致
|
||
if (FACTAMOUNT_SALE.Text.TryParseToDecimal() != TOTALSELLAMOUNT.Text.TryParseToDecimal() &&
|
||
FACTAMOUNT_SALE.Text.TryParseToDecimal() != CASHPAY.Text.TryParseToDecimal())
|
||
{
|
||
//单品金额和实收金额不一致时,只记录收银机上传的单品金额,方便收银机重传数据
|
||
businessLogModel.SALE_AMOUNT -= CurrObject.CORRECT_AMOUNT + CurrObject.FACTAMOUNT;
|
||
|
||
businessLogModel.DATA_CONSISTENCY = 0;
|
||
businessLogModel.CHECK_STATE = 0;
|
||
}
|
||
else if (_SERVERPARTSHOP.INSALES_TYPE == 1)
|
||
{
|
||
businessLogModel.DATA_CONSISTENCY = 1;
|
||
businessLogModel.CHECK_STATE = 0;
|
||
}
|
||
else
|
||
{
|
||
businessLogModel.DATA_CONSISTENCY = 1;
|
||
businessLogModel.CHECK_STATE = 1;
|
||
}
|
||
//日志内容
|
||
businessLogModel.BUSINESSLOG_CONTENT = e.CurrObject.SERVERPART_NAME + e.CurrObject.SHOPNAME +
|
||
"【" + e.CurrObject.ENDACCOUNT_DATE + "】" + e.CurrObject.MACHINECODE + ",单品销售金额:" +
|
||
businessLogModel.SALE_AMOUNT + ",实收金额:" + businessLogModel.CASHPAY_AMOUNT;
|
||
|
||
HZQR.Common.Common.BusinessHelper.RecordBusinessLog(Transaction, businessLogModel);
|
||
#endregion
|
||
|
||
#region 如果单品数据和实收金额是一致的,则若是办理进销存业务的门店调用接口记录单品扣减日志
|
||
//if (businessLogModel.DATA_CONSISTENCY == 1)
|
||
//{
|
||
// if (_SERVERPARTSHOP.INSALES_TYPE == 1)
|
||
// {
|
||
// //js调用"记录进销存单品销售日志"接口
|
||
// if (!string.IsNullOrWhiteSpace(_SERVERPARTSHOP.SHOPTRADE) && _SERVERPARTSHOP.SHOPTRADE.StartsWith("3"))
|
||
// {
|
||
// //删除已记录的进销存单品日志
|
||
// SQLString = "DELETE FROM SENDREC_STORAGE.T_STOCKLOG WHERE SERVERPARTSHOP_ID = " +
|
||
// _SERVERPARTSHOP.SERVERPARTSHOP_ID + " AND OPERATE_TYPE = 5000 AND OPERATE_DATE = " +
|
||
// e.CurrObject.ENDACCOUNT_DATE.Value.ToString("yyyyMMddHHmmss");
|
||
// new SRSB.STOCKLOG(Transaction).ExecuteNonQuery(SQLString, null);
|
||
// //如果是餐饮业态的门店,则调用物资成本接口记录销售日志
|
||
// Page.ExecClientScript("DeductStock('SendRec')");
|
||
// }
|
||
// else
|
||
// {
|
||
// //删除已记录的进销存单品日志
|
||
// SQLString = "DELETE FROM SALESTORE_STORAGE.T_STOCKLOG WHERE SERVERPARTSHOP_ID = " +
|
||
// _SERVERPARTSHOP.SERVERPARTSHOP_ID + " AND OPERATE_DATE = TO_DATE('" +
|
||
// e.CurrObject.ENDACCOUNT_DATE + "','YYYY/MM/DD HH24:MI:SS') AND OPERATE_TYPE = 5000";
|
||
// new SSSB.STOCKLOG(Transaction).ExecuteNonQuery(SQLString, null);
|
||
// //否则调用进销存接口记录销售日志
|
||
// Page.ExecClientScript("DeductStock('SaleStore')");
|
||
// }
|
||
// }
|
||
//}
|
||
#endregion
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 获取香烟数据
|
||
protected void GetCigaretteData_Click(object sender, EventArgs e)
|
||
{
|
||
Business.ENDACCOUNT _ENDACCOUNT = new Business.ENDACCOUNT(this.Transaction);
|
||
_ENDACCOUNT.ENDACCOUNT_ID = Request["ID"].ToDecryptInt32();
|
||
if (_ENDACCOUNT.Select())
|
||
{
|
||
string hisName = "";
|
||
if (_ENDACCOUNT.ENDACCOUNT_DATE < DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM-01")))
|
||
{
|
||
hisName = "_HISTORY";
|
||
}
|
||
|
||
//香烟合计
|
||
DataTable _DataTable = _ENDACCOUNT.ExecuteDataTable(
|
||
"SELECT * FROM HIGHWAY_SELLDATA.V_SUPPLEMENT WHERE TICKETCODE = '" + Request["ID"] + "'");
|
||
DataTable dt = new DataTable();
|
||
|
||
#region 香烟报表数据
|
||
string _COMMODITY_TYPENAME = "", _COMMODITYTYPE_ID = "";
|
||
foreach (HWSB.COMMODITYTYPE _COMMODITYTYPE in new HWSB.COMMODITYTYPE(CurrObject).FillCollection(
|
||
"WHERE COMMODITYTYPE_CODE IN ('" + CigaretteType.Value.Replace(",", "','") + "') AND PROVINCE_ID = " + PROVINCE_CODE.Text))
|
||
{
|
||
_COMMODITY_TYPENAME += (_COMMODITY_TYPENAME == "" ? "" : ",") + "'" + _COMMODITYTYPE.COMMODITYTYPE_NAME + "'";
|
||
_COMMODITYTYPE_ID += (_COMMODITYTYPE_ID == "" ? "" : ",") + _COMMODITYTYPE.COMMODITYTYPE_ID;
|
||
}
|
||
if (!string.IsNullOrEmpty(_COMMODITY_TYPENAME))
|
||
{
|
||
string ExtraCode = "";
|
||
if (hisName == "")
|
||
{
|
||
switch (PROVINCE_CODE.Text)
|
||
{
|
||
case "4962"://温州
|
||
ExtraCode = "_330300";
|
||
break;
|
||
case "3544"://安徽
|
||
ExtraCode = "_340000";
|
||
break;
|
||
case "3760"://四川
|
||
ExtraCode = "_510000";
|
||
break;
|
||
case "8832"://甘肃
|
||
ExtraCode = "_620000";
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
ExtraCode = hisName;
|
||
}
|
||
string SQLString = string.Format(@"SELECT
|
||
NVL(SUM(TICKETCOUNT),0),NVL(SUM(TOTALCOUNT),0),NVL(SUM(TOTALSELLAMOUNT),0)
|
||
FROM HIGHWAY_EXCHANGE.{0} A
|
||
WHERE
|
||
A.SERVERPARTCODE = '{1}' AND A.SHOPCODE = '{2}' AND
|
||
A.MACHINECODE = '{3}' AND A.COMMODITYTYPE_ID IN ({4}) AND
|
||
A.ENDDATE = TO_DATE('{5}','YYYY-MM-DD HH24:MI:SS')",
|
||
"T_COMMODITYSALE" + ExtraCode, SERVERPARTCODE.Text, SHOPCODE.Text, MACHINECODE.Text,
|
||
_COMMODITYTYPE_ID, ENDACCOUNT_DATE.Text);
|
||
if (ExtraCode == "")
|
||
{
|
||
dt = CurrObject.ExecuteDataTable(SQLString);
|
||
}
|
||
else
|
||
{
|
||
dt = new ABNORMALITY(Transaction).ExecuteDataTable(SQLString);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
decimal _SELLCOUNT_CIGARETTE = 0, _FACTAMOUNT_CIGARETTE = 0;
|
||
if (dt.Rows.Count > 0)
|
||
{
|
||
TICKETCODE_CIGARETTE.Text = dt.Rows[0][0].ToString();
|
||
_SELLCOUNT_CIGARETTE = decimal.Parse(dt.Rows[0][1].ToString());
|
||
_FACTAMOUNT_CIGARETTE = decimal.Parse(dt.Rows[0][2].ToString());
|
||
}
|
||
_FACTAMOUNT_CIGARETTE = _FACTAMOUNT_CIGARETTE + (_DataTable.Rows.Count > 0 ?
|
||
decimal.Parse(_DataTable.Rows[0]["CIGARETTE_SUPPLEMENT"].ToString()) : 0);
|
||
SELLCOUNT_CIGARETTE.Text = (_SELLCOUNT_CIGARETTE + (_DataTable.Rows.Count > 0 ?
|
||
decimal.Parse(_DataTable.Rows[0]["CIGARETTE_SELLCOUNT"].ToString()) : 0)).ToString();
|
||
FACTAMOUNT_CIGARETTE.Text = _FACTAMOUNT_CIGARETTE.ToString();
|
||
CIGARETTEAMOUNT.Text = FACTAMOUNT_CIGARETTE.Text;
|
||
Page.Alert("获取成功!香烟金额为" + FACTAMOUNT_CIGARETTE.Text);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 获取单品数据
|
||
protected void GetSaleData_Click(object sender, EventArgs e)
|
||
{
|
||
Business.ENDACCOUNT _ENDACCOUNT = new Business.ENDACCOUNT(this.Transaction);
|
||
_ENDACCOUNT.ENDACCOUNT_ID_Encrypt = Request["ID"];
|
||
if (_ENDACCOUNT.Select())
|
||
{
|
||
string hisName = "";
|
||
if (_ENDACCOUNT.ENDACCOUNT_DATE < DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM-01")))
|
||
{
|
||
hisName = "_HISTORY";
|
||
}
|
||
string ExtraCode = "";
|
||
if (hisName == "")
|
||
{
|
||
switch (PROVINCE_CODE.Text)
|
||
{
|
||
case "4962"://温州
|
||
ExtraCode = "_330300";
|
||
break;
|
||
case "3544"://安徽
|
||
ExtraCode = "_340000";
|
||
break;
|
||
case "3760"://四川
|
||
ExtraCode = "_510000";
|
||
break;
|
||
case "8832"://甘肃
|
||
ExtraCode = "_620000";
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
ExtraCode = hisName;
|
||
}
|
||
string SQLString = string.Format(@"SELECT
|
||
NVL(SUM(TICKETCOUNT),0),NVL(SUM(TOTALCOUNT),0),NVL(SUM(TOTALSELLAMOUNT),0)
|
||
FROM
|
||
HIGHWAY_EXCHANGE.{4}
|
||
WHERE
|
||
SERVERPARTCODE = '{0}' AND SHOPCODE = '{1}' AND MACHINECODE = '{2}' AND
|
||
ENDDATE = TO_DATE('{3}', 'YYYY/MM/DD HH24:MI:SS')",
|
||
SERVERPARTCODE.Text, SHOPCODE.Text, MACHINECODE.Text, ENDACCOUNT_DATE.Text, "T_COMMODITYSALE" + ExtraCode);
|
||
DataTable dt;
|
||
if (ExtraCode == "")
|
||
{
|
||
dt = CurrObject.ExecuteDataTable(SQLString);
|
||
}
|
||
else
|
||
{
|
||
dt = new ABNORMALITY(Transaction).ExecuteDataTable(SQLString);
|
||
}
|
||
if (dt.Rows.Count > 0)
|
||
{
|
||
TICKETCODE_SALE.Text = dt.Rows[0][0].ToString();
|
||
SELLCOUNT_SALE.Text = dt.Rows[0][1].ToString();
|
||
FACTAMOUNT_SALE.Text = dt.Rows[0][2].ToString();
|
||
SALEAMOUNT.Text = FACTAMOUNT_SALE.Text;
|
||
}
|
||
else
|
||
{
|
||
TICKETCODE_SALE.Text = "0";
|
||
SELLCOUNT_SALE.Text = "0.00";
|
||
FACTAMOUNT_SALE.Text = "0.00";
|
||
SALEAMOUNT.Text = FACTAMOUNT_SALE.Text;
|
||
}
|
||
Page.Alert("单品金额为" + FACTAMOUNT_SALE.Text);
|
||
}
|
||
else
|
||
{
|
||
Page.Alert("获取失败!");
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 获取促销数据
|
||
protected void BtnGetPromotion_Click(object sender, EventArgs e)
|
||
{
|
||
Business.ENDACCOUNT _ENDACCOUNT = new Business.ENDACCOUNT(this.Transaction);
|
||
_ENDACCOUNT.ENDACCOUNT_ID = Request["ID"].ToDecryptInt32();
|
||
if (_ENDACCOUNT.Select())
|
||
{
|
||
DataTable dt = _ENDACCOUNT.ExecuteDataTable(@"SELECT NVL(SUM(CONSUME_COUNT),0),NVL(SUM(CONSUME_PRICE),0)
|
||
FROM MEMBERSHIP_STORAGE.T_CONSUMPTIONRECORD WHERE SERVERPART_ID = " + _ENDACCOUNT.SERVERPART_ID +
|
||
" AND SHOPCODE = '" + _ENDACCOUNT.SHOPCODE + "' AND MACHINECODE = '" + _ENDACCOUNT.MACHINECODE +
|
||
"' AND CONSUMPTIONRECORD_DATE BETWEEN TO_DATE('" + _ENDACCOUNT.ENDACCOUNT_STARTDATE +
|
||
"','YYYY-MM-DD HH24:MI:SS') AND TO_DATE('" + _ENDACCOUNT.ENDACCOUNT_DATE + "','YYYY-MM-DD HH24:MI:SS')");
|
||
SELLCOUNT_PROMOTION.Text = dt.Rows[0][0].ToString();
|
||
FACTAMOUNT_PROMOTION.Text = dt.Rows[0][1].ToString();
|
||
Page.Alert("获取成功!促销金额为" + FACTAMOUNT_PROMOTION.Text);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 一键数据校验
|
||
public bool CorrectPrice()
|
||
{
|
||
bool flag = true;
|
||
double _CorrectPrice = 0.00;
|
||
try
|
||
{
|
||
Business.SUPPLEMENT _SUPPLEMENT = new Business.SUPPLEMENT(Transaction);
|
||
if (decimal.Parse(FACT_AMOUNT.Text) != decimal.Parse(MOBILEPAYMENT.Text) + decimal.Parse(MOBILE_CORRECT.Text))
|
||
{
|
||
_SUPPLEMENT.ResetProperty();
|
||
_CorrectPrice = double.Parse(FACT_AMOUNT.Text) - double.Parse(MOBILEPAYMENT.Text) -
|
||
double.Parse(MOBILE_CORRECT.Text);
|
||
_SUPPLEMENT.SERVERPART_ID = int.Parse(SERVERPART_ID.Text);
|
||
_SUPPLEMENT.SERVERPART_NAME = SERVERPART_NAME.Text;
|
||
_SUPPLEMENT.PROVINCE_CODE = int.Parse(PROVINCE_CODE.Text);
|
||
_SUPPLEMENT.COMMODITY_NAME = "补充销售流水";
|
||
_SUPPLEMENT.COMMODITY_DESC = "移动支付冲正金额";
|
||
_SUPPLEMENT.OPERATE_DATE = System.DateTime.Now;
|
||
_SUPPLEMENT.SELLDATA_DATE = DateTime.Parse(ENDACCOUNT_DATE.Text);
|
||
_SUPPLEMENT.SERVERPARTCODE = SERVERPARTCODE.Text;
|
||
_SUPPLEMENT.SHOPCODE = SHOPCODE.Text;
|
||
_SUPPLEMENT.SHOPNAME = SHOPNAME.Text;
|
||
_SUPPLEMENT.MACHINECODE = MACHINECODE.Text;
|
||
_SUPPLEMENT.TICKETCODE = ENDACCOUNT_ID.Text.ToEncrypt();
|
||
_SUPPLEMENT.SELLCOUNT = 1;
|
||
_SUPPLEMENT.SELLPRICE = _CorrectPrice;
|
||
_SUPPLEMENT.OFFPRICE = 0;
|
||
_SUPPLEMENT.FACTAMOUNT = _CorrectPrice;
|
||
_SUPPLEMENT.VALID = 1;
|
||
_SUPPLEMENT.SELLDESC = "一键移动支付冲正";
|
||
_SUPPLEMENT.Insert();
|
||
MOBILE_CORRECT.Text = (double.Parse(MOBILE_CORRECT.Text) + _CorrectPrice).ToString("0.00");
|
||
CORRECT_AMOUNT.Text = (double.Parse(CORRECT_AMOUNT.Text.Split('/')[0]) +
|
||
_CorrectPrice).ToString("0.00") + "/" + MOBILE_CORRECT.Text;
|
||
}
|
||
if (decimal.Parse(CASHPAY.Text) != decimal.Parse(TOTALSELLAMOUNT.Text) +
|
||
decimal.Parse(CORRECT_AMOUNT.Text.Split('/')[0]))
|
||
{
|
||
_SUPPLEMENT.ResetProperty();
|
||
_CorrectPrice = double.Parse(CASHPAY.Text) - double.Parse(TOTALSELLAMOUNT.Text) -
|
||
double.Parse(CORRECT_AMOUNT.Text.Split('/')[0]);
|
||
_SUPPLEMENT.SERVERPART_ID = int.Parse(SERVERPART_ID.Text);
|
||
_SUPPLEMENT.SERVERPART_NAME = SERVERPART_NAME.Text;
|
||
_SUPPLEMENT.PROVINCE_CODE = int.Parse(PROVINCE_CODE.Text);
|
||
_SUPPLEMENT.COMMODITY_NAME = "补充销售流水";
|
||
_SUPPLEMENT.COMMODITY_DESC = "销售流水冲正金额";
|
||
_SUPPLEMENT.OPERATE_DATE = System.DateTime.Now;
|
||
_SUPPLEMENT.SELLDATA_DATE = DateTime.Parse(ENDACCOUNT_DATE.Text);
|
||
_SUPPLEMENT.SERVERPARTCODE = SERVERPARTCODE.Text;
|
||
_SUPPLEMENT.SHOPCODE = SHOPCODE.Text;
|
||
_SUPPLEMENT.SHOPNAME = SHOPNAME.Text;
|
||
_SUPPLEMENT.MACHINECODE = MACHINECODE.Text;
|
||
_SUPPLEMENT.TICKETCODE = ENDACCOUNT_ID.Text.ToEncrypt();
|
||
_SUPPLEMENT.SELLCOUNT = 1;
|
||
_SUPPLEMENT.SELLPRICE = _CorrectPrice;
|
||
_SUPPLEMENT.OFFPRICE = 0;
|
||
_SUPPLEMENT.FACTAMOUNT = _CorrectPrice;
|
||
_SUPPLEMENT.VALID = 1;
|
||
_SUPPLEMENT.SELLDESC = "一键销售流水冲正";
|
||
_SUPPLEMENT.Insert();
|
||
CASH_CORRECT.Text = (double.Parse(CASH_CORRECT.Text) + _CorrectPrice).ToString("0.00");
|
||
CORRECT_AMOUNT.Text = (double.Parse(CORRECT_AMOUNT.Text.Split('/')[0]) +
|
||
_CorrectPrice).ToString("0.00") + "/" + MOBILE_CORRECT.Text;
|
||
}
|
||
}
|
||
catch
|
||
{
|
||
Transaction.Rollback();
|
||
flag = false;
|
||
}
|
||
return flag;
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 流水冲正按钮事件
|
||
protected void CallBackButton_Add_CallBackClick(object sender, ClientSetEventArgs e)
|
||
{
|
||
#region 稽核异常未做说明,则不允许进行流水冲正操作
|
||
if (GridViewEx1.Rows.Count > 0)
|
||
{
|
||
foreach (GridViewRow _GridViewRow in GridViewEx1.Rows)
|
||
{
|
||
if (_GridViewRow.RowType == DataControlRowType.DataRow)
|
||
{
|
||
string _CHECKACCOUNT_DESC = GridViewEx1.DataKeys[_GridViewRow.RowIndex]["CHECKACCOUNT_DESC"].ToString();
|
||
|
||
if (_GridViewRow.Cells[2].Text.Trim('%').TryParseToDecimal() * 10 > 2)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(_CHECKACCOUNT_DESC))
|
||
{
|
||
e.ExcuteClientScript(Page.GetAlertStr("请填写稽核异常反馈后,再进行流水冲正!"));
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
if (TREATMENT_MARK.SelectedValue == "2")
|
||
{
|
||
e.ExcuteClientScript(Page.GetOpenPopDialogClientScript("SaleData/SUPPLEMENTPage.aspx?ENDACCOUNT_ID=" +
|
||
Request["ID"] + "&FACT_AMOUNT=" + FACT_AMOUNT.Text.Trim().ToEncrypt() + "&MOBILEPAYMENT=" +
|
||
MOBILEPAYMENT.Text.Trim().ToEncrypt() + "&MOBILE_CORRECT=" + MOBILE_CORRECT.Text.Trim().ToEncrypt() +
|
||
"&CORRECT_AMOUNT=" + CORRECT_AMOUNT.Text.Trim().Split('/')[0].ToEncrypt() + "&FACTAMOUNT_SALE=" +
|
||
FACTAMOUNT_SALE.Text.Trim().ToEncrypt() + "&SALE_CORRECT=" + SALE_CORRECT.Text.Trim().ToEncrypt() +
|
||
"&CASH_CORRECT=" + CASH_CORRECT.Text.Trim().ToEncrypt() + "&CASHPAY=" + CASHPAY.Text.Trim().ToEncrypt() +
|
||
"&SELLCOUNT_SALE=" + SELLCOUNT_SALE.Text.ToEncrypt() + "&TICKET_COUNT=" + TICKET_COUNT.Text.ToEncrypt() +
|
||
"&SELLCOUNT_CIGARETTE=" + SELLCOUNT_CIGARETTE.Text.ToEncrypt() + "&FACTAMOUNT_CIGARETTE=" +
|
||
FACTAMOUNT_CIGARETTE.Text.ToEncrypt() + "&readonly=true", "SUPPLEMENTPage", 1100, 800, true, false, true));
|
||
}
|
||
else
|
||
{
|
||
e.ExcuteClientScript(Page.GetOpenPopDialogClientScript("SaleData/SUPPLEMENTPage.aspx?ENDACCOUNT_ID=" +
|
||
Request["ID"] + "&FACT_AMOUNT=" + FACT_AMOUNT.Text.Trim().ToEncrypt() + "&MOBILEPAYMENT=" +
|
||
MOBILEPAYMENT.Text.Trim().ToEncrypt() + "&MOBILE_CORRECT=" + MOBILE_CORRECT.Text.Trim().ToEncrypt() +
|
||
"&CORRECT_AMOUNT=" + CORRECT_AMOUNT.Text.Trim().Split('/')[0].ToEncrypt() + "&FACTAMOUNT_SALE=" +
|
||
FACTAMOUNT_SALE.Text.Trim().ToEncrypt() + "&SALE_CORRECT=" + SALE_CORRECT.Text.Trim().ToEncrypt() +
|
||
"&CASH_CORRECT=" + CASH_CORRECT.Text.Trim().ToEncrypt() + "&CASHPAY=" + CASHPAY.Text.Trim().ToEncrypt() +
|
||
"&SELLCOUNT_SALE=" + SELLCOUNT_SALE.Text.ToEncrypt() + "&TICKET_COUNT=" + TICKET_COUNT.Text.ToEncrypt() +
|
||
"&SELLCOUNT_CIGARETTE=" + SELLCOUNT_CIGARETTE.Text.ToEncrypt() + "&readonly=" + Request["readonly"] +
|
||
"&FACTAMOUNT_CIGARETTE=" + FACTAMOUNT_CIGARETTE.Text.ToEncrypt(), "SUPPLEMENTPage", 1100, 800, true, false, true));
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 查询移动支付金额
|
||
protected void CallBtn_Mobile_CallBackClick(object sender, ClientSetEventArgs e)
|
||
{
|
||
e.ExcuteClientScript(Page.GetOpenPopDialogClientScript("SearchList/MobilePayList.aspx?ENDACCOUNT_ID=" +
|
||
Request["ID"] + "&MOBILEPAYMENT=" + MOBILEPAYMENT.Text.ToEncrypt() + "&FACT_AMOUNT=" +
|
||
FACT_AMOUNT.Text.ToEncrypt(), "MobilePayList", 1150, 600, true, false, true));
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 获取线上订单信息
|
||
protected void GetOnlineBill_Click(object sender, EventArgs e)
|
||
{
|
||
DataTable _DataTable = new MSPB.CONSUMPTIONRECORD(CurrObject).ExecuteDataTable(@"SELECT
|
||
COUNT(CONSUMPTIONRECORD_ID) AS ONLINETICKET,NVL(SUM(CONSUME_PRICE),0) AS CONSUME_PRICE,
|
||
NVL(SUM(COUPON_AMOUNT),0) AS COUPON_AMOUNT,NVL(SUM(PAY_AMOUNT),0) AS PAY_AMOUNT
|
||
FROM MOBILESERVICE_PLATFORM.T_CONSUMPTIONRECORD WHERE CONSUMPTIONRECORD_TYPE IN (5020,5030,6000) AND
|
||
CONSUMPTIONRECORD_STATE BETWEEN 1010 AND 5000 AND SERVERPART_CODE = '" + SERVERPARTCODE.Text +
|
||
"' AND SHOPCODE = '" + SHOPCODE.Text + "' AND MACHINECODE = '" + MACHINECODE.Text +
|
||
"' AND CONSUMPTIONRECORD_DATE BETWEEN TO_DATE('" + ENDACCOUNT_STARTDATE.Text +
|
||
"','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('" + ENDACCOUNT_DATE.Text + "','YYYY/MM/DD HH24:MI:SS')");
|
||
if (_DataTable.Rows.Count > 0 && _DataTable.Rows[0][0].ToString() != "")
|
||
{
|
||
OnlineTicket.Text = _DataTable.Rows[0]["ONLINETICKET"].ToString();
|
||
OnlineAmount.Text = _DataTable.Rows[0]["CONSUME_PRICE"].ToString();
|
||
}
|
||
else
|
||
{
|
||
OnlineTicket.Text = "0";
|
||
OnlineAmount.Text = "0.00";
|
||
}
|
||
Page.Alert("获取成功!在线订单金额为" + OnlineAmount.Text);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 列表事件
|
||
//查询
|
||
protected void ButtonSearch_CallBackClick(object sender, ClientSetEventArgs e)
|
||
{
|
||
GridViewEx1.Selecting<Business.CHECKACCOUNT>(ObjectDataSource1, GridPageEx1);
|
||
//设置UI变化
|
||
e.SetValue(GridViewEx1);
|
||
e.SetValue(GridPageEx1);
|
||
}
|
||
|
||
//翻页事件
|
||
protected void GridPageEx1_CallBackPageChanged(object src, ClientSetEventArgs e)
|
||
{
|
||
GridViewEx1.Pagging<Business.CHECKACCOUNT>(ObjectDataSource1, GridPageEx1);
|
||
//设置UI变化
|
||
e.SetValue(GridViewEx1);
|
||
}
|
||
|
||
//查询SQL设置
|
||
protected void GridViewEx1_SelectMethodParameters(object sender, SelectMethodParametersArgs e)
|
||
{
|
||
if (AUDIT_STATE.Text == "0")
|
||
{
|
||
//若没有稽核数据,则返回空列表
|
||
e.AddAndParams("1", 2);
|
||
}
|
||
else
|
||
{
|
||
//且搜索条件
|
||
string NoWhereSql = "";
|
||
if (!string.IsNullOrEmpty(SERVERPART_ID.Text))
|
||
{
|
||
e.AddAndParams("SERVERPART_ID", SERVERPART_ID.Text);
|
||
if (!string.IsNullOrEmpty(SHOPCODE.Text))
|
||
{
|
||
e.AddAndParams("SHOPCODE", SHOPCODE.Text);
|
||
if (!string.IsNullOrEmpty(MACHINECODE.Text))
|
||
{
|
||
e.AddAndParams("MACHINECODE", MACHINECODE.Text);
|
||
}
|
||
//稽核补录数据不显示在列表上,体现在对应稽核数据中
|
||
NoWhereSql = "CHECK_TYPE <> '稽核补录'";
|
||
|
||
//开始时间
|
||
if (!string.IsNullOrWhiteSpace(ENDACCOUNT_STARTDATE.Text))
|
||
{
|
||
NoWhereSql += " AND CHECK_STARTDATE = TO_DATE('" +
|
||
ENDACCOUNT_STARTDATE.Text + "','YYYY/MM/DD HH24:MI:SS')";
|
||
}
|
||
|
||
e.SetOtherUserCustomWhereSqlString = NoWhereSql;
|
||
}
|
||
else
|
||
{
|
||
e.AddAndParams("1", 2);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
e.AddAndParams("1", 2);
|
||
}
|
||
e.AddOrderByParams("CHECK_ENDDATE", false);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 行绑定事件
|
||
DataTable SupplementTable = null;
|
||
protected void GridViewEx1_RowDataBound(object sender, GridViewRowEventArgs e)
|
||
{
|
||
if (e.Row.RowType == DataControlRowType.Header)
|
||
{
|
||
SupplementTable = new Business.CHECKACCOUNT(Transaction).ExecuteDataTable(string.Format(
|
||
@"SELECT SERVERPART_ID,PROVINCE_CODE,SHOPCODE,MACHINECODE,
|
||
CHECK_STARTDATE,CHECK_ENDDATE,TOTALSELLAMOUNT
|
||
FROM {1} WHERE CHECK_TYPE = '稽核补录'{0}", GetWhereSql(), GridViewEx1.DataTableName));
|
||
CHECK_REPLENISH.Text = SupplementTable.Compute("sum(TOTALSELLAMOUNT)", "").ToString();
|
||
}
|
||
else if (e.Row.RowType == DataControlRowType.DataRow)
|
||
{
|
||
string _SUPPLEMENT = ""; //显示补录金额
|
||
string _CHECK_STARTDATE = GridViewEx1.DataKeys[e.Row.RowIndex].Values["CHECK_STARTDATE"].ToString();
|
||
string _CHECK_ENDDATE = GridViewEx1.DataKeys[e.Row.RowIndex].Values["CHECK_ENDDATE"].ToString();
|
||
string _CHECKACCOUNT_ID = GridViewEx1.DataKeys[e.Row.RowIndex].Values["CHECKACCOUNT_ID"].ToEncrypt();
|
||
string _REPLENISH_AMOUNT = GridViewEx1.DataKeys[e.Row.RowIndex].Values["REPLENISH_AMOUNT"].ToString();
|
||
//获取稽核长短款
|
||
decimal.TryParse(e.Row.Cells[3].Text.Replace(" ", "0"), out decimal _Price);
|
||
//处理稽核补录金额
|
||
if (_Price > 0)
|
||
{
|
||
//查询当前稽核数据是否有对应的补录记录
|
||
DataRow[] dataRow = SupplementTable.Select(string.Format(
|
||
@"SERVERPART_ID = '{0}' AND PROVINCE_CODE = '{1}' AND SHOPCODE = '{2}' AND
|
||
MACHINECODE = '{3}' AND CHECK_STARTDATE = '{4}' AND CHECK_ENDDATE >= '{5}'",
|
||
SERVERPART_ID.Text, PROVINCE_CODE.Text, SHOPCODE.Text,
|
||
MACHINECODE.Text, _CHECK_STARTDATE, _CHECK_ENDDATE));
|
||
if (dataRow.Length > 0)
|
||
{
|
||
decimal SupplementAmount = 0;
|
||
//查询下一次稽核时间
|
||
DataTable dtCheckAccount = new Business.CHECKACCOUNT(Transaction).FillDataTable(string.Format(
|
||
@"WHERE CHECK_TYPE <> '稽核补录' AND PROVINCE_CODE = '{1}' AND SERVERPART_ID = '{0}' AND
|
||
SHOPCODE = '{2}' AND CHECK_STARTDATE = TO_DATE('{4}','YYYY/MM/DD HH24:MI:SS') AND
|
||
MACHINECODE = '{3}' AND CHECK_ENDDATE > TO_DATE('{5}','YYYY/MM/DD HH24:MI:SS')",
|
||
SERVERPART_ID.Text, PROVINCE_CODE.Text, SHOPCODE.Text,
|
||
MACHINECODE.Text, _CHECK_STARTDATE, _CHECK_ENDDATE));
|
||
if (dtCheckAccount.Rows.Count > 0)
|
||
{
|
||
foreach (DataRow drSupplement in SupplementTable.Select(string.Format(
|
||
@"SERVERPART_ID = '{0}' AND PROVINCE_CODE = '{1}' AND SHOPCODE = '{2}' AND
|
||
MACHINECODE = '{3}' AND CHECK_STARTDATE = '{4}' AND CHECK_ENDDATE >= '{5}' AND CHECK_ENDDATE < '{6}'",
|
||
SERVERPART_ID.Text, PROVINCE_CODE.Text, SHOPCODE.Text,
|
||
MACHINECODE.Text, _CHECK_STARTDATE, _CHECK_ENDDATE,
|
||
dtCheckAccount.Select("", "CHECK_ENDDATE")[0]["CHECK_ENDDATE"].ToString())))
|
||
{
|
||
SupplementAmount += drSupplement["TOTALSELLAMOUNT"].TryParseToDecimal();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
foreach (DataRow drSupplement in dataRow)
|
||
{
|
||
SupplementAmount += drSupplement["TOTALSELLAMOUNT"].TryParseToDecimal();
|
||
}
|
||
}
|
||
|
||
e.Row.Cells[3].Text += "/" + SupplementAmount.ToString();
|
||
e.Row.Cells[3].ForeColor = Color.Green;
|
||
e.Row.Cells[3].Font.Bold = true;
|
||
_SUPPLEMENT = SupplementAmount.ToString();
|
||
}
|
||
else
|
||
{
|
||
e.Row.Cells[3].Text += "/0";
|
||
_SUPPLEMENT = "0";
|
||
e.Row.Cells[3].ForeColor = Color.Green;
|
||
e.Row.Cells[3].Font.Bold = true;
|
||
//e.Row.Cells[3].ForeColor = Color.Red;
|
||
}
|
||
}
|
||
else if (_Price < 0)
|
||
{
|
||
e.Row.Cells[3].Font.Bold = true;
|
||
if (_REPLENISH_AMOUNT != "0")
|
||
{
|
||
e.Row.Cells[3].Text += "/" + _REPLENISH_AMOUNT;
|
||
}
|
||
_SUPPLEMENT = _REPLENISH_AMOUNT;
|
||
e.Row.Cells[3].ForeColor = Color.Red;
|
||
}
|
||
//稽核反馈信息
|
||
if (!string.IsNullOrEmpty(e.Row.Cells[1].Text) && e.Row.Cells[1].Text.Length > 45)
|
||
{
|
||
e.Row.ToolTip = e.Row.Cells[1].Text;
|
||
e.Row.Cells[1].Text = e.Row.Cells[1].Text.Substring(0, 45) + "...";
|
||
}
|
||
//稽核误差率
|
||
if (e.Row.Cells[2].Text.TryParseToDecimal() * 10 > 2)
|
||
{
|
||
e.Row.Cells[2].Font.Bold = true;
|
||
e.Row.Cells[2].ForeColor = Color.Red;
|
||
}
|
||
e.Row.Cells[2].Text += "%";
|
||
//设置弹出页面地址
|
||
e.Row.Attributes["onclick"] = GridViewEx1.GetOpenPopDialogClientScript(
|
||
"/HighWay/Modules/Statistics/CheckInfo/CHECKACCOUNTPage.aspx?ID=" + _CHECKACCOUNT_ID +
|
||
"&ERRORRATE=" + e.Row.Cells[2].Text.ToEncrypt() + "&SUPPLEMENT=" + _SUPPLEMENT.ToEncrypt() +
|
||
"&ENDACCOUNT_ID=" + Request["ID"] + "&readonly=" + Request["readonly"] + "&TYPE=ENDACCOUNT");
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 获取条件语句
|
||
private string GetWhereSql()
|
||
{
|
||
string WhereSql = "";
|
||
|
||
if (!string.IsNullOrEmpty(SERVERPART_ID.Text))
|
||
{
|
||
WhereSql += " AND SERVERPART_ID = " + SERVERPART_ID.Text;
|
||
if (!string.IsNullOrEmpty(SHOPCODE.Text))
|
||
{
|
||
WhereSql += " AND SHOPCODE = '" + SHOPCODE.Text + "'";
|
||
//开始时间
|
||
if (!string.IsNullOrWhiteSpace(ENDACCOUNT_STARTDATE.Text))
|
||
{
|
||
WhereSql += " AND CHECK_STARTDATE = TO_DATE('" + ENDACCOUNT_STARTDATE.Text + "','YYYY/MM/DD HH24:MI:SS')";
|
||
}
|
||
else
|
||
{
|
||
WhereSql = " AND 1 = 2";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
WhereSql = " AND 1 = 2";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
WhereSql = " AND 1 = 2";
|
||
}
|
||
|
||
return WhereSql;
|
||
}
|
||
#endregion
|
||
|
||
protected void CBBPayment_CallBackClick(object sender, ClientSetEventArgs e)
|
||
{
|
||
e.ClientScript = "$('.WorkFlowDialogMark,.WorkFlowDialogTable').css('display','table');" +
|
||
"$('#" + PanelPayment.ClientID + "').css('display','block');";
|
||
}
|
||
|
||
protected void CBBSupplement_CallBackClick(object sender, ClientSetEventArgs e)
|
||
{
|
||
e.ClientScript = "$('.WorkFlowDialogMark,.WorkFlowDialogTable').css('display','table');" +
|
||
"$('#" + PanelSupplement.ClientID + "').css('display','block');";
|
||
}
|
||
}
|
||
}
|