Пример #1
0
        public bool UpdateItemAndChanRefer(DataTable dtDisItemReferDiff, DataTable dtDisItemReferAdd, DataTable dtDisItemReferDelete,
            DataTable dtDisChanOld, DataTable dtDisChanNew, DataTable dtDisItemReferNew, string vItem, string vPeriod, DbTransaction RootDBT)
        {
            bool bResult = false;
            bool IsRootTranscation = false;

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

                #region 啟動交易或指定RootTranscation

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

                #endregion

                MaintainDisChanRefer BCODisChanRefer = new MaintainDisChanRefer(ConnectionDB);
                DataTable dtAvailableChan = null;
                ArrayList ParameterList = new ArrayList();
                ArrayList ParameterList2 = new ArrayList();

                //  處理刪除:dtDel
                if (dtDisItemReferDelete != null && dtDisItemReferDelete.Rows.Count > 0)
                {
                    #region
                    foreach (DataRow dr in dtDisItemReferDelete.Rows)
                    {
                        //a)呼叫MaintainDisItemRefer.DeleteDisItemRefer();
                        ParameterList.Clear();
                        ParameterList.Add(dr["ID"]);
                        ParameterList.Add(dr["DIS_NO"]);
                        ParameterList.Add(dr["ITEM"]);
                        ParameterList.Add(dr["PERIOD"]);
                        ParameterList.Add(dr["RITEM"]);
                        ParameterList.Add(dr["RPERIOD"]);
                        ParameterList.Add(dr["REFER_RATE"]);
                        ParameterList.Add(dr["UPDATEDATE"]);
                        ParameterList.Add(dr["UPDATEUID"]);
                        bResult = DeleteDisItemRefer(ParameterList, DBT);

                        //b)呼叫MaintainDisChanRefer.DeleteChanReferByReferItem();
                        if (dtDisChanOld != null)
                        {
                            foreach (DataRow dr2 in dtDisChanOld.Rows)
                            {
                                ParameterList2.Clear();
                                ParameterList2.Add(dr2["ID"]);//此處傳的ID無法使用,因為傳的是VDS_ALO_DIS_CHAN的,需要的是VDS_ALO_DIS_CHAN_REFER
                                ParameterList2.Add(dr["DIS_NO"]);
                                ParameterList2.Add(dr["ITEM"]);
                                ParameterList2.Add(dr2["CHAN_NO"]);
                                ParameterList2.Add(dr["PERIOD"]);
                                ParameterList2.Add(dr["RITEM"]);
                                ParameterList2.Add(dr["RPERIOD"]);
                                ParameterList2.Add(dr["REFER_RATE"]);
                                ParameterList2.Add(dr2["UPDATEDATE"]);
                                ParameterList2.Add(dr2["UPDATEUID"]);
                                bResult = BCODisChanRefer.DeleteChanReferByReferItem(ParameterList2, DBT);
                            }
                        }

                    }
                    #endregion
                }

                //  處理新增:dtAdd
                if (dtDisItemReferAdd != null && dtDisItemReferAdd.Rows.Count > 0)
                {
                    #region
                    if (dtDisChanNew == null || dtDisChanNew.Rows.Count <= 0)
                    {
                        MaintainDisRecord BCODisRecord = new MaintainDisRecord(ConnectionDB);
                        ParameterList.Clear();
                        ParameterList.Add(vItem);
                        ParameterList.Add(vPeriod);
                        dtAvailableChan = BCODisRecord.QueryForSelectDisChan(ParameterList);
                    }
                    else
                    {
                        dtAvailableChan = dtDisChanNew;
                    }

                    for (Int32 i = 0; i <= dtDisItemReferAdd.Rows.Count - 1; i++)
                    {
                        //20090804 added:先刪除
                        ParameterList.Clear();
                        ParameterList.Add(dtDisItemReferAdd.Rows[i]["DIS_NO"]);
                        ParameterList.Add(dtDisItemReferAdd.Rows[i]["ITEM"]);
                        ParameterList.Add(dtDisItemReferAdd.Rows[i]["PERIOD"]);
                        bResult = BCODisChanRefer.DeleteOldChanRefer(ParameterList, DBT);
                        break;
                    }


                    for (Int32 i = 0; i <= dtDisItemReferAdd.Rows.Count - 1; i++)
                    {
                        //1.逐筆建立商品參照檔資訊
                        ParameterList.Clear();
                        ParameterList.Add(dtDisItemReferAdd.Rows[i]["DIS_NO"]);
                        ParameterList.Add(dtDisItemReferAdd.Rows[i]["ITEM"]);
                        ParameterList.Add(dtDisItemReferAdd.Rows[i]["PERIOD"]);
                        ParameterList.Add(dtDisItemReferAdd.Rows[i]["RITEM"]);
                        ParameterList.Add(dtDisItemReferAdd.Rows[i]["RPERIOD"]);
                        ParameterList.Add(dtDisItemReferAdd.Rows[i]["REFER_RATE"]);
                        ParameterList.Add(dtDisItemReferAdd.Rows[i]["CREATEDATE"]);
                        ParameterList.Add(dtDisItemReferAdd.Rows[i]["CREATEUID"]);

                        bResult = CreateDisItemReferFor111(ParameterList, DBT);
                    }

                    for (Int32 i = 0; i <= dtDisItemReferNew.Rows.Count - 1; i++)//因為在此之前會做全部刪除的動作,但dtDisItemReferAdd不會記錄未變更的筆數,所以傳入dtDisItemReferNew
                    {
                        //2.建立品項通路參照資訊
                        for (Int32 k = 0; k <= dtAvailableChan.Rows.Count - 1; k++)
                        {
                            ParameterList2.Clear();
                            ParameterList2.Add(dtDisItemReferNew.Rows[i]["DIS_NO"]);
                            ParameterList2.Add(dtDisItemReferNew.Rows[i]["ITEM"]);
                            ParameterList2.Add(dtDisItemReferNew.Rows[i]["PERIOD"]);
                            ParameterList2.Add(dtAvailableChan.Rows[k]["CHAN_NO"]);
                            ParameterList2.Add(dtDisItemReferNew.Rows[i]["RITEM"]);
                            ParameterList2.Add(dtDisItemReferNew.Rows[i]["RPERIOD"]);
                            ParameterList2.Add(dtDisItemReferNew.Rows[i]["REFER_RATE"]);
                            ParameterList2.Add(dtDisItemReferNew.Rows[i]["CREATEDATE"]);
                            ParameterList2.Add(dtDisItemReferNew.Rows[i]["CREATEUID"]);

                            bResult = BCODisChanRefer.CreateDisChanRefer(ParameterList2, DBT);
                        }
                    }
                    #endregion
                }

                //  處理更新:dtUpdate
                if (dtDisItemReferDiff != null && dtDisItemReferDiff.Rows.Count > 0)
                {
                    #region
                    foreach (DataRow dr in dtDisItemReferDiff.Rows)
                    {
                        //1.逐筆更新商品參照檔資訊
                        ParameterList.Clear();

                        //old
                        ParameterList.Add(dr["DIS_NO"]);
                        ParameterList.Add(dr["ITEM"]);
                        ParameterList.Add(dr["PERIOD"]);
                        ParameterList.Add(dr["RITEM"]);
                        ParameterList.Add(dr["RPERIOD"]);
                        //new
                        ParameterList.Add(dr["DIS_NO"]);
                        ParameterList.Add(dr["ITEM"]);
                        ParameterList.Add(dr["PERIOD"]);
                        ParameterList.Add(dr["RITEM"]);
                        ParameterList.Add(dr["RPERIOD"]);
                        ParameterList.Add(dr["REFER_RATE"]);
                        ParameterList.Add(dr["UPDATEDATE"]);
                        ParameterList.Add(dr["UPDATEUID"]);

                        bResult = UpdateDisItemReferFor111_2(ParameterList, DBT);

                        if (dtDisChanNew == null || dtDisChanNew.Rows.Count <= 0)
                        {
                            MaintainDisRecord BCODisRecord = new MaintainDisRecord(ConnectionDB);
                            ParameterList.Clear();
                            ParameterList.Add(vItem);
                            ParameterList.Add(vPeriod);
                            dtAvailableChan = BCODisRecord.QueryForSelectDisChan(ParameterList);
                        }
                        else
                        {
                            dtAvailableChan = dtDisChanNew;
                        }

                        for (Int32 k = 0; k <= dtAvailableChan.Rows.Count - 1; k++)
                        {
                            //2.更新品項通路參照資訊
                            ParameterList2.Clear();
                            //old                            
                            ParameterList2.Add(dr["DIS_NO"]);
                            ParameterList2.Add(dr["ITEM"]);
                            ParameterList2.Add(dr["PERIOD"]);
                            ParameterList2.Add(dtAvailableChan.Rows[k]["CHAN_NO"]);
                            ParameterList2.Add(dr["RITEM"]);
                            ParameterList2.Add(dr["RPERIOD"]);
                            //new
                            ParameterList2.Add(dr["DIS_NO"]);
                            ParameterList2.Add(dr["ITEM"]);
                            ParameterList2.Add(dr["PERIOD"]);
                            ParameterList2.Add(dtAvailableChan.Rows[k]["CHAN_NO"]);
                            ParameterList2.Add(dr["RITEM"]);
                            ParameterList2.Add(dr["RPERIOD"]);
                            ParameterList2.Add(dr["REFER_RATE"]);
                            ParameterList2.Add(dr["UPDATEDATE"]);
                            ParameterList2.Add(dr["UPDATEUID"]);
                            bResult = BCODisChanRefer.UpdateDisChanRefer2(ParameterList2, DBT);
                        }

                    }
                    #endregion
                }


                #region 交易成功

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

                bResult = true;
                #endregion
            }
            catch (Exception ex)
            {
                #region 交易失敗

                bResult = false;

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

                #endregion

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

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

                #endregion

            }

            return bResult;
        }
    private void GetDisChan()
    {
        #region
        ALOModel.MaintainDisRecord BCO = new ALOModel.MaintainDisRecord(ConnectionDB);
        ArrayList ParameterList = new ArrayList();//20091113
        ParameterList.Clear();
        ParameterList.Add(ITEM);
        ParameterList.Add(PERIOD);
        dtForDisChan = BCO.QueryForSelectDisChan(ParameterList);
        gv_Result.DataSource = dtForDisChan;
        gv_Result.DataBind();

        #endregion
    }
