SugarCRM Pro 6.5.5 を使用しています
見積もりを作成し、REST API を使用してそれに製品を追加する必要があります。すべてのバンドル > Profset_entry
の作業、およびset_relationship
ProductBoducts の は正常に動作します。ただし、set_relationship
Quotes > ProductBundles の場合は機能しません。
ProductBundles > Products に対する私の入力は次のとおりです。これは正常に機能します
{
"session":"5qklti658f0ooou135vt8fkbi4",
"module":"ProductBundles",
"module_id":"50b71673-b555-9d68-04c9-508ef9582f47",
"link_field_name":"products",
"related_ids":[
"a9615ab1-cd89-1549-f9b8-508f00c6fa84"
]
}
見積もり > 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);
118 行目add
でファイル内のメソッドを呼び出します。興味深いことに、は NULL であり、メソッドは false を返します。ここにスニペットがあります:data/Relationships/M2MRelationship.php
$lhsLinkName
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()
最初のブロックでFALSE を返します。これは、レコードが作成されないことを意味します。
また、これは私のログに表示されます:
[2139][1][FATAL] could not load LHS in ProductBundle
そうそう、私はここで立ち往生しています。エラーを含め、できる限りすべてを検索してみましたが、役立つものは見つかりませんでした。