Example #1
0
    /// <summary>
    /// 期別
    /// </summary>
    /// <param name="strChan"></param>
    /// <param name="strStore"></param>
    /// <param name="strItem"></param>
    /// <param name="strPeriod"></param>
    /// <param name="strBarcode"></param>
    /// <param name="strPeriodBarcode"></param>
    /// <param name="strRtnDdl"></param>
    /// <param name="strID"></param>
    /// <param name="strCode"></param>
    /// <param name="strUserID"></param>
    /// <param name="strPageTimeStamp"></param>
    /// <returns></returns>
    private string GetValueByPageMethod_PERIOD(string strChan, string strStore, string strItem, string strPeriod, string strBarcode, string strPeriodBarcode, string strRtnDdl, string strID, string strCode, string strUserID, string strPageTimeStamp)
    {
        #region

        string strRtn = "", strTemp1 = "", strTemp2 = "", strTemp3 = "", strTemp4 = "";

        try
        {
            //期別或品號有異動時,重取庫存
            if (Session[string.Format("CRM041_s_ITEM_{0}", strPageTimeStamp)].ToString() != strItem || Session[string.Format("CRM041_s_PERIOD_{0}", strPageTimeStamp)].ToString() != strPeriod)
            {
                Session[string.Format("CRM041_dtStock_{0}", strPageTimeStamp)] = null;
            }

            //s_CHAN_NO
            //s_STORE
            //s_ITEM
            //s_PERIOD
            Session[string.Format("CRM041_s_CHAN_NO_{0}", strPageTimeStamp)] = strChan;//通路
            Session[string.Format("CRM041_s_STORE_{0}", strPageTimeStamp)] = strStore;//門市
            Session[string.Format("CRM041_s_ITEM_{0}", strPageTimeStamp)] = strItem;//品號
            Session[string.Format("CRM041_s_PERIOD_{0}", strPageTimeStamp)] = strPeriod;//期別

            #region CHECK-1:檢查書店是否有未結案同品項訂單


            if (strID == string.Empty)
            {
                #region 從資料庫查詢資料
                ArrayList ParameterList = new ArrayList();

                ParameterList.Clear();
                ParameterList.Add(strChan);//通路
                ParameterList.Add(strStore);//門市
                ParameterList.Add(strItem);//品號
                ParameterList.Add(strPeriod);//期別
                ParameterList.Add(strUserID);
                ParameterList.Add(strCode);//訂單單號

                DataTable dt_Return_1 = new DataTable();
                BCO_CRM.RecordCRMOrder BCO1 = new BCO_CRM.RecordCRMOrder(ConntionDB);
                dt_Return_1 = BCO1.CheckOrderItemExist(ParameterList);
                BCO1.CloseConnection();
                System.Text.StringBuilder sb = new System.Text.StringBuilder();

                #endregion

                if (dt_Return_1.Rows.Count > 0)
                {
                    strTemp1 = string.Format("該門市已存在未結案之同品項訂單於訂單標號:[{0}],不可新增", dt_Return_1.Rows[0]["CRM_REQUEST_NO"].ToString());
                }
            }

            #endregion

            if (strTemp1 == "")
            {
                #region CHECK-2:檢查牌價是否已經正確建立

                ParameterList.Clear();
                ParameterList.Add(strStore);//門市
                ParameterList.Add(strItem);//品號
                ParameterList.Add(strPeriod);//期別
                ParameterList.Add(DateTime.Now.ToString("yyyy/MM/dd")); // 系統日
                ParameterList.Add(strUserID);
                BCO_ALO.ProcessALOCommon BCO2 = new BCO_ALO.ProcessALOCommon(ConntionDB);
                string sRes = BCO2.CheckStAcceptDisPrice(ParameterList);
                BCO2.CloseConnection();

                if (sRes != string.Empty)
                {
                    strTemp2 = string.Format("期別:[{0}],牌價未生效[{1}],不可新增", strPeriod, sRes);
                }

                #endregion

                if (strTemp2 == "")
                {
                    #region CHECK-3:設定二段碼、退書截止日與逾期客訂

                    string s_down_BARCODE = string.Empty;//一段碼
                    string s_down_PERIOD_BARCODE = string.Empty;//二段碼
                    string s_down_RTN_DDL = string.Empty;//退書截止日

                    s_down_BARCODE = strBarcode;
                    s_down_PERIOD_BARCODE = strPeriodBarcode;
                    s_down_RTN_DDL = strRtnDdl;

                    // 不管原來有沒有值,只要品號改變,都重新查詢
                    ParameterList.Clear();
                    ParameterList.Add(strChan);//通路
                    ParameterList.Add(strItem);//品號
                    ParameterList.Add(strPeriod);//期別
                    ParameterList.Add(strUserID);

                    DataTable dt_Return_2 = new DataTable();
                    BCO_CRM.QueryCRMCommon BCO3 = new BCO_CRM.QueryCRMCommon(ConntionDB);
                    dt_Return_2 = BCO3.QueryItemPeriodInfo(ParameterList);
                    BCO3.CloseConnection();

                    if (dt_Return_2.Rows.Count > 0)//有找到資料
                    {
                        s_down_BARCODE = dt_Return_2.Rows[0]["BARCODE"].ToString();
                        s_down_PERIOD_BARCODE = dt_Return_2.Rows[0]["PERIOD_BARCODE"].ToString();
                        s_down_RTN_DDL = DateTime.Parse(dt_Return_2.Rows[0]["RTN_DDL"].ToString()).ToString("yyyy/MM/dd");
                    }
                    else//查無資料
                    {
                        strTemp3 = string.Format("查無[一段碼][二段碼][退書截止日],無法新增");
                    }

                    #endregion

                    if (strTemp3 == "")
                    {
                        #region CHECK-4:逾期客訂確認

                        TimeSpan time = new TimeSpan(11, 00, 00);
                        bool b_down_IS_OVERDUE = false;
                        //20140515 家容提出移除逾期判斷
                        //DateTime d_Now;
                        //DateTime d_RTN_DDL;

                        //d_Now = DateTime.Now;
                        //d_RTN_DDL = DateTime.Parse(s_down_RTN_DDL);

                        //if (d_Now.DayOfWeek == DayOfWeek.Saturday || d_Now.DayOfWeek == DayOfWeek.Sunday ||
                        //    (d_Now.DayOfWeek == DayOfWeek.Friday && d_Now.TimeOfDay.CompareTo(time) >= 0))
                        //{
                        //    if (d_RTN_DDL.AddDays(-5).ToString("yyyy/MM/dd").CompareTo(d_Now.ToString("yyyy/MM/dd")) <= 0)
                        //    {
                        //        b_down_IS_OVERDUE = true;
                        //        b_IS_OVERDUE = true;
                        //    }
                        //}
                        //else
                        //{
                        //    if (d_RTN_DDL.AddDays(-2).ToString("yyyy/MM/dd").CompareTo(d_Now.ToString("yyyy/MM/dd")) <= 0)
                        //    {
                        //        b_down_IS_OVERDUE = true;
                        //        b_IS_OVERDUE = true;
                        //    }
                        //}

                        //[@逾期客訂].檢查結果為True時,顯示Confirm訊息『商品已逾期,不可退貨,確定要新增?』
                        //使用者確認要新增時,可繼續編輯。
                        //使用者選擇不新增時,取消本筆明細新增。

                        if (b_down_IS_OVERDUE == true)
                        {

                            strTemp4 = string.Format("TRUE-{0}-{1}-{2}-{3}-{4}-{5}",
                                Session[string.Format("CRM041_s_ROOT_NO_{0}", strPageTimeStamp)].ToString(), strItem, strPeriod, s_down_BARCODE, s_down_PERIOD_BARCODE, s_down_RTN_DDL);
                        }
                        else
                        {
                            strTemp4 = string.Format("FALSE-{0}-{1}-{2}-{3}-{4}-{5}",
                                Session[string.Format("CRM041_s_ROOT_NO_{0}", strPageTimeStamp)].ToString(), strItem, strPeriod, s_down_BARCODE, s_down_PERIOD_BARCODE, s_down_RTN_DDL);
                        }

                        #endregion

                        if (strTemp4.IndexOf("FALSE") != -1)
                        {
                            #region 取得庫存資訊

                            GetStockByPageMethod(Session[string.Format("CRM041_s_ROOT_NO_{0}", strPageTimeStamp)].ToString(), strItem, strPeriod, strUserID, strPageTimeStamp);

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

        return strRtn = string.Format("{0};{1};{2};{3}", strTemp1, strTemp2, strTemp3, strTemp4);
        #endregion
    }