コード例 #1
0
        /// <summary>
        /// 依條件,產生配本記錄(含配本主檔、配本商品、配本通路、配本參照設定、配本通路參照) 
        /// </summary>
        /// <param name="dtDisTmpRec">配本輔助項目設定</param>
        /// <param name="dtDisMain">新增配本主檔</param>
        /// <param name="dtDisItem">新增配本商品</param>
        /// <param name="dtDisChan">新增配本通路</param>
        /// <param name="dtDisItemRefer">新增配本參照</param>
        /// <param name="dtDisType109Tmp">109等級配本設定</param>
        /// <param name="dtDisTypeTmp">105類似配本/110定額配本設定</param>
        /// <param name="vItem">品號</param>
        /// <param name="vPeriod">期別</param>
        /// <param name="vUserID">使用者</param>
        /// <param name="RootDBT"></param>
        /// <returns></returns>
        public string CreateDisRecordFor131(
            DataTable dtDisTmpRec, DataTable dtDisMain, DataTable dtDisItem, DataTable dtDisChan,
            DataTable dtDisItemRefer, DataTable dtDisType109Tmp, DataTable dtDisTypeTmp,
            string vItem, string vPeriod, string vUserID, DbTransaction RootDBT)
        {
            #region
            string strDisNo = "";

            bool bResult = false;
            bool IsRootTranscation = false;
            ArrayList ParameterList = new ArrayList();

            try
            {
                //判斷是否有傳入Root Transcation 
                IsRootTranscation = (RootDBT == null) ? true : false;


                #region 啟動交易或指定RootTranscation

                //4.1) 控制 Begin Transaction
                if (IsRootTranscation)
                {
                    //獨立呼叫啟動Transcation
                    Conn = USEDB.CreateConnection();
                    Conn.Open();
                    DBT = Conn.BeginTransaction();
                }
                else
                {
                    DBT = RootDBT;
                }

                #endregion

                #region biz logical


                #region 4.2) 新增配本主檔並記錄回傳配本序號
                if (dtDisMain != null && dtDisMain.Rows.Count > 0)
                {
                    MaintainDisMain BCODisMain = new MaintainDisMain(ConnectionDB);
                    bResult = BCODisMain.CreateDisMainFor111(dtDisMain, ref strDisNo, DBT);
                }
                else
                {
                    bResult = true;
                }

                if (!bResult)
                    throw new Exception(string.Format("MaintainDisRecord.CreateDisRecordFor131:Step{0} 發生錯誤", "4.2"));
                #endregion

                #region 4.3) 新增配本商品檔
                if (dtDisItem != null && dtDisItem.Rows.Count > 0)
                {
                    MaintainDisItem BCODisItem = new MaintainDisItem(ConnectionDB);
                    bResult = BCODisItem.CreateDisItemFor131(dtDisItem, strDisNo, DBT);
                }
                else
                {
                    bResult = true;
                }


                if (!bResult)
                    throw new Exception(string.Format("MaintainDisRecord.CreateDisRecordFor131:Step{0} 發生錯誤", "4.3"));

                #endregion

                #region 4.4) 新增配本通路檔
                if (dtDisChan != null && dtDisChan.Rows.Count > 0)
                {
                    MaintainDisChan BCODisChan = new MaintainDisChan(ConnectionDB);
                    bResult = BCODisChan.CreateDisChanFor131(dtDisChan, strDisNo, DBT);
                }
                else
                {
                    bResult = true;
                }

                if (!bResult)
                    throw new Exception(string.Format("MaintainDisRecord.CreateDisRecordFor131:Step{0} 發生錯誤", "4.4"));
                #endregion

                #region 4.5) 新增配本參照設定
                if (dtDisItemRefer != null && dtDisItemRefer.Rows.Count > 0)
                {
                    MaintainDisItemRefer BCODisItemRefer = new MaintainDisItemRefer(ConnectionDB);
                    bResult = BCODisItemRefer.CreateDisItemReferForAll(dtDisItemRefer, dtDisChan, strDisNo, vItem, vPeriod, DBT);
                }
                else
                {
                    bResult = true;
                }

                if (!bResult)
                    throw new Exception(string.Format("MaintainDisItemRefer.CreateDisRecordFor131:Step{0} 發生錯誤", "4.5"));
                #endregion

                #region 4.6) 維護配本輔助項目設定
                if (dtDisTmpRec != null && dtDisTmpRec.Rows.Count > 0)
                {
                    #region

                    MaintainDisAssist BCODisAssist = new MaintainDisAssist(ConnectionDB);
                    DataTable dtDisAssist = BCODisAssist.GetDisAssistMainSchema();
                    #endregion



                    //a) 判斷是否需新增特殊調整
                    if (dtDisTmpRec.Rows[0]["SP_CHANGE"] != null && dtDisTmpRec.Rows[0]["SP_CHANGE"].ToString().Trim() != "0")
                    {
                        #region 新增特殊調整(ASSIST_CODE='09')
                        DataRow dr = dtDisAssist.NewRow();
                        dr["DIS_NO"] = strDisNo;
                        dr["ITEM"] = vItem;
                        dr["PERIOD"] = vPeriod;
                        dr["CHAN_NO"] = "0";//新增時固定為0
                        dr["ASSIST_CODE"] = "09";
                        dr["OPERATOR1"] = DBNull.Value;
                        dr["OP_VALUE1"] = DBNull.Value;
                        dr["OPERATOR2"] = DBNull.Value;
                        dr["OP_VALUE2"] = DBNull.Value;
                        dr["CHANGE_TYPE"] = DBNull.Value;
                        dr["CHANGE_RATE"] = DBNull.Value;
                        dr["ORDER_CHANGE"] = DBNull.Value;
                        dr["UPDATEDATE"] = DateTime.Now;
                        dr["UPDATEUID"] = vUserID;
                        dtDisAssist.Rows.Add(dr);

                        bResult = BCODisAssist.CreateDisAssist(dtDisAssist, null, DBT);

                        #endregion
                    }

                    //b) 判斷是否需新增訂單匯入

                    if (dtDisTmpRec.Rows[0]["ORDER_CHANGE"] != null && dtDisTmpRec.Rows[0]["ORDER_CHANGE"].ToString().Trim() != "0")
                    {
                        #region 新增訂單匯入(ASSIST_CODE='10'),
                        DataRow dr = dtDisAssist.NewRow();
                        dr["DIS_NO"] = strDisNo;
                        dr["ITEM"] = vItem;
                        dr["PERIOD"] = vPeriod;
                        dr["CHAN_NO"] = "0";//新增時固定為0
                        dr["ASSIST_CODE"] = "10";
                        dr["OPERATOR1"] = DBNull.Value;
                        dr["OP_VALUE1"] = DBNull.Value;
                        dr["OPERATOR2"] = DBNull.Value;
                        dr["OP_VALUE2"] = DBNull.Value;
                        dr["CHANGE_TYPE"] = DBNull.Value;
                        dr["CHANGE_RATE"] = DBNull.Value;
                        dr["ORDER_CHANGE"] = dtDisTmpRec.Rows[0]["ORDER_CHANGE"].ToString().Trim();
                        dr["UPDATEDATE"] = DateTime.Now;
                        dr["UPDATEUID"] = vUserID;
                        dtDisAssist.Rows.Add(dr);

                        bResult = BCODisAssist.CreateDisAssist(dtDisAssist, null, DBT);

                        #endregion
                    }
                }
                else
                {
                    bResult = true;
                }

                if (!bResult)
                    throw new Exception(string.Format("MaintainDisAssist.CreateDisAssist:Step{0} 發生錯誤", "4.6"));
                #endregion

                #region 4.7) 若dtDisItem.Rows.DIS_TYPE ='109' =>需判斷是否記錄109等級配本設定
                if (dtDisItem != null && dtDisItem.Rows.Count > 0)
                {
                    if (dtDisItem.Rows[0]["DIS_TYPE"].ToString().Trim() == "109")
                    {
                        if (dtDisType109Tmp != null && dtDisType109Tmp.Rows.Count > 0)
                        {
                            MaintainDisType109Tmp BCODisType109 = new MaintainDisType109Tmp(ConnectionDB);
                            bResult = BCODisType109.SaveDisType109Tmp(dtDisType109Tmp, strDisNo, vItem, vPeriod, DBT);
                        }

                    }
                }
                else
                {
                    bResult = true;
                }

                if (!bResult)
                    throw new Exception(string.Format("MaintainDisType109Tmp.SaveDisType109Tmp:Step{0} 發生錯誤", "4.7"));

                #endregion

                #region 4.8) 若dtDisItem.Rows.DIS_TYPE in ('105','110') =>需判斷是否記錄105類似配本/110定額配本設定記錄
                if (dtDisItem != null && dtDisItem.Rows.Count > 0)
                {
                    if (dtDisItem.Rows[0]["DIS_TYPE"].ToString().Trim() == "105" || dtDisItem.Rows[0]["DIS_TYPE"].ToString().Trim() == "110")
                    {
                        if (dtDisTypeTmp != null && dtDisTypeTmp.Rows.Count > 0)
                        {
                            MaintainDisTypeTmp BCODisType = new MaintainDisTypeTmp(ConnectionDB);
                            bResult = BCODisType.SaveDisTypeTmp(dtDisTypeTmp, strDisNo, vItem, vPeriod, DBT);
                        }

                    }
                }
                else
                {
                    bResult = true;
                }

                if (!bResult)
                    throw new Exception(string.Format("MaintainDisTypeTmp.SaveDisTypeTmp:Step{0} 發生錯誤", "4.8"));

                #endregion

                #region 4.9) 異動其他相關資料表
                ParameterList.Clear();
                ParameterList.Add(strDisNo);
                ParameterList.Add(vItem);
                ParameterList.Add(vPeriod);
                ParameterList.Add(vUserID);

                ProcessALOCommon BCOProcessCommon = new ProcessALOCommon(ConnectionDB);

                bResult = BCOProcessCommon.UpdateOtherTables(ParameterList, DBT);

                if (!bResult)
                    throw new Exception(string.Format("ProcessALOCommon.UpdateOtherTables:Step{0} 發生錯誤", "4.9"));

                #endregion


                #endregion

                #region 交易成功

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation成立
                    DBT.Commit();
                }

                #endregion

            }
            catch (Exception ex)
            {
                #region 交易失敗

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation失敗
                    DBT.Rollback();
                }

                #endregion

                strDisNo = "";

                throw GetNewException(ex);
            }
            finally
            {
                #region 判斷是否關閉交易連線

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation,關閉連線
                    if (Conn.State == ConnectionState.Connecting)
                    {
                        Conn.Close();
                    }
                }

                #endregion

            }


            return strDisNo;
            #endregion
        }
