/// <summary> /// 更新配本紀錄 /// </summary> private void UpdateALODisRecord() { try { ALOModel.MaintainDisRecord MDR = new ALOModel.MaintainDisRecord(ConnectionDB); #region 輸入變數 ArrayList ParameterList = new ArrayList(); ParameterList.Clear(); //配本序號 ParameterList.Add(DISNOTxt.Text); #region 配本主檔 //舊資料 #region 使用XML轉回DataSet DataSet DisMainDs = new DataSet(); System.IO.StringReader DisMainSr = new System.IO.StringReader(OLD_DisMainXML.InnerHtml); DisMainDs.ReadXml(DisMainSr); DataTable OLDDisMainDt = null; if (DisMainDs.Tables.Count > 0) { OLDDisMainDt = DisMainDs.Tables[0]; #region 將DateTime 1900/01/01 轉回 null for (int i = 0; i < OLDDisMainDt.Rows.Count; i++) { for (int j = 0; j < OLDDisMainDt.Columns.Count; j++) { if (OLDDisMainDt.Columns[j].DataType == typeof(System.DateTime)) { if (DateTime.Parse(OLDDisMainDt.Rows[i][j].ToString()) == DateTime.Parse("1900/01/01")) { OLDDisMainDt.Rows[i][j] = Convert.DBNull; } } } } #endregion } #endregion ParameterList.Add(OLDDisMainDt); //新資料 #region 新資料 DataTable NewDisMainDt = OLDDisMainDt.Clone(); DataRow MainDr = NewDisMainDt.NewRow(); MainDr["DIS_NO"] = DISNOTxt.Text; MainDr["DIS_DATE"] = SLP_DISDate.Text; MainDr["ST_ACCEPT_DATE"] = SLP_STAcceptDate.Text; MainDr["APPROVE_DATE"] = SLP_ApproveDate.Text; MainDr["UPDATEDATE"] = DateTime.Now; MainDr["UPDATEUID"] = Session["UID"].ToString(); NewDisMainDt.Rows.Add(MainDr); #endregion ParameterList.Add(NewDisMainDt); #endregion #region 配本商品 //舊資料 #region 使用XML轉回DataSet DataSet DisItemDs = new DataSet(); System.IO.StringReader DisItemSr = new System.IO.StringReader(OLD_DisItem.InnerHtml); DisItemDs.ReadXml(DisItemSr); DataTable OLDDisItemDt = null; if (DisItemDs.Tables.Count > 0) { OLDDisItemDt = DisItemDs.Tables[0]; #region 將DateTime 1900/01/01 轉回 null for (int i = 0; i < OLDDisItemDt.Rows.Count; i++) { for (int j = 0; j < OLDDisItemDt.Columns.Count; j++) { if (OLDDisItemDt.Columns[j].DataType == typeof(System.DateTime)) { if (DateTime.Parse(OLDDisItemDt.Rows[i][j].ToString()) == DateTime.Parse("1900/01/01")) { OLDDisItemDt.Rows[i][j] = Convert.DBNull; } } } } #endregion #region 將Decimal -999 轉回 null for (int i = 0; i < OLDDisItemDt.Rows.Count; i++) { for (int j = 0; j < OLDDisItemDt.Columns.Count; j++) { if (OLDDisItemDt.Columns[j].DataType == typeof(System.String)) { if (OLDDisItemDt.Rows[i][j].ToString() == "-999") { OLDDisItemDt.Rows[i][j] = Convert.DBNull; } } } } #endregion } #endregion ParameterList.Add(OLDDisItemDt); //新資料 #region 新資料 DataTable NewDisItemDt = OLDDisItemDt.Clone(); DataRow ItemDr = NewDisItemDt.NewRow(); ItemDr["UPDATEDATE"] = DateTime.Now; ItemDr["UPDATEUID"] = Session["UID"].ToString(); ItemDr["DIS_NO"] = DISNOTxt.Text; ItemDr["ITEM"] = SLP_SKU1.Text; ItemDr["PERIOD"] = SLP_ItemPeriod1.Text; //配本店數 ItemDr["DIS_STO_QTY"] = DIS_STOQTYtxt.Text; //採購數 ItemDr["DIS_ISU_QTY"] = DIS_ISUQTYtxt.Text; //預留數 ItemDr["DIS_MDC_QTY"] = DIS_MDCQTYtxt.Text; //保留數(?) //ReserveQTYtxt.Text //實配數 ItemDr["DIS_QTY"] = DISQTYtxt.Text; //到貨數 ItemDr["ACCEPT_QTY"] = AcceptQTYtxt.Text; //前六期資料 string[] PrePeriod = B1ToB6PeriodHidden.Value.Split(','); for (int x = 0; x < PrePeriod.Length; x++) { switch (x) { case 0: //前一期資料 ItemDr["B1_PERIOD"] = PrePeriod[x]; break; case 1: //前二期資料 ItemDr["B2_PERIOD"] = PrePeriod[x]; break; case 2: //前三期資料 ItemDr["B3_PERIOD"] = PrePeriod[x]; break; case 3: //前四期資料 ItemDr["B4_PERIOD"] = PrePeriod[x]; break; case 4: //前五期資料 ItemDr["B5_PERIOD"] = PrePeriod[x]; break; case 5: //前六期資料 ItemDr["B6_PERIOD"] = PrePeriod[x]; break; } } //群分類 ItemDr["ROOT_NO"] = RootNoHidden.Value; //大分類 ItemDr["PMA"] = PMAtxt.Text; //Pattern ItemDr["PATTERN_NO"] = SLP_Pattern1.Text; //計算未生效 ItemDr["INCLUDE_NON_EFF"] = SLP_Boolean_CountNoEff.Text; //通路設定 ItemDr["CHAN_TYPE"] = SLP_EnumBase_ChanType.Text; //OPStatus ItemDr["OP_STATUS"] = OPStatusHidden.Value; //配本方式 ItemDr["DIS_TYPE"] = SLP_PARAM1.Text; NewDisItemDt.Rows.Add(ItemDr); #endregion ParameterList.Add(NewDisItemDt); #endregion #region 參照商品(先刪除再建立) //直接使用新參照資料 ParameterList.Add(AddDisItemReferDt()); //直接使用新通路 ParameterList.Add(AddDisChanDt()); #endregion #region 通路 //舊資料 #region 使用XML轉回DataSet DataSet DisChanDs = new DataSet(); DataTable OLDDisChanDt = null; if (OLD_XMLStoreChainList.InnerHtml != "") { System.IO.StringReader DisChanSr = new System.IO.StringReader(OLD_XMLStoreChainList.InnerHtml); DisChanDs.ReadXml(DisChanSr); OLDDisChanDt = DisChanDs.Tables[0]; if (OLDDisChanDt.Rows.Count > 0) { #region 將DateTime 1900/01/01 轉回 null for (int i = 0; i < OLDDisChanDt.Rows.Count; i++) { for (int j = 0; j < OLDDisChanDt.Columns.Count; j++) { if (OLDDisChanDt.Columns[j].DataType == typeof(System.DateTime)) { if (DateTime.Parse(OLDDisChanDt.Rows[i][j].ToString()) == DateTime.Parse("1900/01/01")) { OLDDisChanDt.Rows[i][j] = Convert.DBNull; } } } } #endregion } } else { throw new Exception("通路資料錯誤!必須要有舊的通路資訊!!"); } #endregion ParameterList.Add(OLDDisChanDt); //新資料(參照商品已經增加過了) #endregion #region 通路參照 string NEWDataSessionIDAndName = "ALO11NEWStoreChainReferData_" + PageTimeStamp.Value; DataTable NewDisChanReferDt = (DataTable)Session[NEWDataSessionIDAndName]; //通路參照 ParameterList.Add(NewDisChanReferDt); //使用者代碼 ParameterList.Add(Session["UID"].ToString()); #endregion #region 109的Session //若配本方式109 處裡 ParameterList.Add(GetdtDisTypeTmp109()); #endregion #region 105,110的Session //配本方式 '105','110' 處理 ParameterList.Add(GetDisTypeTmpDt()); #endregion #endregion //更新配本紀錄 MDR.UpdateDisRecordFor111(ParameterList, null ); } catch (Exception ex) { throw ex; } }