Пример #3
0
        public bool CreateItemAndChanRefer(DataTable dtDisItemRefer, DataTable dtDisChan, string vDisNo, string vItem, string vPeriod, DbTransaction RootDBT)
        {
            #region
            bool bResult = false;
            bool IsRootTranscation = false;

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


                #region 啟動交易或指定RootTranscation

                if (IsRootTranscation)
                {
                    //獨立呼叫啟動Transcation
                    Conn = USEDB.CreateConnection();
                    Conn.Open();
                    DBT = Conn.BeginTransaction();
                    System.Web.HttpContext.Current.Trace.Warn(string.Format("使用者:{0} 於{1}.CreateItemAndChanRefer.Open Connetction:{2} ",
                                                                     System.Web.HttpContext.Current.Session["UID"].ToString(),
                                                                      DateTime.Now.ToString(),
                                                                      DBT.GetHashCode().ToString())
                                                              );

                }
                else
                {
                    DBT = RootDBT;
                    System.Web.HttpContext.Current.Trace.Warn(string.Format("使用者:{0} 於{1}.CreateItemAndChanRefer.Used Old Connetction:{2} ",
                                                                     System.Web.HttpContext.Current.Session["UID"].ToString(),
                                                                      DateTime.Now.ToString(),
                                                                      DBT.GetHashCode().ToString())
                                                              );

                }

                #endregion

                DataTable dtAvailableChan = null;
                ArrayList ParameterList = new ArrayList();
                ArrayList ParameterList2 = new ArrayList();


                //4.1) 檢查目前配本通路暫存檔是否有值,無值則選擇所有可配通路 
                if (dtDisChan == null || dtDisChan.Rows.Count <= 0)
                {
                    MaintainDisRecord BCODisRecord = new MaintainDisRecord(ConnectionDB);
                    ParameterList.Clear();
                    ParameterList.Add(vItem);
                    ParameterList.Add(vPeriod);
                    dtAvailableChan = BCODisRecord.QueryForSelectDisChan(ParameterList);
                }
                else
                {
                    dtAvailableChan = dtDisChan;
                }

                //4.2) 處理新增

                if (dtDisItemRefer != null && dtDisItemRefer.Rows.Count > 0)
                {
                    MaintainDisChanRefer BCODisChanRefer = new MaintainDisChanRefer(ConnectionDB);


                    for (Int32 i = 0; i <= dtDisItemRefer.Rows.Count - 1; i++)
                    {
                        //1.逐筆建立商品參照檔資訊
                        ParameterList.Clear();
                        ParameterList.Add(vDisNo);
                        ParameterList.Add(vItem);
                        ParameterList.Add(vPeriod);
                        ParameterList.Add(dtDisItemRefer.Rows[i]["RITEM"]);
                        ParameterList.Add(dtDisItemRefer.Rows[i]["RPERIOD"]);
                        ParameterList.Add(dtDisItemRefer.Rows[i]["REFER_RATE"]);
                        ParameterList.Add(dtDisItemRefer.Rows[i]["CREATEDATE"]);
                        ParameterList.Add(dtDisItemRefer.Rows[i]["CREATEUID"]);

                        bResult = CreateDisItemReferFor111(ParameterList, DBT);

                        //2.建立品項通路參照資訊

                        for (Int32 k = 0; k <= dtAvailableChan.Rows.Count - 1; k++)
                        {

                            ParameterList2.Clear();
                            ParameterList2.Add(vDisNo);
                            ParameterList2.Add(vItem);
                            ParameterList2.Add(vPeriod);
                            ParameterList2.Add(dtAvailableChan.Rows[k]["CHAN_NO"]);
                            ParameterList2.Add(dtDisItemRefer.Rows[i]["RITEM"]);
                            ParameterList2.Add(dtDisItemRefer.Rows[i]["RPERIOD"]);
                            ParameterList2.Add(dtDisItemRefer.Rows[i]["REFER_RATE"]);
                            ParameterList2.Add(dtDisItemRefer.Rows[i]["CREATEDATE"]);
                            ParameterList2.Add(dtDisItemRefer.Rows[i]["CREATEUID"]);

                            bResult = BCODisChanRefer.CreateDisChanRefer(ParameterList2, DBT);
                        }
                    }
                }

                #region 交易成功

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

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

                bResult = false;

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

                #endregion

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

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

                #endregion

            }

            return bResult;
            #endregion
        }