コード例 #2
0
        public bool UpdateDisRecordFor131(
            DataTable dtDisTmpRecNew, DataTable dtDisTmpRecOld,
            DataTable dtDisMainNew, DataTable dtDisMainOld,
            DataTable dtDisItemNew, DataTable dtDisItemOld,
            DataTable dtDisChanNew, DataTable dtDisChanOld,
            DataTable dtDisItemReferNew, DataTable dtDisItemReferOld,
            DataTable dtDisType109TmpNew, DataTable dtDisType109TmpOld,
            DataTable dtDisTypeTmpNew, DataTable dtDisTypeTmpOld, DataTable dtDisChanReferNEW,
            string vDisNo, string vItem, string vPeriod, string vUserID, string vStAcceptDate, DbTransaction RootDBT)
        {
            #region

            bool bResult = false;
            bool IsRootTranscation = false;
            ArrayList ParameterList = new ArrayList();
            DataCompare dc = new DataCompare();
            DataTable dtDisMainDiff = null;
            DataTable dtDisItemDiff = null;

            DataTable dtDisChanDiff = null;
            DataTable dtDisChanAdd = null;
            DataTable dtDisChanDelete = null;

            DataTable dtDisItemReferDiff = null;
            DataTable dtDisItemReferAdd = null;
            DataTable dtDisItemReferDelete = null;

            DataTable dtDisTmpRecDiff = null;
            DataTable dtDisTypeTmpDiff = null;
            DataTable dtDisTypeTmpDelete = null;

            DataTable dtDisType109TmpDiff = null;

            try
            {
                //判斷是否有傳入Root Transcation 
                IsRootTranscation = (RootDBT == null) ? true : false;


                #region 啟動交易或指定RootTranscation

                //4.1) 控制 Begin Transaction
                if (IsRootTranscation)
                {
                    //獨立呼叫啟動Transcation
                    Conn = USEDB.CreateConnection();
                    Conn.Open();
                    DBT = Conn.BeginTransaction();
                }
                else
                {
                    DBT = RootDBT;
                }

                #endregion

                #region biz logical


                #region 4.2) 更新配本主檔並記

                #region 比較新舊值
                dc.Clear();
                dc.CompareA = dtDisMainNew;
                dc.CompareB = dtDisMainOld;
                dc.CompareField.AddCompareFieldRow("DIS_NO", "", true);
                dc.CompareField.AddCompareFieldRow("ST_ACCEPT_DATE", "", false);
                dc.CompareData();
                dtDisMainDiff = dc.ADiff;
                #endregion

                if (dtDisMainDiff != null && dtDisMainDiff.Rows.Count > 0)
                {
                    MaintainDisMain BCODisMain = new MaintainDisMain(ConnectionDB);
                    bResult = BCODisMain.UpdateDisMainFor111(dtDisMainDiff, DBT);
                }
                else
                {
                    bResult = true;
                }

                if (!bResult)
                    throw new Exception(string.Format("MaintainDisRecord.UpdateDisMainFor111:Step{0} 發生錯誤", "4.2"));
                #endregion

                #region 4.3) 更新配本商品檔

                #region 比較新舊值
                dc.Clear();
                dc.CompareA = dtDisItemNew;
                dc.CompareB = dtDisItemOld;
                dc.CompareField.AddCompareFieldRow("DIS_NO", "", true);
                dc.CompareField.AddCompareFieldRow("ITEM", "", true);
                dc.CompareField.AddCompareFieldRow("PERIOD", "", true);
                dc.CompareField.AddCompareFieldRow("INCLUDE_NON_EFF", "", false);
                dc.CompareField.AddCompareFieldRow("DIS_TYPE", "", false);
                dc.CompareField.AddCompareFieldRow("DIS_PRE_QTY", "", false);
                dc.CompareField.AddCompareFieldRow("DIS_QTY", "", false);
                dc.CompareField.AddCompareFieldRow("CHAN_TYPE", "", false);


                dc.CompareData();
                dtDisItemDiff = dc.ADiff;
                #endregion

                if (dtDisItemDiff != null && dtDisItemDiff.Rows.Count > 0)
                {
                    MaintainDisItem BCODisItem = new MaintainDisItem(ConnectionDB);
                    bResult = BCODisItem.UpdateDisItemFor111(dtDisItemDiff, DBT);
                }
                else
                {
                    bResult = true;
                }


                if (!bResult)
                    throw new Exception(string.Format("MaintainDisRecord.UpdateDisItemFor111:Step{0} 發生錯誤", "4.3"));

                #endregion

                #region 4.4) 更新配本通路檔

                #region 比較新舊值
                dc.Clear();
                dc.CompareA = dtDisChanNew;
                dc.CompareB = dtDisChanOld;
                dc.CompareField.AddCompareFieldRow("DIS_NO", "", true);
                dc.CompareField.AddCompareFieldRow("ITEM", "", true);
                dc.CompareField.AddCompareFieldRow("PERIOD", "", true);
                dc.CompareField.AddCompareFieldRow("CHAN_NO", "", true);
                dc.CompareField.AddCompareFieldRow("DIS_TYPE", "", false);
                dc.CompareField.AddCompareFieldRow("DIS_PRE_CQTY", "", false);
                dc.CompareField.AddCompareFieldRow("ID", "", false);

                dc.CompareData();
                dtDisChanDiff = dc.ADiff;
                dtDisChanAdd = dc.AOnly;
                dtDisChanDelete = dc.BOnly;
                #endregion

                if ((dtDisChanDiff != null && dtDisChanDiff.Rows.Count > 0) ||
                    (dtDisChanAdd != null && dtDisChanAdd.Rows.Count > 0) ||
                    (dtDisChanDelete != null && dtDisChanDelete.Rows.Count > 0))
                {
                    MaintainDisChan BCODisChan = new MaintainDisChan(ConnectionDB);
                    bResult = BCODisChan.UpdateDisChanFor131(dtDisChanDiff, dtDisChanAdd, dtDisChanDelete, vStAcceptDate, DBT);
                }
                else
                {
                    bResult = true;
                }

                if (!bResult)
                    throw new Exception(string.Format("MaintainDisRecord.CreateDisRecordFor131:Step{0} 發生錯誤", "4.4"));
                #endregion

                #region 4.5) 更新配本參照設定

                #region 比較新舊值
                dc.Clear();
                dc.CompareA = dtDisItemReferNew;
                dc.CompareB = dtDisItemReferOld;
                dc.CompareField.AddCompareFieldRow("DIS_NO", "", true);
                dc.CompareField.AddCompareFieldRow("ITEM", "", true);
                dc.CompareField.AddCompareFieldRow("PERIOD", "", true);
                dc.CompareField.AddCompareFieldRow("RITEM", "", true);
                dc.CompareField.AddCompareFieldRow("RPERIOD", "", true);
                dc.CompareField.AddCompareFieldRow("REFER_RATE", "", false);
                dc.CompareField.AddCompareFieldRow("ID", "", false);

                dc.CompareData();
                dtDisItemReferDiff = dc.ADiff;
                dtDisItemReferAdd = dc.AOnly;
                dtDisItemReferDelete = dc.BOnly;
                #endregion

                if ((dtDisItemReferDiff != null && dtDisItemReferDiff.Rows.Count > 0) ||
                    (dtDisItemReferAdd != null && dtDisItemReferAdd.Rows.Count > 0) ||
                    (dtDisItemReferDelete != null && dtDisItemReferDelete.Rows.Count > 0))
                {
                    MaintainDisItemRefer BCODisItemRefer = new MaintainDisItemRefer(ConnectionDB);
                    bResult = BCODisItemRefer.UpdateItemAndChanRefer(dtDisItemReferDiff, dtDisItemReferAdd, dtDisItemReferDelete, dtDisChanOld, dtDisChanNew, dtDisItemReferNew, vItem, vPeriod, DBT);
                }
                else
                {
                    bResult = true;
                }

                if (!bResult)
                    throw new Exception(string.Format("MaintainDisItemRefer.CreateDisRecordFor131:Step{0} 發生錯誤", "4.5"));
                #endregion

                #region 4.5.2) 更新通路參照

                if (dtDisChanReferNEW != null)
                {
                    MaintainDisChanRefer BCOChanRef = new MaintainDisChanRefer(ConnectionDB);

                    bResult = BCOChanRef.UpdateDisChanReferFor(dtDisChanReferNEW,
                                                                  vDisNo,
                                                                  vItem,
                                                                  vPeriod,
                                                                  vUserID,
                                                                  DBT
                                                                  );

                    if (!bResult)
                        throw new Exception(string.Format("MaintainDisChanRefer.UpdateDisChanReferFor:Step{0} 發生錯誤", "4.5.2"));

                }
                #endregion


                #region 4.6) 維護配本輔助項目設定

                #region 比較新舊值
                dc.Clear();
                dc.CompareA = dtDisTmpRecNew;
                dc.CompareB = dtDisTmpRecOld;
                dc.CompareField.AddCompareFieldRow("ID", "", true);
                dc.CompareField.AddCompareFieldRow("CODE", "", true);
                dc.CompareField.AddCompareFieldRow("SP_CHANGE", "", false);
                dc.CompareField.AddCompareFieldRow("ORDER_CHANGE", "", false);
                dc.CompareField.AddCompareFieldRow("DIS_TYPE", "", false);
                dc.CompareData();
                dtDisTmpRecDiff = dc.ADiff;
                #endregion

                if (dtDisTmpRecDiff != null && dtDisTmpRecDiff.Rows.Count > 0)
                {
                    #region

                    MaintainDisAssist BCODisAssist = new MaintainDisAssist(ConnectionDB);
                    DataTable dtDisAssist = BCODisAssist.GetDisAssistMainSchema();


                    ParameterList.Clear();
                    ParameterList.Add(dtDisTmpRecDiff.Rows[0]["DIS_NO"]);
                    ParameterList.Add(dtDisTmpRecDiff.Rows[0]["ITEM"]);
                    ParameterList.Add(dtDisTmpRecDiff.Rows[0]["PERIOD"]);
                    ParameterList.Add(DBNull.Value);//CHAN_NO
                    ParameterList.Add(dtDisTmpRecDiff.Rows[0]["UPDATEDATE"]);
                    ParameterList.Add(dtDisTmpRecDiff.Rows[0]["UPDATEUID"]);

                    BCODisAssist.DeleteOldDisAssist(ParameterList, DBT);
                    #endregion



                    //a) 判斷是否需更新特殊調整
                    if (dtDisTmpRecDiff.Rows[0]["SP_CHANGE"] != null && dtDisTmpRecDiff.Rows[0]["SP_CHANGE"].ToString().Trim() != "0")
                    {
                        #region 更新特殊調整(ASSIST_CODE='09')
                        DataRow dr = dtDisAssist.NewRow();
                        dr["DIS_NO"] = vDisNo;
                        dr["ITEM"] = vItem;
                        dr["PERIOD"] = vPeriod;
                        dr["CHAN_NO"] = "0";//更新時固定為0
                        dr["ASSIST_CODE"] = "09";
                        dr["OPERATOR1"] = DBNull.Value;
                        dr["OP_VALUE1"] = DBNull.Value;
                        dr["OPERATOR2"] = DBNull.Value;
                        dr["OP_VALUE2"] = DBNull.Value;
                        dr["CHANGE_TYPE"] = DBNull.Value;
                        dr["CHANGE_RATE"] = DBNull.Value;
                        dr["ORDER_CHANGE"] = DBNull.Value;
                        dr["UPDATEDATE"] = DateTime.Now;
                        dr["UPDATEUID"] = vUserID;
                        dtDisAssist.Rows.Add(dr);

                        bResult = BCODisAssist.CreateDisAssist(dtDisAssist, null, DBT);

                        #endregion
                    }

                    //b) 判斷是否需更新訂單匯入

                    if (dtDisTmpRecDiff.Rows[0]["ORDER_CHANGE"] != null && dtDisTmpRecDiff.Rows[0]["ORDER_CHANGE"].ToString().Trim() != "0")
                    {
                        #region 更新訂單匯入(ASSIST_CODE='10'),
                        DataRow dr = dtDisAssist.NewRow();
                        dr["DIS_NO"] = vDisNo;
                        dr["ITEM"] = vItem;
                        dr["PERIOD"] = vPeriod;
                        dr["CHAN_NO"] = "0";//更新時固定為0
                        dr["ASSIST_CODE"] = "10";
                        dr["OPERATOR1"] = DBNull.Value;
                        dr["OP_VALUE1"] = DBNull.Value;
                        dr["OPERATOR2"] = DBNull.Value;
                        dr["OP_VALUE2"] = DBNull.Value;
                        dr["CHANGE_TYPE"] = DBNull.Value;
                        dr["CHANGE_RATE"] = DBNull.Value;
                        dr["ORDER_CHANGE"] = dtDisTmpRecDiff.Rows[0]["ORDER_CHANGE"].ToString().Trim();
                        dr["UPDATEDATE"] = DateTime.Now;
                        dr["UPDATEUID"] = vUserID;
                        dtDisAssist.Rows.Add(dr);

                        bResult = BCODisAssist.CreateDisAssist(dtDisAssist, null, DBT);

                        #endregion
                    }
                }
                else
                {
                    bResult = true;
                }

                if (!bResult)
                    throw new Exception(string.Format("MaintainDisAssist.CreateDisAssist:Step{0} 發生錯誤", "4.6"));
                #endregion

                #region 4.7) 若dtDisItem.Rows.DIS_TYPE ='109' =>需判斷是否記錄109等級配本設定

                #region 比較新舊值
                dc.Clear();
                dc.CompareA = dtDisType109TmpNew;
                dc.CompareB = dtDisType109TmpOld;
                dc.CompareField.AddCompareFieldRow("DIS_NO", "", true);
                dc.CompareField.AddCompareFieldRow("ITEM", "", true);
                dc.CompareField.AddCompareFieldRow("PERIOD", "", true);
                dc.CompareField.AddCompareFieldRow("RANK_CODE", "", true);
                dc.CompareField.AddCompareFieldRow("RANK_LEVEL", "", true);
                //dc.CompareField.AddCompareFieldRow("VENDOR", "", true);
                dc.CompareField.AddCompareFieldRow("PATTERN_NO", "", true);
                dc.CompareField.AddCompareFieldRow("RANK_DIS_QTY", "", false);

                dc.CompareData();
                dtDisType109TmpDiff = dc.ADiff;
                #endregion

                if (dtDisTmpRecNew != null && dtDisTmpRecNew.Rows.Count > 0)
                {
                    if (dtDisTmpRecNew.Rows[0]["DIS_TYPE"].ToString().Trim() == "109")
                    {
                        //if (dtDisType109TmpDiff != null && dtDisType109TmpDiff.Rows.Count > 0)
                        //{
                        //    MaintainDisType109Tmp BCODisType109 = new MaintainDisType109Tmp(ConnectionDB);
                        //    bResult = BCODisType109.SaveDisType109Tmp(dtDisType109TmpDiff, vDisNo, vItem, vPeriod, DBT);
                        //}

                        if (dtDisType109TmpNew != null && dtDisType109TmpNew.Rows.Count > 0)//20090811 added
                        {
                            MaintainDisType109Tmp BCODisType109 = new MaintainDisType109Tmp(ConnectionDB);
                            bResult = BCODisType109.SaveDisType109Tmp(dtDisType109TmpNew, vDisNo, vItem, vPeriod, DBT);
                        }
                    }
                }
                else
                {
                    bResult = true;
                }

                if (!bResult)
                    throw new Exception(string.Format("MaintainDisType109Tmp.SaveDisType109Tmp:Step{0} 發生錯誤", "4.7"));

                #endregion

                #region 4.8) 若dtDisItem.Rows.DIS_TYPE in ('105','110') =>需判斷是否記錄105類似配本/110定額配本設定記錄

                #region 比較新舊值
                dc.Clear();
                dc.CompareA = dtDisTypeTmpNew;
                dc.CompareB = dtDisTypeTmpOld;
                dc.CompareField.AddCompareFieldRow("DIS_NO", "", true);
                dc.CompareField.AddCompareFieldRow("ITEM", "", true);
                dc.CompareField.AddCompareFieldRow("PERIOD", "", true);
                dc.CompareField.AddCompareFieldRow("DIS_TYPE", "", true);
                dc.CompareField.AddCompareFieldRow("DIS_QTY", "", false);

                dc.CompareData();
                dtDisTypeTmpDiff = dc.ADiff;
                dtDisTypeTmpDelete = dc.BOnly;

                #endregion

                if (dtDisTmpRecNew != null && dtDisTmpRecNew.Rows.Count > 0)
                {
                    if (dtDisTmpRecNew.Rows[0]["DIS_TYPE"].ToString().Trim() == "105" || dtDisTmpRecNew.Rows[0]["DIS_TYPE"].ToString().Trim() == "110")
                    {
                        //if (dtDisTypeTmpDiff != null && dtDisTypeTmpDiff.Rows.Count > 0)
                        //{
                        //    MaintainDisTypeTmp BCODisType = new MaintainDisTypeTmp(ConnectionDB);
                        //    bResult = BCODisType.SaveDisTypeTmp(dtDisTypeTmpDiff, vDisNo, vItem, vPeriod, DBT);
                        //}

                        if (dtDisTypeTmpNew != null && dtDisTypeTmpNew.Rows.Count > 0)//20090812 added
                        {
                            MaintainDisTypeTmp BCODisType = new MaintainDisTypeTmp(ConnectionDB);
                            bResult = BCODisType.SaveDisTypeTmp(dtDisTypeTmpNew, vDisNo, vItem, vPeriod, DBT);
                        }
                    }
                    else
                    {
                        if (dtDisTypeTmpDelete != null && dtDisTypeTmpDelete.Rows.Count > 0)//20090820 added
                        {
                            MaintainDisTypeTmp BCODisType = new MaintainDisTypeTmp(ConnectionDB);
                            bResult = BCODisType.DeleteDisTypeTmp(vDisNo, vItem, vPeriod, DBT);
                        }

                    }
                }
                else
                {
                    bResult = true;
                }

                if (!bResult)
                    throw new Exception(string.Format("MaintainDisTypeTmp.SaveDisTypeTmp:Step{0} 發生錯誤", "4.8"));

                #endregion

                #region 4.9) 異動其他相關資料表
                ParameterList.Clear();
                ParameterList.Add(vDisNo);
                ParameterList.Add(vItem);
                ParameterList.Add(vPeriod);
                ParameterList.Add(vUserID);

                ProcessALOCommon BCOProcessCommon = new ProcessALOCommon(ConnectionDB);

                bResult = BCOProcessCommon.UpdateOtherTables(ParameterList, DBT);

                if (!bResult)
                    throw new Exception(string.Format("ProcessALOCommon.UpdateOtherTables:Step{0} 發生錯誤", "4.9"));

                #endregion


                #endregion

                #region 交易成功

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation成立
                    DBT.Commit();
                }

                #endregion

            }
            catch (Exception ex)
            {
                #region 交易失敗

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation失敗
                    DBT.Rollback();
                }

                #endregion

                bResult = false;

                throw GetNewException(ex);
            }
            finally
            {
                #region 判斷是否關閉交易連線

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation,關閉連線
                    if (Conn.State == ConnectionState.Connecting)
                    {
                        Conn.Close();
                    }
                }

                #endregion

            }


            return bResult;

            #endregion
        }
