thanks<br><br><div class="gmail_quote">2012/9/25 Adam Heinz <span dir="ltr"><<a href="mailto:amh@metricwise.net" target="_blank">amh@metricwise.net</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
If you look at Quotes->save_module() [1], you'll see that it calls<br>
saveInventoryProductDetails() [2]. This function has poor<br>
encapsulation and pulls directly from the $_REQUEST super global. It<br>
deletes all existing rows and recreates them from request data. There<br>
is no function to add or delete an individual<br>
vtiger_inventoryproductrel row.<br>
<br>
[1] <a href="http://trac.vtiger.com/cgi-bin/trac.cgi/browser/vtigercrm/branches/5.4.0/modules/Quotes/Quotes.php#L118" target="_blank">http://trac.vtiger.com/cgi-bin/trac.cgi/browser/vtigercrm/branches/5.4.0/modules/Quotes/Quotes.php#L118</a><span onmouseout="cancel = false; window.setTimeout(WRCHideContent, 1000); clearTimeout(showTimer);" onmouseover=" var self = this; showTimer = window.setTimeout(function(){WRCShowContent({'rating':{'value':-1,'weight':-1},'flags':{'shopping':null,'social':null,'news':null,'it':null,'corporate':null,'pornography':null,'violence':null,'gambling':null,'drugs':null,'illegal':null},'single':true,'ttl':null}, self.className)},600);" class="wrc0" style="padding-right:16px;width:16px;height:16px"></span><br>
[2] <a href="http://trac.vtiger.com/cgi-bin/trac.cgi/browser/vtigercrm/branches/5.4.0/include/utils/InventoryUtils.php#L512" target="_blank">http://trac.vtiger.com/cgi-bin/trac.cgi/browser/vtigercrm/branches/5.4.0/include/utils/InventoryUtils.php#L512</a><span onmouseout="cancel = false; window.setTimeout(WRCHideContent, 1000); clearTimeout(showTimer);" onmouseover=" var self = this; showTimer = window.setTimeout(function(){WRCShowContent({'rating':{'value':-1,'weight':-1},'flags':{'shopping':null,'social':null,'news':null,'it':null,'corporate':null,'pornography':null,'violence':null,'gambling':null,'drugs':null,'illegal':null},'single':true,'ttl':null}, self.className)},600);" class="wrc0" style="padding-right:16px;width:16px;height:16px"></span><br>
<div><div class="h5"><br>
On Tue, Sep 25, 2012 at 3:59 AM, Mario <<a href="mailto:malcangi.ts@gmail.com">malcangi.ts@gmail.com</a>> wrote:<br>
> someone knows please tell me how vtiger handles methods for adding products in<br>
> the invoices / estimates?<br>
><br>
> _______________________________________________<br>
> <a href="http://www.vtiger.com/" target="_blank">http://www.vtiger.com/</a><span onmouseout="cancel = false; window.setTimeout(WRCHideContent, 1000); clearTimeout(showTimer);" onmouseover=" var self = this; showTimer = window.setTimeout(function(){WRCShowContent({'rating':{'value':-1,'weight':-1},'flags':{'shopping':null,'social':null,'news':null,'it':null,'corporate':null,'pornography':null,'violence':null,'gambling':null,'drugs':null,'illegal':null},'single':true,'ttl':null}, self.className)},600);" class="wrc0" style="padding-right:16px;width:16px;height:16px"></span><br>
</div></div>_______________________________________________<br>
<a href="http://www.vtiger.com/" target="_blank">http://www.vtiger.com/</a><span onmouseout="cancel = false; window.setTimeout(WRCHideContent, 1000); clearTimeout(showTimer);" onmouseover=" var self = this; showTimer = window.setTimeout(function(){WRCShowContent({'rating':{'value':-1,'weight':-1},'flags':{'shopping':null,'social':null,'news':null,'it':null,'corporate':null,'pornography':null,'violence':null,'gambling':null,'drugs':null,'illegal':null},'single':true,'ttl':null}, self.className)},600);" class="wrc0" style="padding-right:16px;width:16px;height:16px"></span><br>
</blockquote></div><br>