Beispiel #1
0
    private bool CheckPOSourceNO(string s_ChanNo, string s_Store, string s_StAcceptDate, string s_PoSourceNo, TextBox txt_POSourceNo, out string strErrMsg)
    {
        #region
        bool bResult = true;
        strErrMsg = "";
        try
        {
            DataTable dtTemp = dtStorePOSetting;
            ALOModel.MaintainChainPO BCO = new ALOModel.MaintainChainPO(ConnectionDB);
            ALOModel.QueryALOCommon BCO2 = new ALOModel.QueryALOCommon(ConnectionDB);
            ArrayList ParameterList1 = new ArrayList();

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

                for (Int32 i = 0; i <= dtTemp.Rows.Count - 1; i++)
                {
                    //1.根據[DI.群分類+大分類],由[dtStorePOSetting]過濾取得對應通路PO單號控制資訊。

                    if (s_ROOT_NO == dtTemp.Rows[i]["root_no"].ToString().Trim() && s_PMA == dtTemp.Rows[i]["pma"].ToString().Trim())
                    {
                        if (dtTemp.Rows[i]["is_dis_bypo"].ToString().Trim() == "0")
                        {
                            if (s_PoSourceNo != "")//2.若查詢之IS_DIS_BYPO=否,則PO單號必須為空白,清空PO單號,並顯示訊息提示使用者。
                            {
                                #region 不可輸入PO單號
                                strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時不可輸入通路單號。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA);
                                txt_POSourceNo.Text = "";
                                bResult = false;
                                break;
                                #endregion
                            }
                        }
                        else if (dtTemp.Rows[i]["is_dis_bypo"].ToString().Trim() == "1")
                        {
                            if (s_PoSourceNo == "")//3.若IS_DIS_BYPO=是 =>PO單號為必填欄位,檢查是否正確輸入。異常則顯示錯誤訊息,提示使用者。
                            {
                                #region PO單號為必填
                                strErrMsg = string.Format("『請輸入通路單號。』");
                                bResult = false;
                                break;
                                #endregion
                            }

                            #region old
                            //if (dtTemp.Rows[i]["is_multipo"].ToString().Trim() == "0")//4.若IS_DIS_BYPO=是,且IS_MULTIPO=否,=>檢查同品號/期別/門市進貨日/門市是否存在不同PO,若存在則顯示錯誤訊息,不允許更新。
                            //{
                            //    #region
                            //    if (bResult)
                            //    {
                            //        DataTable dtTempMD = dtDisStore;
                            //        for (Int32 k = 0; k <= dtTempMD.Rows.Count - 1; k++)
                            //        {
                            //            if (dtTempMD.Rows[k]["chan_no"].ToString().Trim() == s_ChanNo &&
                            //                dtTempMD.Rows[k]["store"].ToString().Trim() == s_Store &&
                            //                dtTempMD.Rows[k]["item"].ToString().Trim() == s_ITEM &&
                            //                dtTempMD.Rows[k]["period"].ToString().Trim() == s_PERIOD &&
                            //                //dtTempMD.Rows[k]["st_accept_date"].ToString().Trim() == s_StAcceptDate &&//todo need to check
                            //                dtTempMD.Rows[k]["po_source_no"].ToString().Trim() != s_PoSourceNo &&
                            //                k != i_CurrentIndexInDisStore)
                            //            {
                            //                strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時不允許多重PO。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA);
                            //                bResult = false;
                            //                break;
                            //            }
                            //        }
                            //    }
                            //    #endregion

                            //    #region
                            //    if (bResult)
                            //    {
                            //        ParameterList1.Clear();
                            //        ParameterList1.Add(s_ChanNo);
                            //        ParameterList1.Add(s_Store);
                            //        ParameterList1.Add(s_ITEM);
                            //        ParameterList1.Add(s_PERIOD);
                            //        ParameterList1.Add(s_StAcceptDate);
                            //        ParameterList1.Add(null);

                            //        DataTable dtTempPoDetl = BCO.QueryChainPODetlByFind(ParameterList1);

                            //        if (dtTempPoDetl != null && dtTempPoDetl.Rows.Count > 0)
                            //        {
                            //            for (Int32 j = 0; j <= dtTempPoDetl.Rows.Count - 1; j++)
                            //            {
                            //                if (dtTempPoDetl.Rows[j]["po_source_no"].ToString().Trim() != s_PoSourceNo)
                            //                {
                            //                    strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時不允許多重PO。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA);
                            //                    bResult = false;
                            //                    break;
                            //                }
                            //            }
                            //        }
                            //    }
                            //    #endregion
                            //}

                            #endregion

                            if (bResult)
                            {
                                #region

                                DataTable dtTempMD = dtDisStore;
                                for (Int32 k = 0; k <= dtTempMD.Rows.Count - 1; k++)
                                {
                                    if (dtTempMD.Rows[k]["chan_no"].ToString().Trim() == s_ChanNo &&
                                        dtTempMD.Rows[k]["store"].ToString().Trim() == s_Store &&
                                        dtTempMD.Rows[k]["item"].ToString().Trim() == s_ITEM &&
                                        dtTempMD.Rows[k]["period"].ToString().Trim() == s_PERIOD &&
                                        dtTempMD.Rows[k]["po_source_no"].ToString().Trim() != s_PoSourceNo &&
                                        k != i_CurrentIndexInDisStore)
                                    {

                                        ParameterList1.Clear();
                                        ParameterList1.Add(s_StAcceptDate);
                                        ParameterList1.Add(dtTemp.Rows[i]["is_dis_bypo"].ToString().Trim());
                                        ParameterList1.Add(dtTemp.Rows[i]["is_multipo"].ToString().Trim());
                                        ParameterList1.Add(s_ROOT_NO);
                                        ParameterList1.Add(s_PMA);
                                        ParameterList1.Add(s_ITEM);
                                        ParameterList1.Add(s_PERIOD);
                                        ParameterList1.Add(s_ChanNo);
                                        ParameterList1.Add(s_Store);
                                        ParameterList1.Add(s_PoSourceNo);
                                        ParameterList1.Add(Session["UID"].ToString());

                                        bResult = BCO2.CheckPODuplicate(ParameterList1, out strErrMsg);

                                        if (!bResult)
                                            break;

                                    }
                                }
                                #endregion
                            }

                        }


                    }
                }

                #endregion
            }

            #region

            #region
            if (bResult)
            {
                DataTable dtTempMD = dtDisStore;
                for (Int32 k = 0; k <= dtTempMD.Rows.Count - 1; k++)
                {
                    if (dtTempMD.Rows[k]["chan_no", DataRowVersion.Current].ToString().Trim() == s_ChanNo &&
                        dtTempMD.Rows[k]["store", DataRowVersion.Current].ToString().Trim() == s_Store &&
                        dtTempMD.Rows[k]["item", DataRowVersion.Current].ToString().Trim() == s_ITEM &&
                        dtTempMD.Rows[k]["period", DataRowVersion.Current].ToString().Trim() == s_PERIOD &&
                        //dtTempMD.Rows[k]["st_accept_date"].ToString().Trim() == s_StAcceptDate &&//todo need to check
                        dtTempMD.Rows[k]["po_source_no", DataRowVersion.Current].ToString().Trim() == s_PoSourceNo &&
                        k != i_CurrentIndexInDisStore)
                    {
                        strErrMsg = string.Format("『PK重複(通路,門市,群分類,大分類,進貨日,PO單號)=({0},{1},{2},{3},{4},{5})。』",
                            s_ChanNo, s_Store, s_ROOT_NO, s_PMA, s_StAcceptDate, s_PoSourceNo);
                        bResult = false;
                        break;
                    }
                }
            }
            #endregion

            #region

            if (bResult)
            {
                ParameterList1.Clear();
                ParameterList1.Add(s_ChanNo);
                ParameterList1.Add(s_Store);
                ParameterList1.Add(s_ITEM);
                ParameterList1.Add(s_PERIOD);
                ParameterList1.Add(s_StAcceptDate);
                ParameterList1.Add(s_PoSourceNo);

                bool bTemp = BCO.CheckChainPODetlIsExistedByFind(ParameterList1);
                if (bTemp)
                {
                    strErrMsg = string.Format("『PK重複(通路,門市,群分類,大分類,進貨日,PO單號)=({0},{1},{2},{3},{4},{5})。』",
                        s_ChanNo, s_Store, s_ROOT_NO, s_PMA, s_StAcceptDate, s_PoSourceNo);
                    bResult = false;
                }
            }



            #endregion

            #endregion

        }
        catch (Exception ex)
        {
            ErrorMsgLabel.Text = ex.Message;
        }

        return bResult;

        #endregion
    }
