public CResult Update(CMTMaster oMTMaster, Dictionary <string, CMTDetails> oMTFinalQtyDic) { List <CInventory> oSrcInvtList = new List <CInventory>(); List <CInventory> oDesInvtList = new List <CInventory>(); oResult = new CResult(); conn = oConnManager.GetConnection(out s_DBError); if (conn != null) { SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.Transaction = oConnManager.BeginTransaction(); try { cmd.CommandText = "sp_MTMstr_Update"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MTMstr_OID", oMTMaster.MTMstr_OID); cmd.Parameters.AddWithValue("@MTMstr_Branch", oMTMaster.MTMstr_Branch); cmd.Parameters.AddWithValue("@MTMstr_Code", oMTMaster.MTMstr_Code); cmd.Parameters.AddWithValue("@MTMstr_Date", oMTMaster.MTMstr_Date); cmd.Parameters.AddWithValue("@MTMstr_DOrder", oMTMaster.MTMstr_DOrder); cmd.Parameters.AddWithValue("@MTMstr_Creator", oMTMaster.Creator); cmd.Parameters.AddWithValue("@MTMstr_CreationDate", oMTMaster.CreationDate); cmd.Parameters.AddWithValue("@MTMstr_UpdatedBy", oMTMaster.UpdateBy); cmd.Parameters.AddWithValue("@MTMstr_UpdateDate", oMTMaster.UpdateDate); cmd.Parameters.AddWithValue("@MTMstr_IsActive", (oMTMaster.IsActive == "Y") ? 1 : 0); cmd.Parameters.AddWithValue("@MTMstr_Remarks", oMTMaster.Remarks); cmd.ExecuteNonQuery(); cmd.CommandText = "Delete from t_MTDtls where MTDtls_MstrOID=@MTMstr_OID"; cmd.CommandType = CommandType.Text; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@MTMstr_OID", oMTMaster.MTMstr_OID); cmd.ExecuteNonQuery(); foreach (CMTDetails oDetails in oMTMaster.MTMstr_DetailsList) { cmd.CommandText = "sp_MTDtls_Insert"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@MTDtls_Branch", oDetails.MTDtls_Branch); cmd.Parameters.AddWithValue("@MTDtls_OID", oDetails.MTDtls_OID); cmd.Parameters.AddWithValue("@MTDtls_MstrOID", oMTMaster.MTMstr_OID); cmd.Parameters.AddWithValue("@MTDtls_ItemOID", oDetails.MTDtls_ItemOID); cmd.Parameters.AddWithValue("@MTDtls_IssQty", oDetails.MTDtls_IssQty); cmd.Parameters.AddWithValue("@MTDtls_IssUOMOID", oDetails.MTDtls_IssUOMOID); cmd.Parameters.AddWithValue("@MTDtls_SBranOID", oDetails.MTDtls_SBranOID); cmd.Parameters.AddWithValue("@MTDtls_SrcLocOID", oDetails.MTDtls_SrcLocOID); cmd.Parameters.AddWithValue("@MTDtls_SrcInvTyp", oDetails.MTDtls_SrcInvTyp); cmd.Parameters.AddWithValue("@MTDtls_DBranOID", oDetails.MTDtls_DBranOID); cmd.Parameters.AddWithValue("@MTDtls_DestLocOID", oDetails.MTDtls_DestLocOID); cmd.Parameters.AddWithValue("@MTDtls_DesInvtyp", oDetails.MTDtls_DesInvtyp); cmd.Parameters.AddWithValue("@MTDtls_RQty", oDetails.MTDtls_RQty); cmd.Parameters.AddWithValue("@MTDtls_RUOMOID", oDetails.MTDtls_RUOMOID); cmd.Parameters.AddWithValue("@MTDtls_Status", oDetails.MTDtls_Status); cmd.ExecuteNonQuery(); } foreach (CMTDetails oDetails in oMTFinalQtyDic.Values) { // populate inv list(decrease) CInventory oInventory = new CInventory(); oInventory.Invt_Branch = oDetails.MTDtls_Branch; oInventory.Invt_BranchOID = oDetails.MTDtls_SBranOID; oInventory.Invt_InvType = oDetails.MTDtls_SrcInvTyp; oInventory.Invt_ItemOID = oDetails.MTDtls_ItemOID; oInventory.Invt_LocOID = oDetails.MTDtls_SrcLocOID; oInventory.Invt_QTY = oDetails.MTDtls_IssQty; oSrcInvtList.Add(oInventory); // populate inv list(increase) oInventory = new CInventory(); oInventory.Invt_Branch = oDetails.MTDtls_Branch; oInventory.Invt_BranchOID = oDetails.MTDtls_DBranOID; oInventory.Invt_InvType = oDetails.MTDtls_DesInvtyp; oInventory.Invt_ItemOID = oDetails.MTDtls_ItemOID; oInventory.Invt_LocOID = oDetails.MTDtls_DestLocOID; oInventory.Invt_QTY = oDetails.MTDtls_IssQty; oDesInvtList.Add(oInventory); } //Update inv CInventoryBO oInventoryBO = new CInventoryBO(); oResult = oInventoryBO.InvtIncForMT(oSrcInvtList, oDesInvtList); if (oResult.IsSuccess) { oConnManager.Commit(); oResult.IsSuccess = true; } else { oResult.ErrMsg = oConnManager.Rollback(); oResult.IsSuccess = false; } } catch (SqlException e) { string sRollbackError = oConnManager.Rollback(); oResult.IsSuccess = false; oResult.ErrMsg = sRollbackError.Equals("") ? oConnManager.GetErrorMessage(e) : sRollbackError; } finally { oConnManager.Close(); } } else { oResult.IsSuccess = false; oResult.ErrMsg = s_DBError; } return(oResult); }