コード例 #3
0
        /// <summary>
        /// 依配本方式('101','103','104')取得預設參照資訊
        /// dtParam(配本參數方式)、dtDisItem(配本商品)、V_DIS_TYPE、V_ITEM、V_PERIOD、I_ITEM_REFER_COUNT
        /// </summary>
        /// <param name="dtParam">配本參數方式</param>
        /// <param name="B1_PERIOD">前一期銷售實績</param>
        /// <param name="B2_PERIOD">前二期銷售實績</param>
        /// <param name="B3_PERIOD">前三期銷售實績</param>
        /// <param name="B4_PERIOD">前四期銷售實績</param>
        /// <param name="B5_PERIOD">前五期銷售實績</param>
        /// <param name="B6_PERIOD">前六期銷售實績</param>
        /// <param name="V_DIS_TYPE">配本方式</param>
        /// <param name="V_ITEM">品號</param>
        /// <param name="V_PERIOD">期別</param>
        /// <param name="I_ITEM_REFER_COUNT">設定品項參照數</param>        
        /// <returns>dtDisItemRefer</returns>
        public DataTable QueryDisItemReferByDisType(DataTable dtParam,
                                                    string B1_PERIOD,
                                                    string B2_PERIOD,
                                                    string B3_PERIOD,
                                                    string B4_PERIOD,
                                                    string B5_PERIOD,
                                                    string B6_PERIOD,
                                                    string V_DIS_TYPE,
                                                    string V_ITEM,
                                                    string V_PERIOD,
                                                    Int32 I_ITEM_REFER_COUNT
                                                    )
        {
            #region

            #region Variables
            Int32 iSelect_Period;               //往前取前幾期       
            Int32 iSelect_P_From;             //往前取前幾期From   
            Int32 iSelect_P_To;               //往前取前幾期To    
            string vOrderBy = "";             //排序方式 
            string vPeriod_S = "";            //期別起
            string vPeriod_E = "";            //期別迄
            string vITEM_NAME = "";

            DataTable dtItemSales = null;

            MaintainDisItemRefer BCODIR = new MaintainDisItemRefer(ConnectionDB);
            DataTable dtDisItemRefer = BCODIR.GetDisItemReferSchema();

            ArrayList Paramslist = new ArrayList();

            DataRow nRow = null;
            Int32 iStAcceptQty = 0;
            Int32 iBackwardQty = 0;
            Int32 iFoundCount = 0;
            Int32 iPeriod_S = 0;             //期別起
            Int32 iPeriod_E = 0;             //期別迄
            Int32 iPERIOD = 0;
            Int32 iRowCnt = 0;
            Int32[] i32AryPeriod = null;

            string sB1_Period = "";          //前1期期別
            string sB2_Period = "";          //前2期期別
            string sB3_Period = "";          //前3期期別
            string sB4_Period = "";          //前4期期別
            string sB5_Period = "";          //前5期期別
            string sB6_Period = "";          //前6期期別

            Int32 iB1_Period = 0;            //前1期期別
            Int32 iB2_Period = 0;            //前2期期別
            Int32 iB3_Period = 0;            //前3期期別
            Int32 iB4_Period = 0;            //前4期期別
            Int32 iB5_Period = 0;            //前5期期別
            Int32 iB6_Period = 0;            //前6期期別

            int SubQty = 0;
            Decimal REAL_SALESRATE = 0;
            Decimal REAL_SALESRATE_Sum = 0;
            #endregion

            try
            {
                #region
                //4.1) 判斷配本方式
                if (!(V_DIS_TYPE == "101" || V_DIS_TYPE == "103" || V_DIS_TYPE == "104"))
                {
                    //停止處理流程,離開此涵式 //不視為Exception;
                    return dtDisItemRefer;
                }

                //4.2) 取得基本資料與配本參數
                MaintainDisParameter BCO1 = new MaintainDisParameter(ConnectionDB);
                QueryALOCommon BCO2 = new QueryALOCommon(ConnectionDB);
                ITMModel.MaintainSKU BCO3 = new ITMModel.MaintainSKU(ConnectionDB);

                Paramslist.Clear();
                Paramslist.Add(V_ITEM);
                DataTable dt = BCO3.QuerySKUByCode(Paramslist);
                if (dt != null && dt.Rows.Count > 0)
                {
                    vITEM_NAME = dt.Rows[0]["ITEM_NAME"].ToString();
                }



                //a) 取得配本參數資料
                if (dtParam == null || dtParam.Rows.Count == 0)
                {
                    //重取配本方式參數
                    Paramslist.Clear();
                    Paramslist.Add(V_DIS_TYPE);
                    Paramslist.Add(1);
                    dtParam = BCO1.QuerySwitch(QueryType.CODE, Paramslist);
                }

                if (dtParam == null || dtParam.Rows.Count == 0)
                {
                    //顯示錯誤訊息『無此配本方式:V_DIS_TYPE』於訊息區;
                    throw new Exception(string.Format("無此配本方式:{0}", V_DIS_TYPE));
                }

                //b) 取得配本參數資料
                Int32.TryParse(dtParam.Rows[0]["SELECT_PERIOD"].ToString().Trim(), out iSelect_Period);       //往前取前幾期
                Int32.TryParse(dtParam.Rows[0]["SELECT_P_FROM"].ToString().Trim(), out iSelect_P_From);   //往前取前幾期From
                Int32.TryParse(dtParam.Rows[0]["SELECT_P_TO"].ToString().Trim(), out iSelect_P_To);       //往前取前幾期To


                //b) 取得配本商品資料
                //DataRow[] ItemRow = dtDisItem.Select("ITEM='" + V_ITEM + "' and PERIOD='" + V_PERIOD + "' ");

                //取得品項數
                if (I_ITEM_REFER_COUNT == 0)
                {
                    I_ITEM_REFER_COUNT = BCO2.GetDisItemReferCount(dtParam);
                }

                if (I_ITEM_REFER_COUNT == 0)
                {
                    //顯示錯誤訊息『參照品項數=0』於訊息區;
                    throw new Exception("參照品項數=0");
                }

                //c) 取得排序方式
                vOrderBy = "";

                if (dtParam.Rows[0]["SORT_KEY1"].ToString() != "")
                {
                    vOrderBy += dtParam.Rows[0]["SORT_KEY1"].ToString() + ",";
                }

                if (dtParam.Rows[0]["SORT_KEY2"].ToString() != "")
                {
                    vOrderBy += dtParam.Rows[0]["SORT_KEY2"].ToString() + ",";
                }

                if (dtParam.Rows[0]["SORT_KEY3"].ToString() != "")
                {
                    vOrderBy += dtParam.Rows[0]["SORT_KEY3"].ToString() + ",";
                }

                //# 去掉最後一個逗號 ","
                if (vOrderBy.Trim().Length > 0)
                {
                    if (vOrderBy.Substring(vOrderBy.Length - 1, 1) == ",")
                    {
                        vOrderBy = vOrderBy.Substring(0, vOrderBy.Length - 1);
                    }
                }

                //4.3) 依照配本方式設定設定不同計算期別
                switch (V_DIS_TYPE)
                {
                    case "101"://a) V_DIS_TYPE = 101 (前期比例)時
                        #region 前期比例
                        switch (iSelect_Period)
                        {
                            case 1:
                                vPeriod_S = B1_PERIOD;
                                break;
                            case 2:
                                vPeriod_S = B2_PERIOD;
                                break;
                            case 3:
                                vPeriod_S = B3_PERIOD;
                                break;
                            case 4:
                                vPeriod_S = B4_PERIOD;
                                break;
                            case 5:
                                vPeriod_S = B5_PERIOD;
                                break;
                            case 6:
                                vPeriod_S = B6_PERIOD;
                                break;
                            default:
                                throw new Exception("期別起無資料!");
                                break;
                        }
                        vPeriod_E = vPeriod_S;
                        #endregion
                        break;
                    case "103"://b) V_DIS_TYPE = 103 (實績加重) 或 104 (移行指數)時
                    case "104":
                        #region 移行指數
                        switch (iSelect_P_From)
                        {
                            case 1:
                                vPeriod_E = B1_PERIOD;
                                break;
                            case 2:
                                vPeriod_E = B2_PERIOD;
                                break;
                            case 3:
                                vPeriod_E = B3_PERIOD;
                                break;
                            case 4:
                                vPeriod_E = B4_PERIOD;
                                break;
                            case 5:
                                vPeriod_E = B5_PERIOD;
                                break;
                            case 6:
                                vPeriod_E = B6_PERIOD;
                                break;
                            default:
                                throw new Exception("往前取前幾期From無資料!");
                                break;
                        }
                        switch (iSelect_P_To)
                        {
                            case 1:
                                vPeriod_S = B1_PERIOD;
                                break;
                            case 2:
                                vPeriod_S = B2_PERIOD;
                                break;
                            case 3:
                                vPeriod_S = B3_PERIOD;
                                break;
                            case 4:
                                vPeriod_S = B4_PERIOD;
                                break;
                            case 5:
                                vPeriod_S = B5_PERIOD;
                                break;
                            case 6:
                                vPeriod_S = B6_PERIOD;
                                break;
                            default:
                                throw new Exception("往前取前幾期To無資料!");
                        }
                        #endregion
                        break;
                }

                //c) 取得前幾期銷售實績 
                Paramslist.Clear();
                Paramslist.Add(V_ITEM == "" ? null : V_ITEM);
                Paramslist.Add(vPeriod_S == "" ? null : vPeriod_S);
                Paramslist.Add(vPeriod_E == "" ? null : vPeriod_E);
                Paramslist.Add(vOrderBy == "" ? null : vOrderBy);

                dtItemSales = BCO2.QueryP6_PeriodSalesInfo(Paramslist);

                //4.4) 依照不同配本方式,取得新增參照商品資料
                Int32.TryParse(vPeriod_S, out iPeriod_S);
                Int32.TryParse(vPeriod_E, out iPeriod_E);

                sB1_Period = B1_PERIOD;
                sB2_Period = B2_PERIOD;
                sB3_Period = B3_PERIOD;
                sB4_Period = B4_PERIOD;
                sB5_Period = B5_PERIOD;
                sB6_Period = B6_PERIOD;

                Int32.TryParse(sB1_Period, out iB1_Period);
                Int32.TryParse(sB2_Period, out iB2_Period);
                Int32.TryParse(sB3_Period, out iB3_Period);
                Int32.TryParse(sB4_Period, out iB4_Period);
                Int32.TryParse(sB5_Period, out iB5_Period);
                Int32.TryParse(sB6_Period, out iB6_Period);

                #endregion

                switch (V_DIS_TYPE)
                {
                    case "101"://a) V_DIS_TYPE = 101 (前期比例)時 (vPeriod_S=vPeriod_E=前一期:P_B1)
                        #region
                        if (sB1_Period == "" || sB1_Period == null)
                        {
                            //* 前一期資料不存在時,設定訊息『新品無前期發行資訊』於訊息區。
                            throw new Exception("新品無前期發行資訊");
                        }

                        if (dtItemSales.Rows.Count == 0)
                        {
                            //* 前一期資料不存在銷售實績時,設定訊息『無前期實銷資訊』於訊息區。
                            throw new Exception("無前期實銷資訊,請使用其他配本方式");
                        }

                        Int32.TryParse(dtItemSales.Rows[0]["ST_ACCEPT_QTY"].ToString().Trim(), out iStAcceptQty);
                        Int32.TryParse(dtItemSales.Rows[0]["BACKWARD_QTY"].ToString().Trim(), out iBackwardQty);

                        nRow = dtDisItemRefer.NewRow();
                        nRow["ITEM"] = V_ITEM;                                                                               //--品號
                        nRow["ITEM_NAME"] = vITEM_NAME;                                                                      //--品名     
                        nRow["PERIOD"] = sB1_Period;                                                                         //--期別
                        nRow["RITEM"] = V_ITEM;                                                                              //--參照品號
                        nRow["RITEM_NAME"] = vITEM_NAME;                                                                     //--參照品名     
                        nRow["RPERIOD"] = vPeriod_S;                                                                         //--參照期別  
                        nRow["ST_ACCEPT_QTY"] = iStAcceptQty;                                                                //--進貨
                        nRow["BACKWARD_QTY"] = iBackwardQty;                                                                 //--退貨
                        nRow["REAL_MERIT"] = iStAcceptQty - iBackwardQty;                                                    //--實績                        
                        SubQty = iStAcceptQty - iBackwardQty;
                        if (iStAcceptQty == 0)
                        {
                            //REAL_SALESRATE = 0;
                            throw new Exception("前一期別無銷售實績,不可作為參照品項!!");
                        }
                        else
                        {
                            REAL_SALESRATE = Decimal.Parse(SubQty.ToString()) / Decimal.Parse(iStAcceptQty.ToString()) * 100;
                        }
                        nRow["REAL_SALESRATE"] = (iStAcceptQty == 0) ? 0 : Decimal.Round(REAL_SALESRATE, MidpointRounding.AwayFromZero); //--實銷率
                        nRow["REFER_RATE"] = 100;                                                                            //--參照比率%  
                        dtDisItemRefer.Rows.Add(nRow);
                        break;
                        #endregion
                    case "103"://b) V_DIS_TYPE = 103 (實績加重) 時
                        #region

                        //# 由配本商品資料 ItemRow 中取前1期~前6期 (B1_PERIOD~B6_PERIOD)作計算基準

                        if (sB1_Period == "" && sB2_Period == "" && sB3_Period == "" && sB4_Period == "" && sB5_Period == "" && sB6_Period == "")
                        {
                            //顯示訊息『新品請使用其他配本方式』於訊息區,離開涵式處理流程。
                            throw new Exception("新品請使用其他配本方式");
                        }

                        //# 比較前1期~前6期 與 計算期別起迄(vPeriod_S~vPeriod_E),
                        //  將符合起迄的期別,記錄相符筆數

                        i32AryPeriod = new Int32[] { iB1_Period, iB2_Period, iB3_Period, iB4_Period, iB5_Period, iB6_Period };

                        for (Int32 i = 0; i <= i32AryPeriod.GetUpperBound(0); i++)
                        {
                            //if (iPeriod_S <= i32AryPeriod[i] && i32AryPeriod[i] <= iPeriod_E)
                            if ((i32AryPeriod[i]) >= iPeriod_S &&
                                 (i32AryPeriod[i] > 0 && i32AryPeriod[i] <= iPeriod_E))
                            {
                                iFoundCount++;
                            }
                        }


                        if (iFoundCount == 0)//--查無任何一筆相符資料
                        {
                            //顯示錯誤訊息『存在前六期別銷售資料,但查無可參照期別,請確認配本方式設定是否異常。』
                            throw new Exception("存在前六期別銷售資料,但查無可參照期別,請確認配本方式設定是否異常。");
                        }
                        else if (iFoundCount != iSelect_Period)// (往前選幾期)) --可用之參照期別品項數與參數檔設定不相符
                        {

                            //# 選出前一期別銷售實績
                            sB1_Period = B1_PERIOD;

                            //# 新增前一期資料作為參照商品,以例外比例作為參照比率%

                            QueryALOCommon BCOCommon = new QueryALOCommon(ConnectionDB);

                            Paramslist.Clear();
                            Paramslist.Add(V_ITEM);
                            Paramslist.Add(V_PERIOD);
                            DataTable dtTemp = BCOCommon.QueryItemPeriodSalesInfo(Paramslist);

                            if (dtTemp != null && dtTemp.Rows.Count > 0)
                            {
                                Int32.TryParse(dtTemp.Rows[0]["ACCEPT_QTY"].ToString().Trim(), out iStAcceptQty);
                                Int32.TryParse(dtTemp.Rows[0]["BACKWARD_QTY"].ToString().Trim(), out iBackwardQty);

                            }

                            nRow = dtDisItemRefer.NewRow();
                            nRow["ITEM"] = V_ITEM;                                                                               //--品號
                            nRow["ITEM_NAME"] = vITEM_NAME;                                                                      //--品名     
                            nRow["PERIOD"] = sB1_Period;                                                                         //--期別
                            nRow["RITEM"] = V_ITEM;                                                                              //--參照品號
                            nRow["RITEM_NAME"] = vITEM_NAME;                                                                     //--參照品名     
                            nRow["RPERIOD"] = B1_PERIOD;                                                                         //--參照期別=B1 
                            nRow["ST_ACCEPT_QTY"] = iStAcceptQty;                                                                //--進貨
                            nRow["BACKWARD_QTY"] = iBackwardQty;                                                                 //--退貨
                            nRow["REAL_MERIT"] = iStAcceptQty - iBackwardQty;                                                    //--實績
                            SubQty = iStAcceptQty - iBackwardQty;
                            if (iStAcceptQty > 0)
                            {
                                REAL_SALESRATE = Decimal.Parse(SubQty.ToString()) / Decimal.Parse(iStAcceptQty.ToString()) * 100;
                            }
                            else
                            {
                                REAL_SALESRATE = 0;
                            }
                            nRow["REAL_SALESRATE"] = (iStAcceptQty == 0) ? 0 : Decimal.Round(REAL_SALESRATE, MidpointRounding.AwayFromZero); //--實銷率
                            nRow["REFER_RATE"] = dtParam.Rows[0]["REFER_OTHER"];                                                 //--參照比率%,使用例外比率;                                                                           //--參照比率%  
                            dtDisItemRefer.Rows.Add(nRow);
                        }
                        else if (iFoundCount == iSelect_Period)//--可用之參照期別品項數與參數檔設定相符時
                        {
                            // --因為要考慮排序,所以使用dtItemSales的排序方式,進行資料新增與判斷。 
                            //依照 dtItemSales 的排序

                            iRowCnt = 0;
                            REAL_SALESRATE_Sum = 0;
                            foreach (DataRow dRow in dtItemSales.Rows)
                            {

                                Int32.TryParse(dRow["PERIOD"].ToString().Trim(), out iPERIOD);

                                if (iPeriod_S <= iPERIOD && iPERIOD <= iPeriod_E)
                                {
                                    iRowCnt++;
                                    if (iRowCnt > iSelect_Period)
                                    {
                                        break;
                                    }

                                    //# 新增一筆資料作為參照商品, 依新增iRowCont 取得參照比率
                                    Int32.TryParse(dRow["ST_ACCEPT_QTY"].ToString().Trim(), out iStAcceptQty);
                                    Int32.TryParse(dRow["BACKWARD_QTY"].ToString().Trim(), out iBackwardQty);

                                    nRow = dtDisItemRefer.NewRow();
                                    nRow["ITEM"] = V_ITEM;                                                                               //--品號
                                    nRow["ITEM_NAME"] = vITEM_NAME;                                                                      //--品名     
                                    nRow["PERIOD"] = sB1_Period;                                                                         //--期別
                                    nRow["RITEM"] = V_ITEM;                                                                              //--參照品號
                                    nRow["RITEM_NAME"] = vITEM_NAME;                                                                     //--參照品名     
                                    nRow["RPERIOD"] = dRow["PERIOD"];                                                                    //--參照期別  
                                    nRow["ST_ACCEPT_QTY"] = iStAcceptQty;                                                                //--進貨
                                    nRow["BACKWARD_QTY"] = iBackwardQty;                                                                 //--退貨
                                    nRow["REAL_MERIT"] = iStAcceptQty - iBackwardQty;                                                    //--實績
                                    SubQty = iStAcceptQty - iBackwardQty;
                                    REAL_SALESRATE = (iStAcceptQty == 0) ? 0 : Decimal.Parse(SubQty.ToString()) / Decimal.Parse(iStAcceptQty.ToString()) * 100;
                                    REAL_SALESRATE_Sum += REAL_SALESRATE;// 實銷率合計
                                    nRow["REAL_SALESRATE"] = (iStAcceptQty == 0) ? 0 : Decimal.Round(REAL_SALESRATE, MidpointRounding.AwayFromZero); //--實銷率
                                    nRow["REFER_RATE"] = dtParam.Rows[0]["REFER_RATE" + iRowCnt.ToString()];                             //--參照比率%,依照排序順序取得參照比率  
                                    dtDisItemRefer.Rows.Add(nRow);
                                }

                            }//end for
                            // 新增判斷 所有參照品項的銷售實績均為0時,需alert訊息
                            if (REAL_SALESRATE_Sum < 1)
                            {
                                throw new Exception("參照品項均無銷售實績,請調整參照品項");
                            }
                        }

                        break;
                        #endregion
                    case "104"://c) V_DIS_TYPE = 104 (移行指數) 時
                        #region

                        //# 由配本商品資料 ItemRow 中取前1期~前6期 (B1_PERIOD~B6_PERIOD)作計算基準

                        if (sB1_Period == "" && sB2_Period == "" && sB3_Period == "" && sB4_Period == "" && sB5_Period == "" && sB6_Period == "")
                        {
                            //顯示訊息『新品請使用其他配本方式』於訊息區,離開涵式處理流程。
                            throw new Exception("新品請使用其他配本方式");
                        }


                        //# 比較前1期~前6期 與 計算期別起迄(vPeriod_S~vPeriod_E),
                        //  將符合起迄的期別,記錄相符筆數

                        i32AryPeriod = new Int32[] { iB1_Period, iB2_Period, iB3_Period, iB4_Period, iB5_Period, iB6_Period };

                        for (Int32 i = 0; i <= i32AryPeriod.GetUpperBound(0); i++)
                        {
                            if (iPeriod_S <= i32AryPeriod[i] && i32AryPeriod[i] <= iPeriod_E)
                            {
                                iFoundCount++;
                            }
                        }

                        if (iFoundCount == 0 || iFoundCount != iSelect_Period)
                        {
                            //顯示錯誤訊息『銷售期別不足,請使用其他配本方式。』
                            throw new Exception("銷售期別不足,請使用其他配本方式。");

                        }
                        else if (iFoundCount == iSelect_Period)
                        {

                            //--因為要考慮排序,所以使用dtItemSales的排序方式,進行資料新增與判斷。 
                            //  依照 dtItemSales 的排序

                            iRowCnt = 0;
                            REAL_SALESRATE_Sum = 0;
                            foreach (DataRow dRow in dtItemSales.Rows)
                            {
                                Int32.TryParse(dRow["PERIOD"].ToString().Trim(), out iPERIOD);

                                if (iPeriod_S <= iPERIOD && iPERIOD <= iPeriod_E)
                                {
                                    iRowCnt++;
                                    if (iRowCnt > iSelect_Period)
                                    {
                                        break;
                                    }

                                    //# 新增一筆資料作為參照商品, 依新增iRowCont 取得參照比率
                                    Int32.TryParse(dRow["ST_ACCEPT_QTY"].ToString().Trim(), out iStAcceptQty);
                                    Int32.TryParse(dRow["BACKWARD_QTY"].ToString().Trim(), out iBackwardQty);

                                    nRow = dtDisItemRefer.NewRow();
                                    nRow["ITEM"] = V_ITEM;                                                                               //--品號
                                    nRow["ITEM_NAME"] = vITEM_NAME;                                                                      //--品名     
                                    nRow["PERIOD"] = dRow["PERIOD"];                                                                     //--期別
                                    nRow["RITEM"] = V_ITEM;                                                                              //--參照品號
                                    nRow["RITEM_NAME"] = vITEM_NAME;                                                                     //--參照品名     
                                    nRow["RPERIOD"] = dRow["PERIOD"];                                                                    //--參照期別  
                                    nRow["ST_ACCEPT_QTY"] = iStAcceptQty;                                                                //--進貨
                                    nRow["BACKWARD_QTY"] = iBackwardQty;                                                                 //--退貨
                                    nRow["REAL_MERIT"] = iStAcceptQty - iBackwardQty;                                                    //--實績
                                    SubQty = iStAcceptQty - iBackwardQty;
                                    REAL_SALESRATE = (iStAcceptQty == 0) ? 0 : Decimal.Parse(SubQty.ToString()) / Decimal.Parse(iStAcceptQty.ToString()) * 100;
                                    REAL_SALESRATE_Sum += REAL_SALESRATE;// 實銷率合計
                                    nRow["REAL_SALESRATE"] = (iStAcceptQty == 0) ? 0 : Decimal.Round(REAL_SALESRATE, MidpointRounding.AwayFromZero); //--實銷率
                                    nRow["REFER_RATE"] = dtParam.Rows[0]["REFER_RATE" + iRowCnt.ToString()];                             //--參照比率%,依照排序順序取得參照比率  
                                    dtDisItemRefer.Rows.Add(nRow);
                                }
                            }
                        }

                        // 新增判斷 所有參照品項的銷售實績均為0時,需alert訊息
                        if (REAL_SALESRATE_Sum < 1)
                        {
                            throw new Exception("參照品項均無銷售實績,請調整參照品項");
                        }

                        #region 取得去年同期資訊 2009-07-16 cyhsu add

                        string sErrMsg = "";
                        Paramslist.Clear();
                        Paramslist.Add(V_ITEM);
                        Paramslist.Add(V_PERIOD);

                        DataTable dtLY_Sales = QueryLastYear_PeriodSalesInfo(Paramslist);
                        if (dtLY_Sales != null && dtLY_Sales.Rows.Count > 0)
                        {
                            #region 逐筆新增配本參照資料
                            foreach (DataRow dRow in dtLY_Sales.Rows)
                            {
                                //# 新增一筆資料作為參照商品, 依新增iRowCont 取得參照比率
                                Int32.TryParse(dRow["ST_ACCEPT_QTY"].ToString().Trim(), out iStAcceptQty);
                                Int32.TryParse(dRow["BACKWARD_QTY"].ToString().Trim(), out iBackwardQty);

                                nRow = dtDisItemRefer.NewRow();
                                nRow["ITEM"] = V_ITEM;                                                                               //--品號
                                nRow["ITEM_NAME"] = vITEM_NAME;                                                                      //--品名     
                                nRow["PERIOD"] = dRow["PERIOD"];                                                                     //--期別
                                nRow["RITEM"] = V_ITEM;                                                                              //--參照品號
                                nRow["RITEM_NAME"] = vITEM_NAME;                                                                     //--參照品名     
                                nRow["RPERIOD"] = dRow["PERIOD"];                                                                    //--參照期別  
                                nRow["ST_ACCEPT_QTY"] = iStAcceptQty;                                                                //--進貨
                                nRow["BACKWARD_QTY"] = iBackwardQty;                                                                 //--退貨
                                nRow["REAL_MERIT"] = iStAcceptQty - iBackwardQty;                                                    //--實績
                                SubQty = iStAcceptQty - iBackwardQty;
                                REAL_SALESRATE = (iStAcceptQty == 0) ? 0 : Decimal.Parse(SubQty.ToString()) / Decimal.Parse(iStAcceptQty.ToString()) * 100;
                                nRow["REAL_SALESRATE"] = (iStAcceptQty == 0) ? 0 : Decimal.Round(REAL_SALESRATE, MidpointRounding.AwayFromZero); //--實銷率
                                nRow["REFER_RATE"] = dtParam.Rows[0]["REFER_RATE" + iRowCnt.ToString()];                             //--參照比率%,依照排序順序取得參照比率  
                                dtDisItemRefer.Rows.Add(nRow);
                            }
                            #endregion
                        }
                        dtLY_Sales.Dispose();
                        #endregion

                        break;
                        #endregion
                }
            }
            catch (Exception ex)
            {
                throw GetNewException(ex);
            }



            return dtDisItemRefer;
            #endregion
        }
