Ejemplo n.º 1
0
    /// <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;
        }
    }