我正在使用 SugarCRM Pro 6.5.5
我需要创建报价并使用 REST API 将产品添加到其中。所有 bundle > 教授 set_entry
的工作,以及 ProductBoducts 的 set_relationship
工作正常。但是,set_relationship
对于 Quotes > ProductBundles 不起作用。
这是我对 ProductBundles > 产品的输入:这很好用
{
"session":"5qklti658f0ooou135vt8fkbi4",
"module":"ProductBundles",
"module_id":"50b71673-b555-9d68-04c9-508ef9582f47",
"link_field_name":"products",
"related_ids":[
"a9615ab1-cd89-1549-f9b8-508f00c6fa84"
]
}
这是我对 Quotes > ProductBundles 的输入:这不起作用
{
"session":"jqodi1pu8u2l8basca1hhcbt27",
"module":"Quotes",
"module_id":"bc01a88a-35c9-25ed-dfac-508ef206a264",
"link_field_name":"product_bundles",
"related_ids":[
"50b71673-b555-9d68-04c9-508ef9582f47"
]
}
但它仍然返回:
{
"created":1,
"failed":0,
"deleted":0
}
但是,product_bundle_quote
表中没有创建任何记录。
我深入研究了 Sugar 代码,发现了一些有趣的东西。
在 service/core/SoapHelperWebService.php
的第 735 行,是这样的:
$mod->$link_field_name->add($related_ids, $name_value_pair);
它调用文件 data/Relationships/M2MRelationship.php
第 118 行中的 add
方法。有趣的是,$lhsLinkName
为 NULL,即导致该方法返回 false。这是一个片段:
public function add($lhs, $rhs, $additionalFields = array())
{
$lhsLinkName = $this->lhsLink;
$rhsLinkName = $this->rhsLink;
if (empty($lhs->$lhsLinkName) && !$lhs->load_relationship($lhsLinkName))
{
$lhsClass = get_class($lhs);
$GLOBALS['log']->fatal("could not load LHS $lhsLinkName in $lhsClass");
return false;
}
if (empty($rhs->$rhsLinkName) && !$rhs->load_relationship($rhsLinkName))
{
$rhsClass = get_class($rhs);
$GLOBALS['log']->fatal("could not load RHS $rhsLinkName in $rhsClass");
return false;
}
它在第一个 if()
block 中返回 FALSE,这意味着该记录从未创建。
此外,这也显示在我的日志中:
[2139][1][FATAL] 无法在 ProductBundle 中加载 LHS
所以是的,我被困在这里了。我尝试搜索所有可能的内容,包括错误,但没有找到任何有用的内容。
最佳答案
这是一个 Sugar 错误,将在 6.7 版本中修复。同时,请查看此论坛帖子以获取代码修复。
http://forums.sugarcrm.com/f6/create-quote-line-items-web-service-api-83183/
关于php - SugarCRM REST API set_relationship 之间的报价和产品包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13142505/