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 { /// /// T_COMMODITY_商品管理 的WebUserControl /// public partial class COMMODITY : Storage.UI.UserControlsEx { 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 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 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 } }