Exemple #1
0
        /// <summary>
        /// 基本表單更新BCO
        /// </summary>
        /// <param name="ParameterList">輸入變數</param>
        /// <param name="RootDBT">是否有主交易,無主交易輸入null</param>
        /// <returns>回傳更新成功與否</returns>
        public bool SaveData(
            ArrayList ParameterList,
            DataTable dtMST,
            DataTable dtChannel,
            string strDelDataType
            )
        {
            bool bResult = false;
            try
            {
                ArrayList Para = new ArrayList();
                //獨立呼叫啟動Transcation
                Conn = USEDB.CreateConnection();
                Conn.Open();
                DBT = Conn.BeginTransaction();
                DBO.PUR09_DBO dbo = new PUR09_DBO(ref USEDB);
                string strPLAN_ACCEPT_DATE = ParameterList[0].ToString();
                string strPICK_BATCH = ParameterList[1].ToString();
                string strUID = ParameterList[2].ToString();
                string strUPDATEDATE = ParameterList[3].ToString();

                if (strDelDataType != "")
                {
                    Para.Clear();
                    Para.Add(strPLAN_ACCEPT_DATE);          //0.V_ST_ACCEPT_DATE 
                    Para.Add(strPICK_BATCH);                //1.V_PICK_BATCH       
                    Para.Add(strDelDataType);               //2.V_DATATYPE       
                    Para.Add(strUID);                       //3.V_NEW_UPDATEUID
                    Para.Add(strUPDATEDATE);                //4.V_NEW_UPDATEDATE
                    dbo.doDeleteBatch(Para, DBT);
                }


                foreach (DataRow dr in dtMST.Rows)
                {
                    string strITEM = dr["ITEM"].ToString().Substring(0, 6);
                    string strPERIOD = dr["PERIOD"].ToString();
                    string strVIRTUAL_CODE = dr["VIRTUAL_CODE"].ToString();

                    //新增
                    if ((dr["CREATEDATE"].ToString().Trim() == "") && (dr["GV_DEL"].ToString() == "0"))
                    {
                        Para.Clear();
                        Para.Add(strPLAN_ACCEPT_DATE);          //0.V_ST_ACCEPT_DATE 
                        Para.Add(strPICK_BATCH);                //1.V_PICK_BATCH
                        Para.Add(strVIRTUAL_CODE);              //2.V_ITEM      
                        Para.Add(strPERIOD);                    //3.V_PERIOD    
                        Para.Add(dr["PICK_SELECT"].ToString()); //4.V_PICK_SELECT
                        Para.Add(strUID);                       //5.V_NEW_UPDATEUID
                        Para.Add(strUPDATEDATE);                //6.V_NEW_UPDATEDATE
                        Para.Add(dr["DATATYPE"].ToString());    //7.V_DATATYPE  

                        dbo.doInsertMaster(Para, DBT);
                    }
                    //修改&刪除
                    if (dr["CREATEDATE"].ToString().Trim() != "")
                    {
                        Para.Clear();
                        Para.Add(strPLAN_ACCEPT_DATE);          //0.V_ST_ACCEPT_DATE 
                        Para.Add(strPICK_BATCH);                //1.V_PICK_BATCH
                        Para.Add(strVIRTUAL_CODE);              //2.V_ITEM      
                        Para.Add(strPERIOD);                    //3.V_PERIOD    
                        Para.Add(dr["PICK_SELECT"].ToString()); //4.V_PICK_SELECT
                        Para.Add(strUID);                       //5.V_NEW_UPDATEUID
                        Para.Add(strUPDATEDATE);                //6.V_NEW_UPDATEDATE
                        Para.Add(dr["UPDATEUID"].ToString());   //7.V_OLD_UPDATEUID
                        Para.Add(dr["UPDATEDATE"].ToString());  //8.V_OLD_UPDATEDATE

                        if (dr["GV_DEL"].ToString() == "1")
                            Para.Add("0"); //刪除               //9.V_ENABLE
                        else
                            Para.Add("1");//編輯                //9.V_ENABLE

                        dbo.doUpdateMaster(Para, DBT);
                        //刪除明細
                        if (dr["GV_DEL"].ToString() == "1")
                        {
                            //修改
                            Para.Clear();
                            Para.Add(strPLAN_ACCEPT_DATE);  //0.V_ST_ACCEPT_DATE 
                            Para.Add(strPICK_BATCH);        //1.V_PICK_BATCH     
                            Para.Add(strITEM);              //2.V_ITEM           
                            Para.Add(strPERIOD);            //3.V_PERIOD         
                            Para.Add(strVIRTUAL_CODE);      //4.V_VIRTUAL_CODE   
                            Para.Add(DBNull.Value);         //5.V_CHAN_NO        
                            Para.Add(DBNull.Value);         //6.V_PICK_SELECT    
                            Para.Add(strUID);               //7.V_NEW_UPDATEUID  
                            Para.Add(strUPDATEDATE);        //8.V_NEW_UPDATEDATE   
                            Para.Add(DBNull.Value);         //9.V_OLD_UPDATEUID
                            Para.Add(DBNull.Value);         //10.V_OLD_UPDATEDATE
                            Para.Add(DBNull.Value);         //11.V_STATUS  
                            Para.Add("0");                  //12.V_ENABLE                          
                            dbo.doUpdateChannel(Para, DBT);
                        }
                    }

                    //處理管制明細部份
                    if (dtChannel != null)
                    {
                        //處理沒有上刪除FALG的資料,刪除的部分與上面的主檔處理部分一起做掉了
                        if (dr["GV_DEL"].ToString() == "0")
                        {
                            DataRow[] FindChannels = dtChannel.Select(" ST_ACCEPT_DATE='" + strPLAN_ACCEPT_DATE + "'" +
                                                                      " And PICK_BATCH='" + strPICK_BATCH + "'" +
                                                                      " And ITEM='" + strITEM + "'" +
                                                                      " And PERIOD='" + strPERIOD + "'" +
                                                                      " And VIRTUAL_CODE='" + strVIRTUAL_CODE + "'");

                            foreach (DataRow drChan in FindChannels)
                            {

                                if (drChan["CREATEUID"].ToString() == "")
                                {
                                    //新增
                                    Para.Clear();
                                    Para.Add(strPLAN_ACCEPT_DATE);              //0.V_ST_ACCEPT_DATE 
                                    Para.Add(strITEM);                          //1.V_ITEM    
                                    Para.Add(strPERIOD);                        //2.V_PERIOD      
                                    Para.Add(drChan["CHAN_NO"].ToString());     //3.V_CHAN_NO      
                                    Para.Add(strVIRTUAL_CODE);                  //4.V_VIRTUAL_CODE  
                                    Para.Add(strPICK_BATCH);                    //5.V_PICK_BATCH 
                                    Para.Add(drChan["PICK_SELECT"].ToString()); //6.V_PICK_SELECT 
                                    Para.Add(strUID);                           //7.V_UPDATEUID     
                                    Para.Add(strUPDATEDATE);                    //8.V_UPDATEDATE   
                                    Para.Add("25");                             //9.V_STATUS  
                                    dbo.doInsertChannel(Para, DBT);
                                }
                                else
                                {
                                    //修改
                                    Para.Clear();
                                    Para.Add(strPLAN_ACCEPT_DATE);              //0.V_ST_ACCEPT_DATE 
                                    Para.Add(strPICK_BATCH);                    //1.V_PICK_BATCH     
                                    Para.Add(strITEM);                          //2.V_ITEM           
                                    Para.Add(strPERIOD);                        //3.V_PERIOD         
                                    Para.Add(strVIRTUAL_CODE);                  //4.V_VIRTUAL_CODE   
                                    Para.Add(drChan["CHAN_NO"].ToString());     //5.V_CHAN_NO        
                                    Para.Add(drChan["PICK_SELECT"].ToString()); //6.V_PICK_SELECT    
                                    Para.Add(strUID);                           //7.V_NEW_UPDATEUID  
                                    Para.Add(strUPDATEDATE);                    //8.V_NEW_UPDATEDATE   
                                    Para.Add(drChan["UPDATEUID"].ToString());   //9.V_OLD_UPDATEUID
                                    Para.Add(drChan["UPDATEDATE"].ToString());  //10.V_OLD_UPDATEDATE
                                    Para.Add(DBNull.Value);                     //11.V_STATUS  
                                    Para.Add("1");                              //12.V_ENABLE                          
                                    dbo.doUpdateChannel(Para, DBT);
                                }
                            }
                        }
                    }
                }

                DBT.Commit();

                bResult = true;

            }
            catch (Exception ex)
            {
                if (DBT != null)
                    DBT.Rollback();
                throw ex;
            }
            finally
            {
                if (Conn.State == ConnectionState.Connecting)
                {
                    Conn.Close();
                }
            }
            return bResult;
        }