コード例 #4
0
ファイル: ALO132.aspx.cs プロジェクト: ChiangHanLung/PIC_VDS
 private void MakeDataTableDisItemRefer()
 {
     #region
     try
     {
         ALOModel.MaintainDisItemRefer BCO = new ALOModel.MaintainDisItemRefer(ConnectionDB);
         dtDisItemRefer = BCO.GetDisItemReferSchema();
     }
     catch (Exception ex)
     {
         ErrorMsgLabel.Text = ex.Message;
     }
     #endregion
 }
コード例 #5
0
ファイル: ALO132.aspx.cs プロジェクト: ChiangHanLung/PIC_VDS
    /// <summary>
    /// 取得原始資料庫資料
    /// </summary>
    private void GetAllOriginalDatatables()
    {
        #region
        try
        {
            #region

            ArrayList ParameterList1 = new ArrayList();//20091106
            ParameterList1.Clear();
            ParameterList1.Add(s_DISNO);
            ParameterList1.Add(s_ITEM);
            ParameterList1.Add(s_PERIOD);
            ParameterList1.Add(null);//CHAN_NO

            #region DIS_MAIN
            ALOModel.MaintainDisMain BCO1 = new ALOModel.MaintainDisMain(ConnectionDB);
            dtDisMainOld = BCO1.QueryByDisNo(ParameterList1);
            dtDisMain = dtDisMainOld.Copy();

            DataColumn[] PrimaryKeys11 = new DataColumn[1];
            PrimaryKeys11[0] = dtDisMainOld.Columns["DIS_NO"];
            dtDisMainOld.PrimaryKey = PrimaryKeys11;

            DataColumn[] PrimaryKeys12 = new DataColumn[1];
            PrimaryKeys12[0] = dtDisMain.Columns["DIS_NO"];
            dtDisMain.PrimaryKey = PrimaryKeys12;
            #endregion

            #region DIS_ITEM
            ALOModel.MaintainDisItem BCO2 = new ALOModel.MaintainDisItem(ConnectionDB);
            dtDisItemOld = BCO2.QueryByDisNo(ParameterList1);
            dtDisItem = dtDisItemOld.Copy();

            DataColumn[] PrimaryKeys21 = new DataColumn[3];
            PrimaryKeys21[0] = dtDisItemOld.Columns["DIS_NO"];
            PrimaryKeys21[1] = dtDisItemOld.Columns["ITEM"];
            PrimaryKeys21[2] = dtDisItemOld.Columns["PERIOD"];
            dtDisItemOld.PrimaryKey = PrimaryKeys21;

            DataColumn[] PrimaryKeys22 = new DataColumn[3];
            PrimaryKeys22[0] = dtDisItem.Columns["DIS_NO"];
            PrimaryKeys22[1] = dtDisItem.Columns["ITEM"];
            PrimaryKeys22[2] = dtDisItem.Columns["PERIOD"];
            dtDisItem.PrimaryKey = PrimaryKeys22;
            #endregion

            #region DIS_CHAN
            ALOModel.MaintainDisChan BCO3 = new ALOModel.MaintainDisChan(ConnectionDB);
            dtDisChanOld = BCO3.QueryDisChanFor111(ParameterList1);
            dtDisChan = dtDisChanOld.Copy();

            DataColumn[] PrimaryKeys31 = new DataColumn[4];
            PrimaryKeys31[0] = dtDisChanOld.Columns["DIS_NO"];
            PrimaryKeys31[1] = dtDisChanOld.Columns["ITEM"];
            PrimaryKeys31[2] = dtDisChanOld.Columns["PERIOD"];
            PrimaryKeys31[3] = dtDisChanOld.Columns["CHAN_NO"];
            dtDisChanOld.PrimaryKey = PrimaryKeys31;

            DataColumn[] PrimaryKeys32 = new DataColumn[4];
            PrimaryKeys32[0] = dtDisChan.Columns["DIS_NO"];
            PrimaryKeys32[1] = dtDisChan.Columns["ITEM"];
            PrimaryKeys32[2] = dtDisChan.Columns["PERIOD"];
            PrimaryKeys32[3] = dtDisChan.Columns["CHAN_NO"];
            dtDisChan.PrimaryKey = PrimaryKeys32;
            #endregion

            #region DIS_CHAN_REFER
            //ALOModel.MaintainDisChanRefer BCO9 = new ALOModel.MaintainDisChanRefer(ConnectionDB);
            //dtDisChanReferOld = BCO9.QueryDisChanReferByDisNo(ParameterList1);
            //dtDisChanRefer = dtDisChanReferOld.Copy();

            //DataColumn[] PrimaryKeys91 = new DataColumn[6];
            //PrimaryKeys91[0] = dtDisChanReferOld.Columns["DIS_NO"];
            //PrimaryKeys91[1] = dtDisChanReferOld.Columns["ITEM"];
            //PrimaryKeys91[2] = dtDisChanReferOld.Columns["PERIOD"];
            //PrimaryKeys91[3] = dtDisChanReferOld.Columns["CHAN_NO"];
            //PrimaryKeys91[4] = dtDisChanReferOld.Columns["RITEM"];
            //PrimaryKeys91[5] = dtDisChanReferOld.Columns["RPERIOD"];
            //dtDisChanReferOld.PrimaryKey = PrimaryKeys91;

            //DataColumn[] PrimaryKeys92 = new DataColumn[6];
            //PrimaryKeys92[0] = dtDisChanRefer.Columns["DIS_NO"];
            //PrimaryKeys92[1] = dtDisChanRefer.Columns["ITEM"];
            //PrimaryKeys92[2] = dtDisChanRefer.Columns["PERIOD"];
            //PrimaryKeys92[3] = dtDisChanRefer.Columns["CHAN_NO"];
            //PrimaryKeys92[4] = dtDisChanRefer.Columns["RITEM"];
            //PrimaryKeys92[5] = dtDisChanRefer.Columns["RPERIOD"];
            //dtDisChanRefer.PrimaryKey = PrimaryKeys92;
            #endregion

            #region DIS_ITEM_REFER
            ALOModel.MaintainDisItemRefer BCO4 = new ALOModel.MaintainDisItemRefer(ConnectionDB);
            dtDisItemReferOld = BCO4.QueryDisItemReferFor111(ParameterList1);
            dtDisItemRefer = dtDisItemReferOld.Copy();

            DataColumn[] PrimaryKeys41 = new DataColumn[5];
            PrimaryKeys41[0] = dtDisItemReferOld.Columns["DIS_NO"];
            PrimaryKeys41[1] = dtDisItemReferOld.Columns["ITEM"];
            PrimaryKeys41[2] = dtDisItemReferOld.Columns["PERIOD"];
            PrimaryKeys41[3] = dtDisItemReferOld.Columns["RITEM"];
            PrimaryKeys41[4] = dtDisItemReferOld.Columns["RPERIOD"];
            dtDisItemReferOld.PrimaryKey = PrimaryKeys41;

            DataColumn[] PrimaryKeys42 = new DataColumn[5];
            PrimaryKeys42[0] = dtDisItemRefer.Columns["DIS_NO"];
            PrimaryKeys42[1] = dtDisItemRefer.Columns["ITEM"];
            PrimaryKeys42[2] = dtDisItemRefer.Columns["PERIOD"];
            PrimaryKeys42[3] = dtDisItemRefer.Columns["RITEM"];
            PrimaryKeys42[4] = dtDisItemRefer.Columns["RPERIOD"];
            dtDisItemRefer.PrimaryKey = PrimaryKeys42;

            #endregion

            #region DIS_TYPE_TMP
            ALOModel.MaintainDisTypeTmp BCO5 = new ALOModel.MaintainDisTypeTmp(ConnectionDB);
            dtDisTypeTmpOld = BCO5.QueryDisTypeTmp(ParameterList1);
            dtDisTypeTmp = dtDisTypeTmpOld.Copy();

            DataColumn[] PrimaryKeys51 = new DataColumn[4];
            PrimaryKeys51[0] = dtDisTypeTmpOld.Columns["DIS_NO"];
            PrimaryKeys51[1] = dtDisTypeTmpOld.Columns["ITEM"];
            PrimaryKeys51[2] = dtDisTypeTmpOld.Columns["PERIOD"];
            PrimaryKeys51[3] = dtDisTypeTmpOld.Columns["DIS_TYPE"];
            dtDisTypeTmpOld.PrimaryKey = PrimaryKeys51;

            DataColumn[] PrimaryKeys52 = new DataColumn[4];
            PrimaryKeys52[0] = dtDisTypeTmp.Columns["DIS_NO"];
            PrimaryKeys52[1] = dtDisTypeTmp.Columns["ITEM"];
            PrimaryKeys52[2] = dtDisTypeTmp.Columns["PERIOD"];
            PrimaryKeys52[3] = dtDisTypeTmp.Columns["DIS_TYPE"];
            dtDisTypeTmp.PrimaryKey = PrimaryKeys52;
            #endregion

            #region DIS_TYPE_109_TMP
            ALOModel.MaintainDisType109Tmp BCO6 = new ALOModel.MaintainDisType109Tmp(ConnectionDB);
            dtDisType109TmpOld = BCO6.QueryDisType109Tmp(ParameterList1);
            dtDisTypeTmp109 = dtDisType109TmpOld.Copy();

            DataColumn[] PrimaryKeys61 = new DataColumn[6];
            PrimaryKeys61[0] = dtDisType109TmpOld.Columns["DIS_NO"];
            PrimaryKeys61[1] = dtDisType109TmpOld.Columns["ITEM"];
            PrimaryKeys61[2] = dtDisType109TmpOld.Columns["PERIOD"];
            PrimaryKeys61[3] = dtDisType109TmpOld.Columns["RANK_CODE"];
            PrimaryKeys61[4] = dtDisType109TmpOld.Columns["RANK_LEVEL"];
            PrimaryKeys61[5] = dtDisType109TmpOld.Columns["PATTERN_NO"];
            dtDisType109TmpOld.PrimaryKey = PrimaryKeys61;

            DataColumn[] PrimaryKeys62 = new DataColumn[6];
            PrimaryKeys62[0] = dtDisTypeTmp109.Columns["DIS_NO"];
            PrimaryKeys62[1] = dtDisTypeTmp109.Columns["ITEM"];
            PrimaryKeys62[2] = dtDisTypeTmp109.Columns["PERIOD"];
            PrimaryKeys62[3] = dtDisTypeTmp109.Columns["RANK_CODE"];
            PrimaryKeys62[4] = dtDisTypeTmp109.Columns["RANK_LEVEL"];
            PrimaryKeys62[5] = dtDisTypeTmp109.Columns["PATTERN_NO"];
            dtDisTypeTmp109.PrimaryKey = PrimaryKeys62;
            #endregion

            #region DIS_ASSIST
            ALOModel.MaintainDisAssist BCO7 = new ALOModel.MaintainDisAssist(ConnectionDB);
            dtDisAssistMainOld = BCO7.QueryDisAssistMainWithoutChan(ParameterList1);
            dtDisAssistMain = dtDisAssistMainOld.Copy();

            DataColumn[] PrimaryKeys71 = new DataColumn[4];
            PrimaryKeys71[0] = dtDisAssistMainOld.Columns["DIS_NO"];
            PrimaryKeys71[1] = dtDisAssistMainOld.Columns["ITEM"];
            PrimaryKeys71[2] = dtDisAssistMainOld.Columns["PERIOD"];
            PrimaryKeys71[3] = dtDisAssistMainOld.Columns["ASSIST_CODE"];
            dtDisAssistMainOld.PrimaryKey = PrimaryKeys71;

            DataColumn[] PrimaryKeys72 = new DataColumn[4];
            PrimaryKeys72[0] = dtDisAssistMain.Columns["DIS_NO"];
            PrimaryKeys72[1] = dtDisAssistMain.Columns["ITEM"];
            PrimaryKeys72[2] = dtDisAssistMain.Columns["PERIOD"];
            PrimaryKeys72[3] = dtDisAssistMain.Columns["ASSIST_CODE"];
            dtDisAssistMain.PrimaryKey = PrimaryKeys72;

            //20090818 added
            dtDisAssistDetlAll = BCO7.QueryDisAssistDetlWithoutChan(ParameterList1);
            #endregion

            #region DIS_REC
            ALOModel.MaintainDisTmpRec BCO8 = new ALOModel.MaintainDisTmpRec(ConnectionDB);
            ParameterList1.Clear();
            ParameterList1.Add(s_ID_DisRec);
            dtDisTmpRecOld = BCO8.QueryById(ParameterList1);
            dtDisTmpRec = dtDisTmpRecOld.Copy();

            DataColumn[] PrimaryKeys81 = new DataColumn[2];
            PrimaryKeys81[0] = dtDisTmpRecOld.Columns["ID"];
            PrimaryKeys81[1] = dtDisTmpRecOld.Columns["CODE"];
            dtDisTmpRecOld.PrimaryKey = PrimaryKeys81;

            DataColumn[] PrimaryKeys82 = new DataColumn[2];
            PrimaryKeys82[0] = dtDisTmpRec.Columns["ID"];
            PrimaryKeys82[1] = dtDisTmpRec.Columns["CODE"];
            dtDisTmpRec.PrimaryKey = PrimaryKeys82;
            #endregion

            #endregion
        }
        catch (Exception ex)
        {
            ErrorMsgLabel.Text = ex.Message;
        }
        #endregion
    }
