예제 #1
0
    protected void btn_SaveDisSetting_Click(object sender, EventArgs e)
    {
        #region
        try
        {
            DateTime ProcessingDateTime = DateTime.Now;

            string strItem = SLP_SKU1.Text;
            string strPeriod = SLP_ItemPeriod1.Text;
            string strDisType = SLP_PARAM1.Text;
            string strDisDate = SLP_SLPDate1.Text;
            string strStAcceptDate = SLP_SLPDate2.Text;
            string strUserId = Session["UID"].ToString();

            if (strDisType == "109" && (dtDisTypeTmp109 == null || dtDisTypeTmp109.Rows.Count <= 0))
            {
                //如果Rank類別=109 且未設定pattern等級設定則不繼續執行
                ErrorMsgLabel.Text = "無設定等級資料,請確認配本方式或重新設定";
                return;
            }


            DataTable NewDisChanReferDt = dtDisChanReferFromPOP;
            string strChan = "";

            if (NewDisChanReferDt != null && NewDisChanReferDt.Rows.Count > 0)
            {
                //檢核【確認通路參照】之個別通路參照比例是否為100%
                if (!CheckChanReferRateIs100(NewDisChanReferDt, out strChan))
                {
                    ErrorMsgLabel.Text = string.Format("通路:{0}參照比率必須為100%!", strChan);
                    return;
                }
            }


            ALOModel.MaintainDisRecord BCO = new ALOModel.MaintainDisRecord(ConnectionDB);
            ALOModel.ALOCommon BCOCommon = new ALOModel.ALOCommon();
            System.Data.Common.DbTransaction DBT = BCOCommon.OpenAndGetConnection(ConnectionDB).BeginTransaction();
           
            try
            {

                SetDisTmpRec(strDisDate, strStAcceptDate, strItem, strPeriod, strDisType, strUserId, ProcessingDateTime);
                SetDisItem(strItem, strPeriod, strDisType, strUserId, ProcessingDateTime);
                SetDisItemRefer(strUserId, ProcessingDateTime);
                SetDisChan(strItem, strPeriod, strStAcceptDate, strDisType, strUserId, ProcessingDateTime);


                #region 重新指定PK欄位
                if (dtDisChan.PrimaryKey.Length <= 0)
                {
                    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;
                }

                if (dtDisItemRefer.PrimaryKey.Length <= 0) 
                {
                    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;
                }

                if (dtDisTypeTmp109.PrimaryKey.Length <= 0)
                {
                    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


                bool bResult = BCO.UpdateDisRecordFor131(dtDisTmpRec, dtDisTmpRecOld,
                  dtDisMain, dtDisMainOld, dtDisItem, dtDisItemOld,
                  dtDisChan, dtDisChanOld, dtDisItemRefer, dtDisItemReferOld,
                  dtDisTypeTmp109, dtDisType109TmpOld,
                  dtDisTypeTmp, dtDisTypeTmpOld, NewDisChanReferDt, s_DISNO, strItem, strPeriod, strUserId, strStAcceptDate, DBT);

                if (bResult)
                {
                    ALOModel.MaintainDisTmpRec BCO2 = new ALOModel.MaintainDisTmpRec(ConnectionDB);
                    BCO2.UpdateDisTmpRec(dtDisTmpRec, dtDisTmpRecOld, s_DISNO, DBT);
                }


                DBT.Commit();//交易成功

            }
            catch (Exception ex)
            {
                DBT.Rollback();//交易失敗
                throw ex;
            }

            GetAllOriginalDatatables();
            BindingData();

            dtDisChanReferFromPOP = null;
            ConfirmItemReferPressed = false;


            ResultMsgLabel.Text = "更新成功";

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

        #endregion
    }
예제 #2
0
    protected void btn_Save_Click(object sender, EventArgs e)
    {
        #region
        try
        {
            ErrorMsgLabel.Text = "";
            ResultMsgLabel.Text = "";
            hiddenErrMsg.Value = "";

            DateTime ProcessingDateTime = DateTime.Now;

            string strItem = SLP_SKU1.Text;
            string strPeriod = SLP_ItemPeriod1.Text;
            string strDisType = SLP_PARAM1.Text;
            string strDisDate = SLP_SLPDate1.Text;
            string strStAcceptDate = SLP_SLPDate2.Text;
            string strUserId = Session["UID"].ToString();
            string strErrMsgTmp = "";
            #region


            if (!GetItemPeriodDisStateByItemPeriod(strItem, strPeriod, strStAcceptDate, out strErrMsgTmp))
            {
                ErrorMsgLabel.Text = strErrMsgTmp;
                return;
            }

            //如果Rank類別=109 且未設定pattern等級設定則不繼續執行
            if (strDisType == "109" && (dtDisTypeTmp109 == null || dtDisTypeTmp109.Rows.Count <= 0))
            {
                ErrorMsgLabel.Text = "無設定等級資料,請確認配本方式或重新設定";
                return;
            }

            SetDisTmpRec(strDisDate, strStAcceptDate, strItem, strPeriod, strDisType, strUserId, ProcessingDateTime);
            SetDisMain(strDisDate, strStAcceptDate, strUserId, ProcessingDateTime);
            SetDisItem(strItem, strPeriod, strDisType, strUserId, ProcessingDateTime);
            SetDisChan(strItem, strPeriod, strStAcceptDate, strDisType, strUserId, ProcessingDateTime);

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

            //當為新增模式時,或編輯模式下改變配本方式
            if (CurrentPageMode == PageCurrentMode.Insert || (CurrentPageMode == PageCurrentMode.Edit && s_DIS_TYPE_Original != strDisType))
            {
                if (strDisType == "101" || strDisType == "103" || strDisType == "104")
                {
                    dtDisItemRefer = BCO.QueryDisItemReferByDisType(dtParam, dtDisItem, strDisType, strItem, strPeriod, vItemReferCount);

                    currentGvMode = CurrentGridviewMode.View;
                    gv_ItemRefer.DataSource = dtDisItemRefer;
                    gv_ItemRefer.DataBind();
                    hiddenDtDisItemReferCounts.Value = dtDisItemRefer.Rows.Count.ToString();
                    CalculateReferRateSum();

                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", string.Format("SwitchControlDisplay('{0}','{1}',1);", Panel_ItemRefer.ClientID, hiddenItemReferDisplayMode.ClientID), true);
                }
            }

            SetDisItemRefer(strUserId, ProcessingDateTime);
            #endregion

            if (CurrentPageMode == PageCurrentMode.Insert)
            {
                #region

                ALOModel.ALOCommon BCOCommon = new ALOModel.ALOCommon();
                System.Data.Common.DbTransaction DBT = BCOCommon.OpenAndGetConnection(ConnectionDB).BeginTransaction();
                try
                {
                    string strDisNo = BCO.CreateDisRecordFor131(dtDisTmpRec, dtDisMain, dtDisItem, dtDisChan, dtDisItemRefer, dtDisTypeTmp109, dtDisTypeTmp, strItem, strPeriod, strUserId, DBT);

                    if (strDisNo != "")
                    {
                        ALOModel.MaintainDisTmpRec BCO2 = new ALOModel.MaintainDisTmpRec(ConnectionDB);
                        BCO2.CreateDisTmpRec(dtDisTmpRec, strDisNo, DBT);
                    }


                    DBT.Commit();//交易成功

                }
                catch (Exception ex)
                {
                    DBT.Rollback();//交易失敗
                    throw ex;
                }

                QueryData();

                ResultMsgLabel.Text = "新增成功";
                #endregion
            }
            else if (CurrentPageMode == PageCurrentMode.Edit)
            {
                #region

                SetPrimaryKeyForDataTable();

                ALOModel.ALOCommon BCOCommon = new ALOModel.ALOCommon();
                System.Data.Common.DbTransaction DBT = BCOCommon.OpenAndGetConnection(ConnectionDB).BeginTransaction();
                try
                {

                    bool bResult = BCO.UpdateDisRecordFor131(dtDisTmpRec, dtDisTmpRecOld,
                      dtDisMain, dtDisMainOld, dtDisItem, dtDisItemOld,
                      dtDisChan, dtDisChanOld, dtDisItemRefer, dtDisItemReferOld,
                      dtDisTypeTmp109, dtDisType109TmpOld,
                      dtDisTypeTmp, dtDisTypeTmpOld, null, s_DISNO, strItem, strPeriod, strUserId, strStAcceptDate, DBT);

                    if (bResult)
                    {
                        ALOModel.MaintainDisTmpRec BCO2 = new ALOModel.MaintainDisTmpRec(ConnectionDB);
                        BCO2.UpdateDisTmpRec(dtDisTmpRec, dtDisTmpRecOld, s_DISNO, DBT);
                    }


                    DBT.Commit();//交易成功

                }
                catch (Exception ex)
                {
                    DBT.Rollback();//交易失敗
                    throw ex;
                }

                QueryData();

                ResultMsgLabel.Text = "更新成功";
                #endregion
            }

            ScriptManager.RegisterStartupScript(this, this.GetType(), "SwitchControlDisplay", string.Format("SwitchControlDisplay('{0}','{1}',0);", Panel_AddNewItem.ClientID, hiddenDisplayMode.ClientID), true);

            SwitchSaveCancelButton(false);

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