예제 #1
0
    /// <summary>
    /// DOWN BUTTON 更新鈕
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void but_down_Update_Click(object sender, EventArgs e)
    {

        try
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            TextBox txt_down_ITEM = (TextBox)((ASP.itm_slp_slp_sku_ascx)slp_down_ITEM).FindControl("TextBoxCode");//品號
            TextBox txt_down_ITEM_NAME = (TextBox)((ASP.itm_slp_slp_sku_ascx)slp_down_ITEM).FindControl("TextBoxName");//品名
            TextBox txt_down_REQUEST_QTY = (TextBox)((ASP.wui_slp_slp_slpquantity_ascx)slp_down_REQUEST_QTY).FindControl("TextBoxCode");//訂貨量
            TextBox txt_down_REQUEST_QTY_NAME = (TextBox)((ASP.wui_slp_slp_slpquantity_ascx)slp_down_REQUEST_QTY).FindControl("TextBoxName");//訂貨量名稱
            TextBox txt_down_RTN_DDL = (TextBox)((ASP.wui_slp_slp_slpdate_ascx)slp_down_RTN_DDL).FindControl("TextBoxCode");//退書截止日
            CheckBox chk_down_IS_OVERDUE = (CheckBox)((ASP.wui_slp_slp_boolean_ascx)slp_down_IS_OVERDUE).FindControl("C1");//逾期客訂
            //string SessionIDName = "CRM041_dt_Detail" + PageTimeStamp.Value;
            //if (Session[SessionIDName] != null) dt_Detail = (DataTable)Session[SessionIDName];
            if (this.hid_PageStatus.Value == "INSERT" ||
                this.hid_PageStatus.Value == "EDIT")
            {
                s_PMA = string.Empty;
                s_ROOT_NO = string.Empty;
                string s_Is_PO = string.Empty;

                sb.Remove(0, sb.Length);
                DataTable dt_Return = new DataTable();
                ArrayList ParameterList = new ArrayList();//20091117

                #region 依照品號取得所屬[群分類]、[大分類]

                ParameterList.Clear();
                BCO_ITM.SQLHelper.SQLWhere(ref ParameterList, DbType.String, "MA.ITEM", this.slp_down_ITEM.Text, "=", "and");

                BCO_ITM.MaintainSKU bco_itm = new BCO_ITM.MaintainSKU(ConntionDB);
                dt_Return = bco_itm.QuerySKUByFind_1(ParameterList);

                if (dt_Return != null && dt_Return.Rows.Count != 0)
                {
                    s_PMA = dt_Return.Rows[0]["PMA"].ToString();//大分類

                    s_ROOT_NO = dt_Return.Rows[0]["ROOT_NO"].ToString();//群分類

                }

                #endregion

                #region 判斷PO單號
                //確定PO單號存在
                GetChainPOSetting(this.slp_up_CHAN_NO.Text, this.slp_up_STORE.Text);
                DataView dvChainPOSetting = new DataView(dtChainPOSetting.Copy());
                dvChainPOSetting.RowFilter = "PMA = '" + s_PMA + "' and ROOT_NO = '" + s_ROOT_NO + "'";
                if (dvChainPOSetting.Count > 0)
                {
                    if (dvChainPOSetting[0]["IS_DIS_BYPO"].ToString() == "1")//代表是依PO分單
                    { s_Is_PO = "TRUE"; }
                    else if (dvChainPOSetting[0]["IS_DIS_BYPO"].ToString() == "0")//代表不是依PO分單
                    { s_Is_PO = "FALSE"; }
                    // 2009-08-12 cyhsu add
                    if (this.slp_up_CHAN_NO.Text == "CB" && s_ROOT_NO == "1")
                    {
                        //當通路=誠品, 群分類=雜誌時,不管通路設定檔設定為何,都先規定要輸入PO單號
                        s_Is_PO = "TRUE";
                    }
                }

                //s_Is_PO = TRUE 代表是依PO分單>>[PO單號]欄位一定要填
                //s_Is_PO = FALSE 代表不是依PO分單>>[PO單號]欄位一定不能填
                //s_Is_PO = NULL 代表是依PO分單>>[PO單號]欄位可填可不填

                if (s_Is_PO == "TRUE")
                {
                    if (this.txt_down_PO_SOURCE_NO.Text.ToString().Length == 0)
                    //if (this.txt_down_PO_SOURCE_NO.Text.Trim() == string.Empty)
                    { sb.Append("PO單號不可空白"); }
                }
                else if (s_Is_PO == "FALSE")
                {
                    if (this.txt_down_PO_SOURCE_NO.Text.Trim() != string.Empty)
                    { sb.Append("PO單號不可有值"); }
                }

                if (GetStringLen(txt_down_PO_SOURCE_NO.Text.Trim()) > 20)
                { sb.Append("PO單號欄位輸入資料過長"); }

                if (sb.ToString() != string.Empty)
                {
                    ScriptManager.RegisterStartupScript(this.up_Down_Button, this.GetType(), "CRM041", "alert('" + sb.ToString() + "');document.all['" + this.txt_down_PO_SOURCE_NO.ClientID + "'].focus();", true);
                    return;
                }

                #endregion

                #region 判斷一段碼、二段碼是否屬於該品號、期別
                ParameterList.Clear();

                ParameterList.Add(this.slp_down_ITEM.Text); // ITEM
                ParameterList.Add(this.txt_down_PERIOD.Text);      // PERIOD
                ParameterList.Add(this.txt_down_BARCODE.Text); // 一段碼
                ParameterList.Add(this.txt_down_PERIOD_BARCODE.Text);      // 二段碼
                ParameterList.Add(Session["UID"].ToString());

                BCO.QueryCRMCommon co_common = new BCO.QueryCRMCommon(ConntionDB);
                bool b_CheckRes;
                b_CheckRes = co_common.CheckItemPeriodBarcode(ParameterList);
                if (!b_CheckRes)
                {
                    sb.Remove(0, sb.Length);
                    sb.AppendFormat("一段碼[{2}]、二段碼[{3}]不屬於品號[{0}]、期別[{1}]!",
                                    this.slp_down_ITEM.Text,
                                    this.txt_down_PERIOD.Text,
                                    this.txt_down_BARCODE.Text,
                                    this.txt_down_PERIOD_BARCODE.Text);
                }

                if (sb.ToString() != string.Empty)
                {
                    ScriptManager.RegisterStartupScript(this.up_Down_Button, this.GetType(), "CRM041", "alert('" + sb.ToString() + "');document.all['" + this.txt_down_PO_SOURCE_NO.ClientID + "'].focus();", true);
                    return;
                }

                #endregion

                #region 檢查是否可新增
                bool bCheck = CheckOrderDetail(this.slp_down_ITEM.Text, this.txt_down_PERIOD.Text);
                if (!bCheck && hid_ID.Value == string.Empty)
                {
                    sb.Remove(0, sb.Length);
                    sb.AppendFormat("品號[{0}]、期別[{1}]已存在,不可重複新增!", this.slp_down_ITEM.Text, this.txt_down_PERIOD.Text);
                }
                if (sb.ToString() != string.Empty)
                {
                    ScriptManager.RegisterStartupScript(this.up_Down_Button, this.GetType(), "CRM041", "alert('" + sb.ToString() + "');document.all['" + txt_down_ITEM.ClientID + "'].focus();", true);
                    return;
                }
                string sCheck = CheckCanUpdate(s_CHAN_NO, s_STORE,
                                               this.slp_down_ITEM.Text,
                                               this.txt_down_PERIOD.Text,
                                               txt_down_RTN_DDL.Text,
                                               this.txt_up_CODE.Text);

                if (sCheck != string.Empty)
                {
                    ScriptManager.RegisterStartupScript(this.up_Down_Button, this.GetType(), "CRM041", "alert('" + sCheck + "');document.all['" + txt_down_ITEM.ClientID + "'].focus();", true);
                    return;
                }

                #endregion


                // 為了解決頁面儲區空白的問題先暫時設定睡眠對應。
                for (int i = 0; i < 10; i++)
                {
                    if (this.txt_down_RECOMMAND_LOCATION.Text != String.Empty)
                    { break; }
                    System.Threading.Thread.Sleep(500);
                }

                #region 更新明細暫存資訊

                #region 新增狀態,若是第一筆資料,建立 TEMP TABLE

                if (this.hid_PageStatus.Value == "INSERT" && hid_ID.Value == string.Empty)
                {
                    if (dt_Detail == null)
                    {
                        DataTable dtTmp = new DataTable();
                        ParameterList.Clear();
                        ParameterList.Add(Session["UID"].ToString());

                        BCO.RecordCRMOrder bco = new BCO.RecordCRMOrder(ConntionDB);
                        dtTmp = bco.QUERY_CRM041_DETL_SCHEMA(ParameterList);

                        DataColumn dcol1 = new DataColumn("BARCODE", System.Type.GetType("System.String"));//一段碼
                        DataColumn dcol2 = new DataColumn("PERIOD_BARCODE", System.Type.GetType("System.String"));//二段碼
                        DataColumn dcol3 = new DataColumn("ITEM_NAME", System.Type.GetType("System.String"));//品名
                        DataColumn dcol4 = new DataColumn("COLUMN_STATUS", System.Type.GetType("System.String"));//欄位狀態

                        dtTmp.Columns.Add(dcol1);
                        dtTmp.Columns.Add(dcol2);
                        dtTmp.Columns.Add(dcol3);
                        dtTmp.Columns.Add(dcol4);

                        dt_Detail = dtTmp.Copy();
                        dtTmp.Dispose();
                    }
                }

                #endregion

                if ((this.hid_PageStatus.Value == "INSERT" || this.hid_PageStatus.Value == "EDIT") &&
                    this.hid_ID.Value == string.Empty)
                {
                    DataRow dRow = dt_Detail.NewRow();

                    if (dt_Detail.Rows.Count == 0)
                    { dRow["ID"] = 0; }
                    else
                    {
                        DataView dv_Detail = new DataView(dt_Detail.Copy());
                        dv_Detail.Sort = "ID ASC";
                        dRow["ID"] = int.Parse(dv_Detail[0]["ID"].ToString()) + 1;
                    }

                    dRow["ROOT_NO"] = s_ROOT_NO;//群分類
                    dRow["PMA"] = s_PMA;//大分類
                    dRow["PO_SOURCE_NO"] = this.txt_down_PO_SOURCE_NO.Text.Trim();//PO單號
                    dRow["BARCODE"] = this.txt_down_BARCODE.Text.Trim();//一段碼
                    dRow["PERIOD_BARCODE"] = this.txt_down_PERIOD_BARCODE.Text.Trim();//二段碼
                    dRow["ITEM"] = this.slp_down_ITEM.Text.Trim();//品號
                    dRow["ITEM_NAME"] = this.slp_down_ITEM.Name.Trim();//品名
                    //dRow["ITEM_NAME"] = ((TextBox)this.slp_down_ITEM.Controls[1].FindControl("TextBoxName")).Text.Trim();//品名
                    dRow["PERIOD"] = this.txt_down_PERIOD.Text.Trim();//期別
                    dRow["REQUEST_QTY"] = int.Parse(this.slp_down_REQUEST_QTY.Text.Trim());//訂貨量
                    dRow["RTN_DDL"] = DateTime.ParseExact(this.slp_down_RTN_DDL.Text.Trim(), "yyyy/MM/dd", null);//退書截止日
                    b_IS_OVERDUE = CheckIsOverDue(this.slp_down_RTN_DDL.Text.Trim());
                    if (b_IS_OVERDUE == true)
                    { dRow["IS_OVERDUE"] = 1; }//逾期客訂有被勾選
                    else
                    { dRow["IS_OVERDUE"] = 0; }//逾期客訂沒有被勾選
                    // todo cyhsu: 找外雜 Locate_type 與 locate_no 沒有設定的原因
                    if ((s_SRC_LOCATE_TYPE == String.Empty) && (s_ROOT_NO == "1") &&
                       ((s_PMA == "13") || (s_PMA == "14") || (s_PMA == "15") || (s_PMA == "16")))
                    {
                        s_SRC_LOCATE_TYPE = "2";
                        this.txt_down_RECOMMAND_LOCATION.Text = "D";
                    }

                    dRow["SRC_LOCATE_TYPE"] = s_SRC_LOCATE_TYPE;//建議儲區
                    dRow["SRC_LOCATE_NO"] = this.txt_down_RECOMMAND_LOCATION.Text.Trim();//建議儲區
                    dRow["PROC_DESC"] = 0;//處理狀態(0代表未擷轉)
                    dRow["STATUS"] = 25;//結案狀態(25代表未結案,75代表已結案)
                    dRow["DIS_ENABLE"] = int.Parse(this.hid_DIS_ENABLE.Value);//可配量

                    dt_Detail.Rows.Add(dRow);
                }
                else if ((this.hid_PageStatus.Value == "INSERT" || this.hid_PageStatus.Value == "EDIT") &&
                    this.hid_ID.Value != string.Empty)
                {
                    //2009-02-04 cyhsu change
                    DataTable dtTmp = dt_Detail.Copy();

                    //string s_FilterExpression = string.Empty;
                    //s_FilterExpression = "ID = " + this.hid_ID.Value;

                    //DataRow dRow = dt_Detail.Select(s_FilterExpression)[0];
                    //dRow["REQUEST_QTY"] = int.Parse(this.slp_down_REQUEST_QTY.Text.Trim());//訂貨量
                    //dRow["SRC_LOCATE_NO"] = this.txt_down_RECOMMAND_LOCATION.Text.Trim();//建議儲區
                    int i_index = -1;

                    for (int i = 0; i < dtTmp.Rows.Count; i++)
                    {
                        if (dtTmp.Rows[i]["ID"].ToString() == this.hid_ID.Value)
                        {
                            i_index = i;
                            break;
                        }
                    }
                    if (i_index > -1)
                    {
                        dt_Detail.Rows[i_index]["REQUEST_QTY"] = int.Parse(this.slp_down_REQUEST_QTY.Text.Trim());//訂貨量
                        dt_Detail.Rows[i_index]["SRC_LOCATE_NO"] = this.txt_down_RECOMMAND_LOCATION.Text.Trim();//建議儲區
                        dt_Detail.Rows[i_index]["PO_SOURCE_NO"] = this.txt_down_PO_SOURCE_NO.Text.Trim();//建議儲區;
                    }
                }

                this.gv_Detail.DataSource = dt_Detail;
                this.gv_Detail.PageSize = 10;
                this.gv_Detail.PageIndex = 0;
                this.gv_Detail.DataBind();
                Panel1.Height = gv_Detail.Rows.Count * 45 + 60;

                //Session[SessionIDName] = dt_Detail;

                #region 清空 hid_ID,hid_DIS_ENABLE

                //this.hid_ID.Value = string.Empty;是否不應清空?2009-06-04 cyhsu
                this.hid_DIS_ENABLE.Value = string.Empty;

                #endregion

                #region 清空靜態變數

                dtStock = null;//異動欄位[期別]
                s_PMA = string.Empty;//大分類(異動欄位[品號/品名])
                s_ROOT_NO = string.Empty;//群分類(異動欄位[品號/品名])
                s_SRC_LOCATE_TYPE = string.Empty;//建議儲區類別(異動欄位[訂貨量])

                #endregion

                #region 設定畫面狀態


                sb.Remove(0, sb.Length);
                sb.Append("新增或編輯模式按下明細區[更新]鈕<partition>");
                sb.Append(dt_Detail.Rows.Count.ToString() + "<partition>");//dt_Detail筆數
                sb.Append(this.panel_Middle.ClientID + "<partition>");//panel_Middle
                sb.Append(this.panel_Down_AddDetail.ClientID + "<partition>");//panel_Down_AddDetail
                sb.Append(this.panel_Down_Button.ClientID + "<partition>");//panel_Down_Button
                sb.Append(chk_down_IS_OVERDUE.ClientID + "<partition>");//逾期客訂
                sb.Append(this.txt_down_PO_SOURCE_NO.ClientID + "<partition>");//PO單號
                sb.Append(this.txt_down_BARCODE.ClientID + "<partition>");//一段碼
                sb.Append(this.txt_down_PERIOD_BARCODE.ClientID + "<partition>");//二段碼

                sb.Append(txt_down_ITEM.ClientID + "<partition>");//品號
                sb.Append(txt_down_ITEM_NAME.ClientID + "<partition>");//品名
                sb.Append(this.txt_down_PERIOD.ClientID + "<partition>");//期別
                sb.Append(txt_down_REQUEST_QTY.ClientID + "<partition>");//訂貨量

                sb.Append(txt_down_REQUEST_QTY_NAME.ClientID + "<partition>");//訂貨量名稱

                sb.Append(txt_down_RTN_DDL.ClientID + "<partition>");//退書截止日
                sb.Append(this.txt_down_RECOMMAND_LOCATION.ClientID);//建議儲區

                ScriptManager.RegisterStartupScript(this.up_Down_Button, this.GetType(), "CRM041", "but_down_Update_Click('" + sb.ToString() + "');", true);

                #endregion

                #endregion
            }
        }
        catch (Exception ex)
        {
            WaringLogProcess(ex.Message);
            this.ErrorMsgLabel.Text = ex.Message;
        }
        finally { }
    }