コード例 #6
0
ファイル: ALO131.aspx.cs プロジェクト: ChiangHanLung/PIC_VDS
    protected void SmartGridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        #region
        try
        {
            string strCmdName = e.CommandName.ToString().Trim();
            Int32 iRowIndex;
            if (!Int32.TryParse(e.CommandArgument.ToString(), out iRowIndex))
            {
                iRowIndex = -1;
            }

            Label lbl_DIS_NO = null, lbl_ITEM = null, lbl_PERIOD = null, lbl_ID = null;

            if (iRowIndex != -1 && SmartGridView1.Rows.Count>0)
            {
                lbl_ID = (Label)SmartGridView1.Rows[iRowIndex].FindControl("lbl_ID");
                lbl_DIS_NO = (Label)SmartGridView1.Rows[iRowIndex].FindControl("lbl_DIS_NO");
                lbl_ITEM = (Label)SmartGridView1.Rows[iRowIndex].FindControl("lbl_ITEM");
                lbl_PERIOD = (Label)SmartGridView1.Rows[iRowIndex].FindControl("lbl_PERIOD");

                s_ID = lbl_ID.Text;
                s_DISNO = lbl_DIS_NO.Text;
                s_ITEM = lbl_ITEM.Text;
                s_PERIOD = lbl_PERIOD.Text;
            }

            if (strCmdName == "View")
            {
                #region

                CurrentPageMode = PageCurrentMode.Readonly;
                currentGvMode = CurrentGridviewMode.ReadOnly;

                SetUIDataFromGridView(iRowIndex);

                ALOModel.MaintainDisItemRefer BCO = new ALOModel.MaintainDisItemRefer(ConnectionDB);

                ArrayList ParameterList = new ArrayList();
                ParameterList.Clear();
                ParameterList.Add(s_DISNO);
                ParameterList.Add(s_ITEM);
                ParameterList.Add(s_PERIOD);

                DataTable dt = BCO.QueryDisItemReferFor111(ParameterList);

                if (dt != null && dt.Rows.Count > 0)
                {
                    gv_ItemRefer.DataSource = dt;
                    gv_ItemRefer.DataBind();
                }


                btn_AddNewRef.Enabled = false;
                SwitchSaveCancelButton(true);

                #endregion
            }
            else if (strCmdName == "Set")
            {
                #region

                Response.Redirect(string.Format("ALO132.aspx?Code=ALO13&ID={0}&DIS_NO={1}&ITEM={2}&PERIOD={3}&DIS_DATE={4}&ST_ACCEPT_DATE={5}&PATTERN={6}&PageTimeStamp={7}&UserID={8}",
                   s_ID, s_DISNO, s_ITEM, s_PERIOD, SLP_SLPDate1.Text.Trim(), SLP_SLPDate2.Text.Trim(), s_PATTERN, PageTimeStamp.Value, Session["UID"].ToString()));

                #endregion
            }
            else if (strCmdName == "Modify")
            {
                #region
                //20090806 marked
                //Response.Redirect(string.Format("ALO121.aspx?Code=ALO12&DIS_NO={0}", s_DISNO));
                #endregion
            }

        }
        catch (Exception ex)
        {
            ErrorMsgLabel.Text = ex.Message;
        }
        #endregion
    }
