通过逻辑挂钩我在保存发票后尝试更新我的产品的字段。
到目前为止我所了解的是,我需要获得与AOS_Products_Quotes相关的发票,然后我可以从中获取产品,更新所需字段并保存产品。听起来不错吗?
正在触发逻辑钩子但是关系不会被加载。
function decrement_stocks ( $bean, $event, $arguments) {
//$bean->product_value_c = $bean->$product_unit_price * $bean->product_qty;
$file = 'custom/modules/AOS_Invoices/decrement.txt';
// Get the Invoice ID:
$sInvoiceID = $bean->id;
$oInvoice = new AOS_Invoices();
$oInvoice->retrieve($sInvoiceID);
$oInvoice->load_relationship('aos_invoices_aos_product_quotes');
$aProductQuotes = $oInvoice->aos_invoices_aos_product_quotes->getBeans();
/*
$aLineItemslist = array();
foreach ($oInvoice->aos_invoices_aos_product_quotes->getBeans() as $lineitem) {
$aLineItemslist[$lineitem->id] = $lineitem;
}
*/
$sBean = var_export($bean, true);
$sInvoice = var_export($oInvoice, true);
$sProductQuotes = var_export($aProductQuotes, true);
$current = $sProductQuotes . "\n\n\n------\n\n\n" . $sInvoice . "\n\n\n------\n\n\n" . $sBean;
file_put_contents($file, $current);
}
正在检索发票。但是load_relationship
要么做任何事情($ sInvoice不论是否有变化),$aProductQuotes
都是空的。
我正在使用SuiteCRM 7.8.3并在7.9.1上尝试过,但没有成功。我做错了什么?
答案 0 :(得分:0)
我不熟悉SuiteCRM细节,但我总是建议检查:
retrieve():bean或 null 的返回值? 如果 null ,则找不到具有给定ID的bean。 在这种情况下,$ oInvoice将保持空白(你的评论表明这不是这里的情况)
load_relationship()的返回值: true (成功)或 false (失败,检查日志)
我确实想知道,为什么不使用$ bean?
相反,您似乎收到了$ bean的另一个副本/引用(并称之为$ oInvoice)?为什么? 或者你的意思是收到一个不同类型的 bean,它以某种方式连接到$ bean?
然后肯定没有与$ bean相同的 id ,除非你用那种方式专门编码。