Beispiel #2
0
    private bool CheckPOSourceNO(ref string strErrMsg)
    {
        #region
        bool bResult = true;
        s_ChanNo = SLP_StoreChain1.Text;
        s_Store = SLP_Store2.Text;
        s_Item = SLP_SKU2.Text;
        s_Period = SLP_ItemPeriod1.Text;
        s_StAcceptDate = SLP_SLPDate2.Text;
        s_PoSourceNo = txt_POSourceNo.Text.Trim();        
        ArrayList ParameterList = new ArrayList();//20091113
        ArrayList ParameterList1 = new ArrayList();//20091113

        #region 比對是否 PK重複

        #region 先比對頁面資料
        DataTable dtTempMD = dtForMasterAndDetail;
        dtTempMD.PrimaryKey = new DataColumn[] { dtTempMD.Columns["chan_no"], 
                                                     dtTempMD.Columns["store"], 
                                                     dtTempMD.Columns["item"], 
                                                     dtTempMD.Columns["period"], 
                                                     dtTempMD.Columns["st_accept_date_show"],                                                   
                                                     dtTempMD.Columns["data_source"]
                                                     //,dtTempMD.Columns["po_source_no"]
                                                     };
        DataRow drFind_1 = dtTempMD.Rows.Find(new object[] { s_ChanNo, 
                                                               s_Store, 
                                                               s_Item, 
                                                               s_Period,
                                                               s_StAcceptDate,
                                                               1
                                                               //,s_PoSourceNo
                                                              });
        DataRow drFind_4 = dtTempMD.Rows.Find(new object[] { s_ChanNo, 
                                                               s_Store, 
                                                               s_Item, 
                                                               s_Period,
                                                               s_StAcceptDate,
                                                               4
                                                               //,s_PoSourceNo
                                                              });
        if (drFind_1 != null || drFind_4 != null)
        {
            //strErrMsg = string.Format("『PK重複,資料已存在於頁面(通路,門市,群分類,大分類,進貨日,PO單號)=({0},{1},{2},{3},{4},{5})。』",
            //    s_ChanNo, s_Store, s_ROOT_NO, s_PMA, s_StAcceptDate, s_PoSourceNo);
            strErrMsg = string.Format("『PK重複,手動匯入或通路單號匯入資料已存在於頁面(通路,門市,品號,期別進貨日)=({0},{1},{2},{3},{4})。』",
                              s_ChanNo, s_Store, s_Item, s_Period, s_StAcceptDate);
            bResult = false;
            return bResult;
        }

        #endregion

        #region 比對待新增明細與實體資料庫
        ALOModel.MaintainChainPO BCO = new ALOModel.MaintainChainPO(ConnectionDB);

        ParameterList1.Clear();
        ParameterList1.Add(s_ChanNo);
        ParameterList1.Add(s_Store);
        ParameterList1.Add(s_Item);
        ParameterList1.Add(s_Period);
        ParameterList1.Add(s_StAcceptDate);
        ParameterList1.Add(s_PoSourceNo);

        bool bDataExist = BCO.CheckChainPODetlIsExistedByFind(ParameterList1);
        if (bDataExist)
        {
            strErrMsg = string.Format("『PK重複,資料已存在於實體資料表(通路,門市,品號,期別,進貨日,PO單號)=({0},{1},{2},{3},{4},{5})。』",
                s_ChanNo, s_Store, s_Item, s_Period, s_StAcceptDate, s_PoSourceNo);
            bResult = false;
            return bResult;
        }

        #region 只檢查單店/品項/進貨日
        ParameterList1.Clear();
        ParameterList1.Add(s_ChanNo);
        ParameterList1.Add(s_Store);
        ParameterList1.Add(s_Item);
        ParameterList1.Add(s_Period);
        ParameterList1.Add(s_StAcceptDate);
        ParameterList1.Add("");

        bDataExist = BCO.CheckChainPODetlIsExistedByFind(ParameterList1);
        if (bDataExist)
        {
            strErrMsg = string.Format("『PK重複,資料已存在於實體資料表(通路,門市,品號,期別,進貨日)=({0},{1},{2},{3},{4})。』",
                        s_ChanNo, s_Store, s_Item, s_Period, s_StAcceptDate);
            bResult = false;
            return bResult;
        }
        #endregion

        #endregion

        #endregion


        ALOModel.MaintainChainPOSetting BCO2 = new ALOModel.MaintainChainPOSetting(ConnectionDB);

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

        ParameterList.Clear();
        BCO_ITM.SQLHelper.SQLWhere(ref ParameterList, DbType.String, "MA.ITEM", s_Item, "=", "and");
        BCO_ITM.MaintainSKU bco_itm = new BCO_ITM.MaintainSKU(ConnectionDB);
        DataTable 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 判斷 is_dis_bypo & is_multipo

        ParameterList1.Clear();
        ParameterList1.Add(s_ChanNo);
        ParameterList1.Add(s_Store);
        DataTable dtChainPOSetting = BCO2.QueryStorPOSettingByFind(ParameterList1);

        if (dtChainPOSetting != null && dtChainPOSetting.Rows.Count > 0)
        {
            for (Int32 i = 0; i <= dtChainPOSetting.Rows.Count - 1; i++)
            {
                if (s_ROOT_NO == dtChainPOSetting.Rows[i]["root_no"].ToString().Trim() && s_PMA == dtChainPOSetting.Rows[i]["pma"].ToString().Trim())
                {

                    if (dtChainPOSetting.Rows[i]["is_dis_bypo"].ToString().Trim() == "0")
                    {
                        if (s_PoSourceNo != "")//1.當[IS_DIS_BYPO]=否時,PO單號應不可輸入。
                        {
                            #region
                            strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時不可輸入通路單號。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA);
                            bResult = false;
                            rfv_POSourceNo.Enabled = false;
                            break;
                            #endregion
                        }
                    }
                    else if (dtChainPOSetting.Rows[i]["is_dis_bypo"].ToString().Trim() == "1")
                    {
                        if (s_PoSourceNo == "")//2.當[IS_DIS_BYPO]=是時,允許輸入PO單號為必填欄位,應不可為空白。
                        {
                            #region
                            strErrMsg = string.Format("『請輸入通路單號。』");
                            bResult = false;
                            break;
                            #endregion
                        }

                        if (dtChainPOSetting.Rows[i]["is_multipo"].ToString().Trim() == "0")//3.當[IS_DIS_BYPO]=是且[IS_MULTIPO]=否時,代表(同門市/品號期別/門市進貨日)下,只能輸入一個PO單號。 
                        {
                            #region
                            if (bResult)
                            {
                                //20090716 modified
                                if (!bDetailEditing)//如果不是編輯狀態
                                {
                                    //檢查頁面暫存檔
                                    //DataTable dtTempMD = dtForMasterAndDetail;
                                    DataRow[] dRows = dtTempMD.Select(string.Format("chan_no='{0}' and store='{1}' and item='{2}' and period = '{3}' and st_accept_date_show='{4}' ",
                                                                       s_ChanNo, s_Store, s_Item, s_Period, s_StAcceptDate));
                                    if (dRows.Length > 0)
                                    {
                                        strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時,只能輸入一個PO單號』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA);
                                        bResult = false;
                                    }

                                    //檢查資料庫
                                    ParameterList1.Clear();
                                    ParameterList1.Add(s_ChanNo);
                                    ParameterList1.Add(s_Store);
                                    ParameterList1.Add(s_Item);
                                    ParameterList1.Add(s_Period);
                                    ParameterList1.Add(s_StAcceptDate);
                                    ParameterList1.Add(null);

                                    bool bTemp = BCO.CheckChainPODetlIsExistedByFind(ParameterList1);
                                    if (bTemp)
                                    {
                                        strErrMsg = string.Format("『(通路,門市,群分類,大分類,進貨日)=({0},{1},{2},{3},{4})時,只能輸入一個PO單號』",
                                            s_ChanNo, s_Store, s_ROOT_NO, s_PMA, s_StAcceptDate);
                                        bResult = false;
                                    }
                                }

                            }
                            #endregion
                        }
                        else if (dtChainPOSetting.Rows[i]["is_multipo"].ToString().Trim() == "1")//3.當[IS_DIS_BYPO]=是且[IS_MULTIPO]=是時,代表(同門市/品號期別/門市進貨日)下,允許多重PO。 
                        {
                            #region
                            if (bResult)
                            {
                                ParameterList1.Clear();
                                ParameterList1.Add(s_ChanNo);
                                ParameterList1.Add(s_Store);
                                ParameterList1.Add(s_Item);
                                ParameterList1.Add(s_Period);
                                ParameterList1.Add(s_StAcceptDate);
                                ParameterList1.Add(s_PoSourceNo);

                                DataTable dtTempPoDetl = BCO.QueryChainPODetlByFind(ParameterList1);

                                if (dtTempPoDetl != null && dtTempPoDetl.Rows.Count > 0)
                                {
                                    for (Int32 j = 0; j <= dtTempPoDetl.Rows.Count - 1; j++)
                                    {
                                        if (dtTempPoDetl.Rows[j]["po_source_no"].ToString().Trim() != s_PoSourceNo)
                                        {
                                            strErrMsg = string.Format("『(通路,門市,群分類,大分類)=({0},{1},{2},{3})時不允許多重PO。』", s_ChanNo, s_Store, s_ROOT_NO, s_PMA);
                                            bResult = false;
                                            break;
                                        }
                                    }
                                }
                            }
                            #endregion
                        }
                    }

                }
            }


        }


        #endregion

        return bResult;
        #endregion
    }