コード例 #7
0
ファイル: ALO111.aspx.cs プロジェクト: ChiangHanLung/PIC_VDS
    /// <summary>
    /// 參照商品資料連結
    /// </summary>
    private void ALORefItemBind()
    {
        ALOModel.MaintainDisItemRefer bco = new ALOModel.MaintainDisItemRefer(ConnectionDB);

        #region 輸入變數
        ArrayList ParameterList = new ArrayList();
        ParameterList.Clear();
        ParameterList.Add(DISNOTxt.Text);
        ParameterList.Add(SLP_SKU1.Text);
        ParameterList.Add(SLP_ItemPeriod1.Text);

        #endregion

        DataTable Dt = bco.QueryDisItemReferFor111(ParameterList);

        #region 將空白的資料做處理

        for (int i = 0; i < Dt.Rows.Count; i++)
        {
            for (int j = 0; j < Dt.Columns.Count; j++)
            {
                if (Dt.Columns[j].DataType == typeof(System.String))
                {
                    if (Dt.Rows[i][j].GetType() == typeof(System.DBNull))
                    {
                        Dt.Rows[i][j] = "";
                    }
                }

                if (Dt.Columns[j].DataType == typeof(System.Decimal))
                {
                    if (Dt.Rows[i][j].GetType() == typeof(System.DBNull))
                    {
                        Dt.Rows[i][j] = 0;
                    }
                }
            }
        }

        #endregion

        #region 使用XML放置到前端資料

        XML_RefItemList.InnerHtml = (Dt.Rows.Count > 0) ? Dt.DataSet.GetXml() : "";

        #endregion

        GridView_RefItemList.DataSource = Dt;
        GridView_RefItemList.DataBind();


        RefItemListCountHidden.Value = Dt.Rows.Count.ToString();
    }