<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://sugarclub.sugarcrm.com/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>What is the best way to catch ALL edits on Approved record?</title><link>https://sugarclub.sugarcrm.com/dev-club/f/questions-answers/827/what-is-the-best-way-to-catch-all-edits-on-approved-record</link><description>I have a need to warn the user that they are editing an &amp;quot;Approved&amp;quot; custom record, or one of its related custom records, and allow them to proceed if they so choose, get out without changing anything if they don&amp;#39;t. How do I catch any and all attempts to</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: What is the best way to catch ALL edits on Approved record?</title><link>https://sugarclub.sugarcrm.com/thread/3233?ContentTypeID=1</link><pubDate>Wed, 18 Jan 2017 14:50:21 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:7b1decd3-6c54-4ed5-a1fd-89010a29b626</guid><dc:creator>Francesca Shiekh</dc:creator><description>&lt;p&gt;I have separate solutions for subpanel:&amp;nbsp;&lt;a href="https://community.sugarcrm.com/thread/29540-quick-tip-request-confirmation-for-subpanel-inline-edit-based-on-parent-value"&gt;Quick tip: request confirmation for subpanel inline edit based on parent value&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;And for record view where I check the Approval status in the handleEdit:&lt;/p&gt;&lt;pre class="language-javascript line-numbers"&gt;&lt;code&gt;&amp;nbsp; handleEdit&lt;span class="punctuation token"&gt;:&lt;/span&gt; &lt;span class="keyword token"&gt;function&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;e&lt;span class="punctuation token"&gt;,&lt;/span&gt; cell&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="keyword token"&gt;this&lt;/span&gt;&lt;span class="punctuation token"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;_super&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;&lt;span class="string token"&gt;&amp;#39;handleEdit&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt;&lt;span class="punctuation token"&gt;[&lt;/span&gt;e&lt;span class="punctuation token"&gt;,&lt;/span&gt; cell&lt;span class="punctuation token"&gt;]&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="keyword token"&gt;this&lt;/span&gt;&lt;span class="punctuation token"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;checkApprovalStatus&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span class="punctuation token"&gt;}&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt;&lt;br /&gt;&amp;nbsp; checkApprovalStatus&lt;span class="punctuation token"&gt;:&lt;/span&gt; &lt;span class="keyword token"&gt;function&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="keyword token"&gt;var&lt;/span&gt; self &lt;span class="operator token"&gt;=&lt;/span&gt; &lt;span class="keyword token"&gt;this&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isSysAdmin &lt;span class="operator token"&gt;=&lt;/span&gt; &lt;span class="punctuation token"&gt;(&lt;/span&gt;app&lt;span class="punctuation token"&gt;.&lt;/span&gt;user&lt;span class="punctuation token"&gt;.&lt;/span&gt;&lt;span class="keyword token"&gt;get&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;&lt;span class="string token"&gt;&amp;#39;type&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt; &lt;span class="operator token"&gt;==&lt;/span&gt; &lt;span class="string token"&gt;&amp;#39;admin&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; approval_status &lt;span class="operator token"&gt;=&lt;/span&gt; self&lt;span class="punctuation token"&gt;.&lt;/span&gt;model&lt;span class="punctuation token"&gt;.&lt;/span&gt;&lt;span class="keyword token"&gt;get&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;&lt;span class="string token"&gt;&amp;#39;contract_approval_status_c&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="keyword token"&gt;if&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;approval_status &lt;span class="operator token"&gt;==&lt;/span&gt; &lt;span class="string token"&gt;&amp;#39;Approved&amp;#39;&lt;/span&gt; &lt;span class="operator token"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="operator token"&gt;!&lt;/span&gt;isSysAdmin&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; app&lt;span class="punctuation token"&gt;.&lt;/span&gt;alert&lt;span class="punctuation token"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;show&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;&lt;span class="string token"&gt;&amp;#39;editing_approved&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt; &lt;span class="punctuation token"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; level&lt;span class="punctuation token"&gt;:&lt;/span&gt; &lt;span class="string token"&gt;&amp;#39;confirmation&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; messages&lt;span class="punctuation token"&gt;:&lt;/span&gt; &lt;span class="string token"&gt;&amp;#39;Contract already Approved, Confirm to Save Changes and reset Approval Status&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; autoClose&lt;span class="punctuation token"&gt;:&lt;/span&gt; &lt;span class="keyword token"&gt;false&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; onConfirm&lt;span class="punctuation token"&gt;:&lt;/span&gt; &lt;span class="keyword token"&gt;function&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;evt&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self&lt;span class="punctuation token"&gt;.&lt;/span&gt;model&lt;span class="punctuation token"&gt;.&lt;/span&gt;&lt;span class="keyword token"&gt;set&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;&lt;span class="string token"&gt;&amp;#39;contract_approval_status_c&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt; &lt;span class="string token"&gt;&amp;#39;Reset&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="comment token"&gt;//user does not have permissiont to set these so this is just a visual, the actual reset happens in the logic hook&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="comment token"&gt;//ToDo: find a better way&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self&lt;span class="punctuation token"&gt;.&lt;/span&gt;model&lt;span class="punctuation token"&gt;.&lt;/span&gt;&lt;span class="keyword token"&gt;set&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;&lt;span class="string token"&gt;&amp;#39;manager_approval_c&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt; &lt;span class="string token"&gt;&amp;#39;NA&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self&lt;span class="punctuation token"&gt;.&lt;/span&gt;model&lt;span class="punctuation token"&gt;.&lt;/span&gt;&lt;span class="keyword token"&gt;set&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;&lt;span class="string token"&gt;&amp;#39;legal_approval_c&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt; &lt;span class="string token"&gt;&amp;#39;NA&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self&lt;span class="punctuation token"&gt;.&lt;/span&gt;model&lt;span class="punctuation token"&gt;.&lt;/span&gt;&lt;span class="keyword token"&gt;set&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;&lt;span class="string token"&gt;&amp;#39;finance_approval_c&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt; &lt;span class="string token"&gt;&amp;#39;NA&amp;#39;&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="comment token"&gt;//self.model.save();&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="punctuation token"&gt;}&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; onCancel&lt;span class="punctuation token"&gt;:&lt;/span&gt; &lt;span class="keyword token"&gt;function&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self&lt;span class="punctuation token"&gt;.&lt;/span&gt;&lt;span class="token function"&gt;handleCancel&lt;/span&gt;&lt;span class="punctuation token"&gt;(&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="punctuation token"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="punctuation token"&gt;}&lt;/span&gt;&lt;span class="punctuation token"&gt;)&lt;/span&gt;&lt;span class="punctuation token"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="punctuation token"&gt;}&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span class="punctuation token"&gt;}&lt;/span&gt;&lt;span class="punctuation token"&gt;,&lt;/span&gt;&lt;span class="line-numbers-rows"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I still have a problem with ACL not resetting the values (the user&amp;#39;s role only has read permissions) so I have to play tricks with the logic hook and do a direct database update - which I don&amp;#39;t like.&lt;/p&gt;&lt;p&gt;I use the contract_approval_status_c = &amp;#39;Reset&amp;#39; to determine when to change the *_approval_c values in the hook&lt;/p&gt;&lt;p&gt;See:&amp;nbsp;&lt;span&gt;The specified item was not found.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;HTH&lt;/p&gt;&lt;p&gt;FrancescaS&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the best way to catch ALL edits on Approved record?</title><link>https://sugarclub.sugarcrm.com/thread/3234?ContentTypeID=1</link><pubDate>Thu, 27 Oct 2016 17:50:03 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:5b83367e-4bf4-4f7b-aef2-60fff1eacc50</guid><dc:creator>Francesca Shiekh</dc:creator><description>&lt;p&gt;Best suggestion so far, by &lt;a href="https://sugarclub.sugarcrm.com/members/amagana"&gt;Angel Magana&lt;/a&gt; :&amp;nbsp;&lt;span style="color:#292f33;background-color:#f5f8fa;"&gt;this.model.hasChanged()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Still looking for a way to warn before they make changes.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the best way to catch ALL edits on Approved record?</title><link>https://sugarclub.sugarcrm.com/thread/3232?ContentTypeID=1</link><pubDate>Thu, 27 Oct 2016 07:34:50 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:708f9072-00f6-42b6-aa87-ae42037de736</guid><dc:creator>Sayad Sharif</dc:creator><description>&lt;p&gt;Madam once you are done with this plz do post your answer and also reference link which halped you to sort out.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>