在SuiteCRM中的Invoice逻辑挂钩中获取行项目

时间:2017-06-17 08:54:11

标签: sugarcrm suitecrm

通过逻辑挂钩我在保存发票后尝试更新我的产品的字段。

到目前为止我所了解的是,我需要获得与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上尝试过,但没有成功。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我不熟悉SuiteCRM细节,但我总是建议检查:

  • retrieve():bean或 null 的返回值? 如果 null ,则找不到具有给定ID的bean。 在这种情况下,$ oInvoice将保持空白(你的评论表明这不是这里的情况)

  • load_relationship()的返回值: true (成功)或 false (失败,检查日志)

我确实想知道,为什么不使用$ bean?

相反,您似乎收到了$ bean的另一个副本/引用(并称之为$ oInvoice)?为什么? 或者你的意思是收到一个不同类型的 bean,它以某种方式连接到$ bean?

然后肯定没有与$ bean相同的 id ,除非你用那种方式专门编码。