2025-03-27 15:05:14 +08:00

449 lines
22 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Configuration;
using System.Data;
using System.Web.UI;
using SuperMap.RealEstate.CoreFrameWork;
using SuperMap.RealEstate.Web.UI;
using SuperMap.RealEstate.Web.UI.WebControls;
using Business = SuperMap.RealEstate.HighWay.Storage.Business;
using SuperMap.RealEstate.CoreFrameWork.Dictionary.Business;
using HCC = HZQR.Common.Common;
using HZQR.Common;
namespace SuperMap.RealEstate.HighWay.CloudModule.Commodity
{
/// <summary>
/// T_COMMODITY_商品管理 的WebUserControl
/// <summary>
public partial class COMMODITY : Storage.UI.UserControlsEx<Business.COMMODITY>
{
protected string _BUSINESSTYPE = ConfigurationManager.AppSettings["BusinessType"].ToString();
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;
if (CurrObject != null && CurrObject.PropertyObject != null)
{
if (CurrObject.BUSINESSTYPE != null)
{
BUSINESSTYPE_ORI.Text = CurrObject.BUSINESSTYPE.ToString();
}
COMMODITY_ORICODE.Text = CurrObject.COMMODITY_CODE;
COMMODITY_ORIID.Text = CurrObject.KeyID;
}
if (SERVERPART_ID.SelectedIndex > -1)
{
if (SERVERPART_ID.SelectedValue == WholeServerpartID)
{
COMMODITY_HOTKEY.Enabled = false;
USERDEFINEDTYPE_ID.Enabled = false;
CallBackButton_Select.Enabled = false;
}
else
{
COMMODITY_HOTKEY.Enabled = true;
USERDEFINEDTYPE_ID.Enabled = true;
CallBackButton_Select.Enabled = true;
}
new Business.COMMODITY(Transaction).BindingDropDownList(BUSINESSTYPE.Items, "", int.Parse(SERVERPART_ID.SelectedValue));
BUSINESSTYPE.SelectedValue = CurrObject.BUSINESSTYPE.ToString();
}
if (COMMODITY_STATE.SelectedValue == "2")
{
COMMODITY_STATE.Enabled = false;
}
//绑定商品类型
LoadRTCommodityType();
//绑定自定义类
USERDEFINEDTYPE_ID.Clear();
new Storage.Business.USERDEFINEDTYPE(Transaction).BindingDropDownList(
USERDEFINEDTYPE_ID.Items, "", SERVERPART_ID.SelectedValue.TryParseToInt());
if (CurrObject.USERDEFINEDTYPE_ID != null)
{
USERDEFINEDTYPE_ID.SelectedValue = CurrObject.USERDEFINEDTYPE_ID.ToString();
}
}
//在此加入界面的数据初始化(Page_Load之前)如DropDownList的数据源绑定等
public override void InitializeWebControl()
{
//绑定下拉框
DictionaryHelper.BindingDropDownList("COMMODITYGRADE", COMMODITY_GRADE.Items, this.Transaction);
//是否有效
//DictionaryHelper.BindingDropDownList("ISVALID", COMMODITY_STATE.Items, this.Transaction);
//能否销售
CANSALE.Clear();
DictionaryHelper.BindingDropDownList("ISBULK", CANSALE.Items, this.Transaction);
CANSALE.SelectedValue = "1";
//是否散称
DictionaryHelper.BindingDropDownList("ISBULK", ISBULK.Items, this.Transaction);
//绑定称重方式
DictionaryHelper.BindingDropDownList("METERINGMETHOD", METERINGMETHOD.Items, this.Transaction);
//业态
//DictionaryHelper.BindingDropDownList("BUSINESSTYPE", BUSINESSTYPE.Items, this.Transaction);
//是否允许采购
COMMODITY_FROZENCOUNT.Clear();
DictionaryHelper.BindingDropDownList("PURCHASING_STATUS", COMMODITY_FROZENCOUNT.Items, this.Transaction);
}
//载入数据
public override bool LoadData()
{
//加载对应的信息
ADDTIME.Text = System.DateTime.Now.ToString();
BindDropDownList_SERVERPART();
//如果是工作流组件请自行修改载入的逻辑,以下是功能模块的默认代码
if (!String.IsNullOrEmpty(Request["ID"]))
{
CurrObject.COMMODITY_ID_Encrypt = Request["ID"];
return this.Select(GoodsProvinceCode);
}
//默认返回值工作流组件返回True,功能模块返回False。
return (WorkFlowPage != null);
}
#region OnDataAction_BeforeSave
//OnDataAction_XXXXX 有一个系列可用,在此加入界面的逻辑处理
//e.CancelDataAction 来处理是否取消该动作;
//失败的原因可以用Page.Alert()传递到页面
public override void OnDataAction_BeforeSave(DataActionEventArgs<Business.COMMODITY> e)
{
//判断当前服务区相同业态是否存在相同的快捷键信息
if (!string.IsNullOrWhiteSpace(COMMODITY_HOTKEY.Text.Trim()) && e.CurrObject.IsDuplicateHotKey(
COMMODITY_ID.Text, COMMODITY_HOTKEY.Text.Trim(), SERVERPART_ID.SelectedValue, BUSINESSTYPE.SelectedValue, GoodsProvinceCode))
{
throw new Exception("注意:该商品快捷键已存在!请验证后重新录入!");
}
//判断条码是否已在当前服务区或者统配商品中录入
if (!string.IsNullOrWhiteSpace(COMMODITY_BARCODE.Text.Trim()) && COMMODITY_STATE.SelectedValue != "0")
{
if (BUSINESSTYPE.SelectedValue != BUSINESSTYPE_ORI.Text && !string.IsNullOrWhiteSpace(COMMODITY_ORIID.Text))
{
Business.COMMODITY _COMMODITY = new Business.COMMODITY(e.CurrObject);
_COMMODITY.COMMODITY_ID_Encrypt = COMMODITY_ORIID.Text.ToEncrypt();
if (_COMMODITY.Select())
{
_COMMODITY.COMMODITY_STATE = 0;
_COMMODITY.Update();
}
}
int ResultCode = e.CurrObject.IsDuplicateBarcode(COMMODITY_ORIID.Text, COMMODITY_BARCODE.Text.Trim(),
SERVERPART_ID.SelectedValue, BUSINESSTYPE.SelectedValue, PROVINCE_CODE.Text, _BUSINESSTYPE,
ProvinceID, WholeServerpartID, GoodsProvinceCode);
switch (ResultCode)
{
case 1:
throw new Exception("注意:该商品条码已存在于" + SERVERPART_ID.SelectedItem.Text + "或正在办理流程!请验证后重新录入!");
case 2:
throw new Exception("注意:该商品条码已存在于统一定价类中!请验证后重新录入!");
}
if (COMMODITY_TYPE.SelectedItem.Text.StartsWith("[1") && SERVERPART_ID.SelectedValue == WholeServerpartID)
{
string Serverpart_Name = "", Serverpart_Codes = "";
foreach (Business.SERVERPART _SERVERPART in new Business.SERVERPART(this.Transaction).FillCollection(
"WHERE SERVERPART_ID IN (SELECT SERVERPART_ID FROM HIGHWAY_STORAGE.T_COMMODITY" + GoodsProvinceCode +
" WHERE COMMODITY_BARCODE = '" + COMMODITY_BARCODE.Text.Trim() + "' AND BUSINESSTYPE = " +
BUSINESSTYPE.SelectedValue + " AND SERVERPART_ID <> " + WholeServerpartID +
" AND COMMODITY_STATE = 1) AND PROVINCE_CODE = " + PROVINCE_CODE.Text))
{
Serverpart_Name += (Serverpart_Name == "" ? "" : ",") + _SERVERPART.SERVERPART_NAME;
Serverpart_Codes += (Serverpart_Codes == "" ? "" : ",") + _SERVERPART.SERVERPART_CODE;
}
if (Serverpart_Name != "")
{
e.CurrObject.COMMODITY_STATE = 2;
COMMODITY_STATE.SelectedValue = "2";
COMMODITY_STATE.Enabled = false;
DataTable dtCommodityIDs = e.CurrObject.ExecuteDataTable("SELECT WM_CONCAT(COMMODITY_ID) FROM HIGHWAY_STORAGE.T_COMMODITY" +
GoodsProvinceCode + " WHERE COMMODITY_STATE = 1 AND COMMODITY_BARCODE = '" + COMMODITY_BARCODE.Text.Trim() +
"' AND BUSINESSTYPE = " + BUSINESSTYPE.SelectedValue + " AND SERVERPART_ID <> " + SERVERPART_ID.SelectedValue +
" AND PROVINCE_CODE = " + PROVINCE_CODE.Text);
if (dtCommodityIDs.Rows.Count > 0 && dtCommodityIDs.Rows[0][0].ToString() != "")
{
e.CurrObject.ExecuteNonQuery(@"UPDATE HIGHWAY_STORAGE.T_COMMODITY SET COMMODITY_STATE = 0,OPERATE_DATE = SYSDATE
WHERE COMMODITY_ID IN (" + dtCommodityIDs.Rows[0][0].ToString() + ")", null);
foreach (Business.COMMODITY _COMMODITY in e.CurrObject.FillCollection(
"WHERE COMMODITY_ID IN (" + dtCommodityIDs.Rows[0][0].ToString() + ")"))
{
//商品类型名称
string CommodityTypeName = Business.COMMODITY.GetCommodityTypeName(Transaction, _COMMODITY);
//下发、同步服务区商品
Business.COMMODITY.SynchroServerpartData(Transaction, _COMMODITY, CommodityTypeName);
}
}
Page.Alert("注意:保存后" + Serverpart_Name + "下同业态相同条码的商品将变为无效,请进行信息校正!");
}
}
}
e.CurrObject.COMMODITY_DESC += (string.IsNullOrEmpty(e.CurrObject.COMMODITY_DESC) ? "" : "\n") +
Page.PassportInfo.Name + "于" + DateTime.Now + "进行了修改";
base.OnDataAction_BeforeSave(e);
}
#endregion
#region OnDataAction_AfterSave
public override void OnDataAction_AfterSave(DataActionEventArgs<Business.COMMODITY> e)
{
if (string.IsNullOrWhiteSpace(e.CurrObject.COMMODITY_BARCODE))
{
CreateBarCode();
}
if (e.CurrObject.COMMODITY_STATE == 2)
{
DataTable _DataTable = e.CurrObject.ExecuteDataTable("SELECT WM_CONCAT(COMMODITY_ID) FROM T_COMMODITY" + GoodsProvinceCode +
" WHERE COMMODITY_ID <> " + e.CurrObject.COMMODITY_ID + " AND BUSINESSTYPE = " + e.CurrObject.BUSINESSTYPE +
" AND COMMODITY_BARCODE = '" + e.CurrObject.COMMODITY_BARCODE + "' AND PROVINCE_CODE = " + e.CurrObject.PROVINCE_CODE);
if (_DataTable.Rows.Count > 0 && _DataTable.Rows[0][0].ToString() != "")
{
e.CurrObject.UpdateInSalesData(Transaction, _DataTable.Rows[0][0].ToString(),
e.CurrObject.COMMODITY_ID, e.CurrObject.COMMODITY_CODE, GoodsProvinceCode);
e.CurrObject.COMMODITY_STATE = 1;
e.CurrObject.Update(GoodsProvinceCode);
}
}
base.OnDataAction_AfterSave(e);
}
#endregion
#region ->
public void BindDropDownList_SERVERPART(int COMMODITY_ID = 0)
{
SERVERPART_ID.Items.Clear();
foreach (Business.SERVERPART _SERVERPART in new Business.SERVERPART(Transaction).GetPassportServerPart(Page.PassportInfo.CityAuthority))
{
ListItemEx _ListItemEx = new ListItemEx();
_ListItemEx.Value = _SERVERPART.SERVERPART_ID.ToString();
_ListItemEx.Text = _SERVERPART.SERVERPART_NAME;
SERVERPART_ID.Items.Add(_ListItemEx);
}
if (SERVERPART_ID.SelectedIndex != -1)
{
Storage.Business.SERVERPART _SERVERPART = new Storage.Business.SERVERPART(this.Transaction);
if (_SERVERPART.Select(int.Parse(SERVERPART_ID.SelectedValue)))
{
PROVINCE_CODE.Text = _SERVERPART.PROVINCE_CODE.ToString();
}
}
}
#endregion
#region ->
public void LoadRTCommodityType()
{
COMMODITY_TYPE.Items.Clear();
Storage.Business.COMMODITYTYPE _COMMODITYTYPE = new Storage.Business.COMMODITYTYPE(this.Transaction);
if (BUSINESSTYPE.SelectedValue == "9032" || BUSINESSTYPE.SelectedValue == "9990")
{
//仓储或者物业物资
if (BUSINESSTYPE.SelectedValue == "9990")
{
_COMMODITYTYPE.BindingDropDownList(COMMODITY_TYPE.Items, "", false, true,
true, false, false, true, Page.PassportInfo.ProvinceCode.TryParseToInt());
}
else
{
_COMMODITYTYPE.BindingDropDownList(COMMODITY_TYPE.Items, "", false, true,
true, false, false, Page.PassportInfo.ProvinceCode.TryParseToInt());
}
}
else
{
if (SERVERPART_ID.SelectedValue == WholeServerpartID)
{
_COMMODITYTYPE.BindingDropDownList(COMMODITY_TYPE.Items, "", false, false,
true, true, true, Page.PassportInfo.ProvinceCode.TryParseToInt());
}
else
{
_COMMODITYTYPE.BindingDropDownList(COMMODITY_TYPE.Items, "", false, true,
true, true, false, Page.PassportInfo.ProvinceCode.TryParseToInt());
}
}
if (CurrObject.COMMODITY_TYPE != null)
{
COMMODITY_TYPE.SelectedValue = CurrObject.COMMODITY_TYPE.ToString();
}
}
#endregion
#region ->
public void CreateBarCode()
{
string BarCode = string.Empty;
int LastCode = 0;
if (COMMODITY_ID.Text != "" && COMMODITY_ID.Text != "0")
{
Storage.Business.COMMODITY _COMMODITY = new Business.COMMODITY(this.Transaction);
_COMMODITY.COMMODITY_ID = int.Parse(COMMODITY_ID.Text);
if (_COMMODITY.Select(GoodsProvinceCode))
{
BarCode = _COMMODITY.COMMODITY_CODE;
if (string.IsNullOrEmpty(_COMMODITY.COMMODITY_BARCODE) && _COMMODITY.COMMODITY_CODE != null)
{
//8位编号补足12位
if (BarCode.Length == 8)
{
BarCode = "2600" + BarCode;
//偶数位的数字求和*3 + 奇数位数字和
for (int i = 1; i <= 12; i++)
{
int Num = int.Parse(BarCode.Substring(i - 1, 1));
if (i % 2 == 0)
{
LastCode += Num * 3;
}
else
{
LastCode += Num;
}
}
//和求10的模
LastCode = 10 - (LastCode % 10);
if (LastCode == 10)
{
LastCode = 0;
}
}
//返回条码
_COMMODITY.COMMODITY_BARCODE = COMMODITY_BARCODE.Text = BarCode + LastCode.ToString();
_COMMODITY.Update(GoodsProvinceCode);
//同步并下发商品版本信息
if (_COMMODITY.SERVERPART_ID.ToString() == WholeServerpartID)
{
FieldEnum _FieldEnum = Storage.Business.CommonHelper.GetFieldEnumByID(Transaction, _COMMODITY.PROVINCE_CODE);
ExchangeData.Business.DOWNLOADUPDATE.UpdateDataVersion(Transaction, _FieldEnum.FieldEnum_Value,
"T_COMMODITYEX_UNIT", DateTime.Now);
//往数据中心表更新当前服务区商品版本
HCC.CommonHelper.SynchroUniformDataVersion("T_COMMODITYUNIFIED", _COMMODITY.OPERATE_DATE.Value.ToString(),
_FieldEnum.FieldEnum_Value, _COMMODITY.BUSINESSTYPE.ToString());
}
else
{
Business.SERVERPART _SERVERPART = Storage.Business.CommonHelper.GetServerpartByID(
Transaction, _COMMODITY.SERVERPART_ID);
ExchangeData.Business.DOWNLOADUPDATE.UpdateDataVersion(Transaction, _SERVERPART.SERVERPART_CODE,
"T_COMMODITYEX_UNIT", DateTime.Now);
//往数据中心表更新当前服务区商品版本
HCC.CommonHelper.SynchroDataVersion("T_COMMODITY", _COMMODITY.OPERATE_DATE.Value.ToString(),
_SERVERPART.SERVERPART_CODE, "", "", _COMMODITY.BUSINESSTYPE.ToString());
}
}
}
}
}
#endregion
#region ->
protected void SERVERPART_ID_CallBackSetControl(object sender, ClientSetEventArgs e)
{
Business.SERVERPART _SERVERPART = new Business.SERVERPART(this.Transaction);
_SERVERPART.SERVERPART_ID = int.Parse(e.Argument);
if (_SERVERPART.Select())
{
e.SetValue(PROVINCE_CODE, _SERVERPART.PROVINCE_CODE.ToString());
}
else
{
e.ExcuteClientScript(Page.GetAlertStr("请先设置对应的服务区省份编码!"));
}
//商品业态
BUSINESSTYPE.Items.Clear();
new Business.COMMODITY(Transaction).BindingDropDownList(BUSINESSTYPE.Items, "", int.Parse(SERVERPART_ID.SelectedValue));
BUSINESSTYPE.SelectedValue = CurrObject.BUSINESSTYPE.ToString();
//商品类型
LoadRTCommodityType();
if (e.Argument == WholeServerpartID)
{
e.SetEnabled(COMMODITY_HOTKEY, false);
e.SetEnabled(USERDEFINEDTYPE_ID, false);
e.SetEnabled(CallBackButton_Select, false);
USERDEFINEDTYPE_ID.SelectedValue = "";
}
else
{
e.SetEnabled(COMMODITY_HOTKEY, true);
e.SetEnabled(USERDEFINEDTYPE_ID, true);
e.SetEnabled(CallBackButton_Select, true);
}
e.SetValue(COMMODITY_ID, "");
e.SetValue(COMMODITY_CODE, "");
e.SetValue(COMMODITY_HOTKEY, "");
e.SetDropDownListEx(USERDEFINEDTYPE_ID);
e.SetDropDownListEx(BUSINESSTYPE);
e.SetDropDownListEx(COMMODITY_TYPE);
}
#endregion
#region ->
protected void BUSINESSTYPE_CallBackSetControl(object sender, ClientSetEventArgs e)
{
if (!string.IsNullOrWhiteSpace(COMMODITY_ORIID.Text))
{
if (e.Argument != BUSINESSTYPE_ORI.Text)
{
//判断正式库是否存在商品信息
Storage.Business.COMMODITY _COMMODITY = new Storage.Business.COMMODITY(Transaction);
_COMMODITY.AddSearchParameter("COMMODITY_BARCODE", COMMODITY_BARCODE.Text.Trim());
_COMMODITY.AddSearchParameter("BUSINESSTYPE", BUSINESSTYPE.SelectedValue);
_COMMODITY.AddSearchParameter("SERVERPART_ID", SERVERPART_ID.SelectedValue);
if (_COMMODITY.Search())
{
e.SetValue(COMMODITY_ID, _COMMODITY.KeyID);
e.SetValue(COMMODITY_CODE, _COMMODITY.COMMODITY_CODE);
}
else
{
e.SetValue(COMMODITY_ID, "");
e.SetValue(COMMODITY_CODE, "");
}
}
else
{
e.SetValue(COMMODITY_ID, COMMODITY_ORIID.Text);
e.SetValue(COMMODITY_CODE, COMMODITY_ORICODE.Text);
}
}
//绑定商品类型
LoadRTCommodityType();
e.SetDropDownListEx(COMMODITY_TYPE);
}
#endregion
#region ->
protected void CallBackButton_Select_CallBackClick(object sender, ClientSetEventArgs e)
{
BindControlToObject(CurrObject);
if (CurrObject.COMMODITY_ID == null)
{
CurrObject.Insert();
}
else
{
CurrObject.Update();
}
COMMODITY_ID.Text = CurrObject.COMMODITY_ID.ToString();
e.SetValue(COMMODITY_ID);
e.ClientScript = Page.GetOpenPopDialogClientScript("/HighWay/Modules/Commodity/UserDefinedType/Default.aspx?" +
"COMMODITY_ID=" + CurrObject.COMMODITY_ID_Encrypt + "&SERVERPART_ID=" + SERVERPART_ID.SelectedValue.ToEncrypt() +
"&PageType=CloudCommodityPage&PopDialogPageName=F_R_GridPageEx1&PopDialogName=COMMODITYPage", "Default", 800, 600, true, false, true);
}
#endregion
}
}