<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.aras.com/community/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Transferring relationship rows with a C# method</title><link>https://www.aras.com/community/f/development/34867/transferring-relationship-rows-with-a-c-method</link><description>Hi 
 
 I have a Request for quotation item type with an relationship to Parts. As well as a Purchase Order Item Type also with a relationship to Parts This allowing users to select the parts that the want on the RFQ and POR. I then created a method that</description><dc:language>ja-JP</dc:language><generator>Telligent Community 12</generator><item><title>RE: Transferring relationship rows with a C# method</title><link>https://www.aras.com/community/thread/5182?ContentTypeID=1</link><pubDate>Wed, 03 Jun 2020 07:37:41 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:481d6904-1582-4dfe-ac72-6a1b18516888</guid><dc:creator>Wian le Roux</dc:creator><description>&lt;p&gt;I also need to add that the Javascript gets run on a relationship of the RFQ called Sage Supplier. Im not sure if this might affect it?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Transferring relationship rows with a C# method</title><link>https://www.aras.com/community/thread/5181?ContentTypeID=1</link><pubDate>Wed, 03 Jun 2020 07:27:58 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:70c291a1-1561-4907-ac78-0229a3701a12</guid><dc:creator>Wian le Roux</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;&lt;span&gt;Gopikrishnan&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Thanks so much for your reply! I have tried the code like that with my relationship names entered (RFQ = DV_RFQ_Line and the POR relationship = DV_PO_Parts) but its seems to still not transfer the relationship items over. The &lt;span&gt;DV_PO_Parts&lt;/span&gt; relationship still stays empty.&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Innovator myInn = this.getInnovator();&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;string thisId = this.getID();&lt;br /&gt;string thisType = this.getType();&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Item thisItem = myInn.getItemById(thisType, thisId);&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;string srcId = thisItem.getProperty(&amp;quot;source_id&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;Item myRfq = myInn.getItemById(&amp;quot;DV_RFQ&amp;quot;, srcId);&lt;br /&gt;if (myRfq == null || myRfq.isError()) {&lt;br /&gt; return myInn.newError(string.Format(&amp;quot;Unable to get RFQ with ID {0}&amp;quot;, srcId));&lt;br /&gt;}&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;if (myRfq.fetchLockStatus() != 0) {&lt;br /&gt; string rfqNum = myRfq.getProperty(&amp;quot;item_number&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt; string lockedBy = myRfq.getPropertyAttribute(&amp;quot;locked_by_id&amp;quot;, &amp;quot;keyed_name&amp;quot;, &amp;quot;?&amp;quot;);&lt;br /&gt; return myInn.newError(string.Format(&amp;quot;RFQ {0} is locked by {1}, please unlock an try again&amp;quot;, rfqNum, lockedBy));&lt;br /&gt;}&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;// Check we have an attached supplier quotation...&lt;br /&gt;string suppQuoteFileId = thisItem.getProperty(&amp;quot;_supplier_quote_file&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;if (suppQuoteFileId == &amp;quot;&amp;quot;){&lt;br /&gt; return myInn.newError(&amp;quot;You must attach a supplier quotation to the RFQ&amp;quot;);&lt;br /&gt;}&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Item newPoReq = this.newItem(&amp;quot;DV_PO_Request&amp;quot;, &amp;quot;add&amp;quot;);&lt;br /&gt;newPoReq.setProperty(&amp;quot;_sage_vendor_id&amp;quot;, thisItem.getRelatedItemID());&lt;br /&gt;newPoReq.setProperty(&amp;quot;_rfq_id&amp;quot;, srcId);&lt;br /&gt;newPoReq.setProperty(&amp;quot;_supplier_quote_file&amp;quot;, suppQuoteFileId);&lt;br /&gt;newPoReq.setProperty(&amp;quot;name&amp;quot;, myRfq.getProperty(&amp;quot;name&amp;quot;, &amp;quot;&amp;quot;));&lt;br /&gt;newPoReq.setProperty(&amp;quot;description&amp;quot;, myRfq.getProperty(&amp;quot;description&amp;quot;, &amp;quot;&amp;quot;));&lt;br /&gt;newPoReq.setProperty(&amp;quot;classification&amp;quot;, myRfq.getProperty(&amp;quot;classification&amp;quot;, &amp;quot;&amp;quot;));&lt;br /&gt;newPoReq.setProperty(&amp;quot;owned_by_id&amp;quot;, myRfq.getProperty(&amp;quot;owned_by_id&amp;quot;, &amp;quot;&amp;quot;));&lt;br /&gt;newPoReq.setProperty(&amp;quot;_tandc&amp;quot;, myRfq.getProperty(&amp;quot;_description&amp;quot;, &amp;quot;&amp;quot;));&lt;br /&gt;newPoReq = newPoReq.apply();&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;if (newPoReq.isError()) return newPoReq;&lt;br /&gt;string porId = newPoReq.getID();&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;HashSet &amp;lt;string&amp;gt; existingPORRel = new HashSet &amp;lt;string&amp;gt; ();&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;Item PORRel = this.newItem(&amp;quot;DV_PO_Parts&amp;quot;, &amp;quot;get&amp;quot;);&lt;br /&gt;PORRel.setProperty(&amp;quot;source_id&amp;quot;, porId);&lt;br /&gt;PORRel.setAttribute(&amp;quot;select&amp;quot;, &amp;quot;related_id&amp;quot;);&lt;br /&gt;PORRel = PORRel.apply();&lt;br /&gt;if (!PORRel.isError())&lt;br /&gt;{&lt;br /&gt;for (int i = 0; i &amp;lt; PORRel.getItemCount(); i++)&lt;br /&gt;{&lt;br /&gt;existingPORRel.Add(PORRel.getItemByIndex(i).getProperty(&amp;quot;related_id&amp;quot;));&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;Item RFQfetchRel = this.fetchRelationships(&amp;quot;DV_RFQ_Line&amp;quot;);&lt;br /&gt;Item RFQgetRel = RFQfetchRel.getRelationships(&amp;quot;DV_RFQ_Line&amp;quot;);&lt;br /&gt;for (int j = 0; j &amp;lt; RFQgetRel.getItemCount(); j++)&lt;br /&gt;{&lt;br /&gt;Item RFQOneItem = RFQgetRel.getItemByIndex(j);&lt;br /&gt;string relatedId = RFQOneItem.getProperty(&amp;quot;related_id&amp;quot;);&lt;br /&gt;if (!existingPORRel.Contains(relatedId))&lt;br /&gt;{&lt;br /&gt;Item addPORItem = this.newItem(&amp;quot;DV_PO_Parts&amp;quot;, &amp;quot;add&amp;quot;);&lt;br /&gt;addPORItem.setProperty(&amp;quot;source_id&amp;quot;, porId);&lt;br /&gt;addPORItem.setProperty(&amp;quot;related_id&amp;quot;, relatedId);&lt;br /&gt;addPORItem = addPORItem.apply();&lt;br /&gt;if (addPORItem.isError())&lt;br /&gt;{&lt;br /&gt;return addPORItem;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;// User Aras PLM Identity to promote the RFQ...&lt;br /&gt;Aras.Server.Security.Identity plmIdentity = Aras.Server.Security.Identity.GetByName(&amp;quot;Aras PLM&amp;quot;);&lt;br /&gt;bool PermissionWasSet = Aras.Server.Security.Permissions.GrantIdentity(plmIdentity);&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;try {&lt;br /&gt; string porNum = newPoReq.getProperty(&amp;quot;item_number&amp;quot;, porId);&lt;br /&gt; myRfq.promote(&amp;quot;Accepted&amp;quot;, string.Format(&amp;quot;Accepted on PO Request {0}&amp;quot;, porNum));&lt;br /&gt;}&lt;br /&gt;catch (Exception ex) {&lt;br /&gt; return myInn.newError(ex.ToString());&lt;br /&gt;}&lt;br /&gt;finally {&lt;br /&gt; // Revoke Aras PLM Identity...&lt;br /&gt; if (PermissionWasSet) Aras.Server.Security.Permissions.RevokeIdentity(plmIdentity);&lt;br /&gt;}&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;string mySQL = &amp;quot;UPDATE innovator.[DV_RFQ_SUPPLIER] SET [_po_request_id] = &amp;#39;{0}&amp;#39; WHERE [id] = &amp;#39;{1}&amp;#39;&amp;quot;;&lt;br /&gt;myInn.applySQL(string.Format(mySQL, porId, thisId));&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;return newPoReq;&lt;/p&gt;
