public CResult Create(CMTMaster oMTMaster) { 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_Insert"; cmd.CommandType = CommandType.StoredProcedure; //cmd.Parameters.AddWithValue("@MTMstr_OID", oMTMaster.MTMstr_OID); SqlParameter sParam = new SqlParameter("@MTMstr_OID", SqlDbType.Char, 24); sParam.Direction = ParameterDirection.Output; cmd.Parameters.Add(sParam).Value = ""; 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(); string stMTMstr_OID = cmd.Parameters["@MTMstr_OID"].Value.ToString(); 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", stMTMstr_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(); // 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.InvtDecInc(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); }