Пример #4
0
    private void SetDisChan(string strItem, string strPeriod, string strStAcceptDate, string strDisType, string strUserId, DateTime ProcessingDateTime)
    {
        #region
        DataTable dtTmp = dtDisChan;
        #region

        if (CurrentPageMode == PageCurrentMode.Insert)
        {
            DataRow dr = null;
            dtTmp.Clear();
            ALOModel.MaintainDisRecord BCO = new ALOModel.MaintainDisRecord(ConnectionDB);

            ArrayList ParameterList = new ArrayList();
            ParameterList.Clear();
            ParameterList.Add(strItem);
            ParameterList.Add(strPeriod);
            DataTable dt2 = BCO.QueryForSelectDisChan(ParameterList);

            if (dt2 != null && dt2.Rows.Count > 0)
            {
                foreach (DataRow dr2 in dt2.Rows)
                {
                    dr = dtTmp.NewRow();
                    dr["CHAN_NO"] = dr2["CHAN_NO"];
                    dr["ITEM"] = strItem;
                    dr["PERIOD"] = strPeriod;
                    dr["ROOT_NO"] = s_ROOT_NO;
                    dr["PATTERN_NO"] = s_PATTERN;
                    dr["DIS_TYPE"] = strDisType;
                    dr["CREATEDATE"] = ProcessingDateTime;
                    dr["CREATEUID"] = strUserId;
                    dr["ST_ACCEPT_DATE"] = strStAcceptDate;

                    dtTmp.Rows.Add(dr);
                }
            }
        }
        else if (CurrentPageMode == PageCurrentMode.Edit)
        {
            foreach (DataRow dr3 in dtTmp.Rows)
            {
                dr3["DIS_TYPE"] = strDisType;
                dr3["UPDATEDATE"] = ProcessingDateTime;
                dr3["UPDATEUID"] = strUserId;
            }
        }

        #endregion

        dtDisChan = dtTmp;


        #endregion
    }