&lt;p&gt;I did realize i forgot to mention im calling this server method from a clientside Javascript below. But i dont think this should affect it as the main RFQ and POR gets pulled.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;var thisId = this.getID();&lt;br /&gt;var thisType = this.getType();&lt;br /&gt;var parItem = parent.thisItem;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;// This method refreshes grid...&lt;br /&gt;var refreshMyGrid = function () {&lt;br /&gt; if (parent.document.frames.relationships &amp;amp;&amp;amp; parent.document.frames.relationships.iframesCollection){ &lt;br /&gt; var iFramesCollection = parent.document.frames.relationships.iframesCollection;&lt;br /&gt; iFramesCollection[parent.document.frames.relationships.currTabID].contentWindow.doSearch();&lt;br /&gt; } &lt;br /&gt;};&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;var thisState = parItem.getProperty(&amp;quot;state&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;if (thisState != &amp;quot;Submitted&amp;quot;) {&lt;br /&gt; top.aras.AlertError(&amp;quot;You can only create a PO Request from state &amp;#39;Submitted&amp;#39; (current state = &amp;#39;&amp;quot; + thisState + &amp;quot;&amp;#39;)&amp;quot;);&lt;br /&gt; return this;&lt;br /&gt;}&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;var relItem = this.getRelatedItem();&lt;br /&gt;var vendorName = relItem.getProperty(&amp;quot;name&amp;quot;, &amp;quot;&amp;quot;);&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;if (top.aras.confirm(&amp;quot;Create PO Request using supplier &amp;quot; + vendorName + &amp;quot;?&amp;quot;)) {&lt;br /&gt; var myItem = this.newItem(thisType);&lt;br /&gt; myItem.setID(thisId);&lt;br /&gt; var newPoReq = myItem.apply(&amp;quot;DV_CreatePurchaseRequestSvr&amp;quot;);&lt;br /&gt; if (newPoReq.isError()) {&lt;br /&gt; top.aras.AlertError(newPoReq.getErrorString());&lt;br /&gt; return this;&lt;br /&gt; }&lt;br /&gt; else {&lt;br /&gt; refreshMyGrid();&lt;br /&gt; top.aras.uiShowItemEx(newPoReq.node, &amp;#39;tab view&amp;#39;, true);&lt;br /&gt; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;return this;&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;Wian&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Transferring relationship rows with a C# method</title><link>https://www.aras.com/community/thread/5180?ContentTypeID=1</link><pubDate>Tue, 02 Jun 2020 19:00:47 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:ed59fc1c-c405-40b4-8cfb-eb2281d69ec0</guid><dc:creator>Gopikrishnan</dc:creator><description>&lt;p&gt;&lt;strong&gt;Hi Wian&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Try below method. I have added my code into your method. Validate the highlighted relationship name before running&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Innovator myInn = this.getInnovator();&lt;/p&gt;
&lt;p&gt;string thisId = this.getID();&lt;br /&gt;string thisType = this.getType();&lt;/p&gt;
&lt;p&gt;Item thisItem = myInn.getItemById(thisType, thisId);&lt;/p&gt;
&lt;p&gt;string srcId = thisItem.getProperty(&amp;quot;source_id&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;Item myRfq = myInn.getItemById(&amp;quot;DV_RFQ&amp;quot;, srcId);&lt;br /&gt;if (myRfq == null || myRfq.isError()) {&lt;br /&gt;return myInn.newError(string.Format(&amp;quot;Unable to get RFQ with ID {0}&amp;quot;, srcId));&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;if (myRfq.fetchLockStatus() != 0) {&lt;br /&gt;string rfqNum = myRfq.getProperty(&amp;quot;item_number&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;string lockedBy = myRfq.getPropertyAttribute(&amp;quot;locked_by_id&amp;quot;, &amp;quot;keyed_name&amp;quot;, &amp;quot;?&amp;quot;);&lt;br /&gt;return myInn.newError(string.Format(&amp;quot;RFQ {0} is locked by {1}, please unlock an try again&amp;quot;, rfqNum, lockedBy));&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;// Check we have an attached supplier quotation...&lt;br /&gt;string suppQuoteFileId = thisItem.getProperty(&amp;quot;_supplier_quote_file&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;if (suppQuoteFileId == &amp;quot;&amp;quot;){&lt;br /&gt;return myInn.newError(&amp;quot;You must attach a supplier quotation to the RFQ&amp;quot;);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;//Creates the New POR&lt;/p&gt;
&lt;p&gt;Item newPoReq = this.newItem(&amp;quot;DV_PO_Request&amp;quot;, &amp;quot;add&amp;quot;);&lt;br /&gt;newPoReq.setProperty(&amp;quot;_sage_vendor_id&amp;quot;, thisItem.getRelatedItemID());&lt;br /&gt;newPoReq.setProperty(&amp;quot;_rfq_id&amp;quot;, srcId);&lt;br /&gt;newPoReq.setProperty(&amp;quot;_supplier_quote_file&amp;quot;, suppQuoteFileId);&lt;br /&gt;newPoReq.setProperty(&amp;quot;name&amp;quot;, myRfq.getProperty(&amp;quot;name&amp;quot;, &amp;quot;&amp;quot;));&lt;br /&gt;newPoReq.setProperty(&amp;quot;description&amp;quot;, myRfq.getProperty(&amp;quot;description&amp;quot;, &amp;quot;&amp;quot;));&lt;br /&gt;newPoReq = newPoReq.apply();&lt;/p&gt;
&lt;p&gt;if (newPoReq.isError()) return newPoReq;&lt;br /&gt;string porId = newPoReq.getID();&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;// Add the relationship - Begin&lt;/strong&gt;&lt;br /&gt;HashSet &amp;lt;string&amp;gt; existingPORRel = new HashSet &amp;lt;string&amp;gt; ();&lt;br /&gt;Item PORRel = this.newItem(&amp;quot;&lt;strong&gt;POR Parts&lt;/strong&gt;&amp;quot;, &amp;quot;get&amp;quot;);&lt;br /&gt;PORRel.setProperty(&amp;quot;source_id&amp;quot;, porId);&lt;br /&gt;PORRel.setAttribute(&amp;quot;select&amp;quot;, &amp;quot;related_id&amp;quot;);&lt;br /&gt;PORRel = PORRel.apply();&lt;br /&gt;if (!PORRel.isError())&lt;br /&gt;{&lt;br /&gt; for (int i = 0; i &amp;lt; PORRel.getItemCount(); i++)&lt;br /&gt; {&lt;br /&gt; existingPORRel.Add(PORRel.getItemByIndex(i).getProperty(&amp;quot;related_id&amp;quot;));&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;Item RFQfetchRel = myRfq.fetchRelationships(&amp;quot;&lt;strong&gt;RFQ Parts&lt;/strong&gt;&amp;quot;);&lt;br /&gt;Item RFQgetRel = RFQfetchRel.getRelationships(&amp;quot;&lt;strong&gt;RFQ Parts&lt;/strong&gt;&amp;quot;);&lt;br /&gt;for (int j = 0; j &amp;lt; RFQgetRel.getItemCount(); j++)&lt;br /&gt;{&lt;br /&gt; Item RFQOneItem = RFQgetRel.getItemByIndex(j);&lt;br /&gt; string relatedId = RFQOneItem.getProperty(&amp;quot;related_id&amp;quot;);&lt;br /&gt; if (!existingPORRel.Contains(relatedId))&lt;br /&gt; {&lt;br /&gt; Item addPORItem = this.newItem(&amp;quot;&lt;strong&gt;POR Parts&lt;/strong&gt;&amp;quot;, &amp;quot;add&amp;quot;);&lt;br /&gt; addPORItem.setProperty(&amp;quot;source_id&amp;quot;, porId);&lt;br /&gt; addPORItem.setProperty(&amp;quot;related_id&amp;quot;, relatedId);&lt;br /&gt; addPORItem = addPORItem.apply();&lt;br /&gt; if (addPORItem.isError())&lt;br /&gt; {&lt;br /&gt; return addPORItem;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;// Add the relationship -&amp;nbsp;End&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;// User Aras PLM Identity to promote the RFQ...&lt;br /&gt;Aras.Server.Security.Identity plmIdentity = Aras.Server.Security.Identity.GetByName(&amp;quot;Aras PLM&amp;quot;);&lt;br /&gt;bool PermissionWasSet = Aras.Server.Security.Permissions.GrantIdentity(plmIdentity);&lt;/p&gt;
&lt;p&gt;try {&lt;br /&gt;string porNum = newPoReq.getProperty(&amp;quot;item_number&amp;quot;, porId);&lt;br /&gt;myRfq.promote(&amp;quot;Accepted&amp;quot;, string.Format(&amp;quot;Accepted on PO Request {0}&amp;quot;, porNum));&lt;br /&gt;}&lt;br /&gt;catch (Exception ex) {&lt;br /&gt;return myInn.newError(ex.ToString());&lt;br /&gt;}&lt;br /&gt;finally {&lt;br /&gt;// Revoke Aras PLM Identity...&lt;br /&gt;if (PermissionWasSet) Aras.Server.Security.Permissions.RevokeIdentity(plmIdentity);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;string mySQL = &amp;quot;UPDATE innovator.[DV_RFQ_SUPPLIER] SET [_po_request_id] = &amp;#39;{0}&amp;#39; WHERE [id] = &amp;#39;{1}&amp;#39;&amp;quot;;&lt;br /&gt;myInn.applySQL(string.Format(mySQL, porId, thisId));&lt;/p&gt;
&lt;p&gt;return newPoReq;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thank You&lt;/p&gt;
&lt;p&gt;Gopikrishnan R&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Transferring relationship rows with a C# method</title><link>https://www.aras.com/community/thread/5175?ContentTypeID=1</link><pubDate>Tue, 02 Jun 2020 09:27:44 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:fe12389c-faa1-4657-b2fd-19294851e76e</guid><dc:creator>Wian le Roux</dc:creator><description>&lt;p&gt;Hi Gopikrishnan&lt;/p&gt;
&lt;p&gt;Thanks so much for your reply, appreciate it :)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This is my main method code to take the RFQ details over to the POR, would it be better to run this as a separate method after the POR has been created or can i just add your code to after the POR is created in my method?&lt;/p&gt;
&lt;p&gt;Innovator myInn = this.getInnovator();&lt;/p&gt;
&lt;p&gt;string thisId = this.getID();&lt;br /&gt;string thisType = this.getType();&lt;/p&gt;
&lt;p&gt;Item thisItem = myInn.getItemById(thisType, thisId);&lt;/p&gt;
&lt;p&gt;string srcId = thisItem.getProperty(&amp;quot;source_id&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;Item myRfq = myInn.getItemById(&amp;quot;DV_RFQ&amp;quot;, srcId);&lt;br /&gt;if (myRfq == null || myRfq.isError()) {&lt;br /&gt; return myInn.newError(string.Format(&amp;quot;Unable to get RFQ with ID {0}&amp;quot;, srcId));&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;if (myRfq.fetchLockStatus() != 0) {&lt;br /&gt; string rfqNum = myRfq.getProperty(&amp;quot;item_number&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt; string lockedBy = myRfq.getPropertyAttribute(&amp;quot;locked_by_id&amp;quot;, &amp;quot;keyed_name&amp;quot;, &amp;quot;?&amp;quot;);&lt;br /&gt; return myInn.newError(string.Format(&amp;quot;RFQ {0} is locked by {1}, please unlock an try again&amp;quot;, rfqNum, lockedBy));&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;// Check we have an attached supplier quotation...&lt;br /&gt;string suppQuoteFileId = thisItem.getProperty(&amp;quot;_supplier_quote_file&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;if (suppQuoteFileId == &amp;quot;&amp;quot;){&lt;br /&gt; return myInn.newError(&amp;quot;You must attach a supplier quotation to the RFQ&amp;quot;);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;//Creates the New POR&lt;/p&gt;
&lt;p&gt;Item newPoReq = this.newItem(&amp;quot;DV_PO_Request&amp;quot;, &amp;quot;add&amp;quot;);&lt;br /&gt;newPoReq.setProperty(&amp;quot;_sage_vendor_id&amp;quot;, thisItem.getRelatedItemID());&lt;br /&gt;newPoReq.setProperty(&amp;quot;_rfq_id&amp;quot;, srcId);&lt;br /&gt;newPoReq.setProperty(&amp;quot;_supplier_quote_file&amp;quot;, suppQuoteFileId);&lt;br /&gt;newPoReq.setProperty(&amp;quot;name&amp;quot;, myRfq.getProperty(&amp;quot;name&amp;quot;, &amp;quot;&amp;quot;));&lt;br /&gt;newPoReq.setProperty(&amp;quot;description&amp;quot;, myRfq.getProperty(&amp;quot;description&amp;quot;, &amp;quot;&amp;quot;));&lt;br /&gt;newPoReq = newPoReq.apply();&lt;/p&gt;
&lt;p&gt;if (newPoReq.isError()) return newPoReq;&lt;br /&gt;string porId = newPoReq.getID();&lt;/p&gt;
&lt;p&gt;// User Aras PLM Identity to promote the RFQ...&lt;br /&gt;Aras.Server.Security.Identity plmIdentity = Aras.Server.Security.Identity.GetByName(&amp;quot;Aras PLM&amp;quot;);&lt;br /&gt;bool PermissionWasSet = Aras.Server.Security.Permissions.GrantIdentity(plmIdentity);&lt;/p&gt;
&lt;p&gt;try {&lt;br /&gt; string porNum = newPoReq.getProperty(&amp;quot;item_number&amp;quot;, porId);&lt;br /&gt; myRfq.promote(&amp;quot;Accepted&amp;quot;, string.Format(&amp;quot;Accepted on PO Request {0}&amp;quot;, porNum));&lt;br /&gt;}&lt;br /&gt;catch (Exception ex) {&lt;br /&gt; return myInn.newError(ex.ToString());&lt;br /&gt;}&lt;br /&gt;finally {&lt;br /&gt; // Revoke Aras PLM Identity...&lt;br /&gt; if (PermissionWasSet) Aras.Server.Security.Permissions.RevokeIdentity(plmIdentity);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;string mySQL = &amp;quot;UPDATE innovator.[DV_RFQ_SUPPLIER] SET [_po_request_id] = &amp;#39;{0}&amp;#39; WHERE [id] = &amp;#39;{1}&amp;#39;&amp;quot;;&lt;br /&gt;myInn.applySQL(string.Format(mySQL, porId, thisId));&lt;/p&gt;
&lt;p&gt;return newPoReq;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Wian&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Transferring relationship rows with a C# method</title><link>https://www.aras.com/community/thread/5174?ContentTypeID=1</link><pubDate>Tue, 02 Jun 2020 02:11:51 GMT</pubDate><guid isPermaLink="false">916d3f7e-8ddc-42f8-8d45-380822f51406:87e9822e-d0f0-4aa1-9b9a-4182f8774c22</guid><dc:creator>Gopikrishnan</dc:creator><description>&lt;p&gt;&lt;strong&gt;Hi Wian le Roux&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can add below code in your action C# method to copy the relationship from RFQ to POR&lt;/p&gt;
&lt;p&gt;This method will validate whether POR already has that relationship part or not and add if it does not exist.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;To Change in method :&lt;/p&gt;
&lt;p&gt;1. Source ID is hard coded but you need to pass the POR ID which you might have got while copying the RFQ to POR form information.&lt;/p&gt;
&lt;p&gt;2. Validate the relationship names (RFQ Parts and POR Parts - highlighted below)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;HashSet &amp;lt;string&amp;gt; existingPORRel = new HashSet &amp;lt;string&amp;gt; ();&lt;br /&gt;&lt;strong&gt;string sourceId = &amp;quot;DB2B0131FD70498BB456074471382EEA&amp;quot;; // POR ID to which the relationship to be copied&lt;/strong&gt;&lt;br /&gt;Item PORRel = this.newItem(&amp;quot;&lt;strong&gt;POR Parts&lt;/strong&gt;&amp;quot;, &amp;quot;get&amp;quot;);&lt;br /&gt;PORRel.setProperty(&amp;quot;source_id&amp;quot;, sourceId);&lt;br /&gt;PORRel.setAttribute(&amp;quot;select&amp;quot;, &amp;quot;related_id&amp;quot;);&lt;br /&gt;PORRel = PORRel.apply();&lt;br /&gt;if (!PORRel.isError())&lt;br /&gt;{&lt;br /&gt; for (int i = 0; i &amp;lt; PORRel.getItemCount(); i++)&lt;br /&gt; {&lt;br /&gt; existingPORRel.Add(PORRel.getItemByIndex(i).getProperty(&amp;quot;related_id&amp;quot;));&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;Item RFQfetchRel = this.fetchRelationships(&amp;quot;&lt;strong&gt;RFQ Parts&lt;/strong&gt;&amp;quot;);&lt;br /&gt;Item RFQgetRel = RFQfetchRel.getRelationships(&amp;quot;&lt;strong&gt;RFQ Parts&lt;/strong&gt;&amp;quot;);&lt;br /&gt;for (int j = 0; j &amp;lt; RFQgetRel.getItemCount(); j++)&lt;br /&gt;{&lt;br /&gt; Item RFQOneItem = RFQgetRel.getItemByIndex(j);&lt;br /&gt; string relatedId = RFQOneItem.getProperty(&amp;quot;related_id&amp;quot;);&lt;br /&gt; if (!existingPORRel.Contains(relatedId))&lt;br /&gt; {&lt;br /&gt; Item addPORItem = this.newItem(&amp;quot;&lt;strong&gt;POR Parts&lt;/strong&gt;&amp;quot;, &amp;quot;add&amp;quot;);&lt;br /&gt; addPORItem.setProperty(&amp;quot;source_id&amp;quot;, sourceId);&lt;br /&gt; addPORItem.setProperty(&amp;quot;related_id&amp;quot;, relatedId);&lt;br /&gt; addPORItem = addPORItem.apply();&lt;br /&gt; if (addPORItem.isError())&lt;br /&gt; {&lt;br /&gt; return addPORItem;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;return this;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thank You&lt;/p&gt;
&lt;p&gt;Gopikrishnan R&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>