2

SugarCRM Pro 6.5.5 を使用しています

見積もりを作成し、REST API を使用してそれに製品を追加する必要があります。すべてのバンドル > Profset_entryの作業、およびset_relationshipProductBoducts の は正常に動作します。ただし、set_relationshipQuotes > 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.php735行目で、これは次のとおりです。

$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

そうそう、私はここで立ち往生しています。エラーを含め、できる限りすべてを検索してみましたが、役立つものは見つかりませんでした。

4

4 に答える 4

1

見積も製品にリンクする必要があります。引用符 vardef に次があることを確認してください。

'products' =>
    array (
      'name' => 'products',
      'type' => 'link',
      'relationship' => 'quote_products',
      'vname' => 'LBL_PRODUCTS',
      'source'=>'non-db',
),

Webサービスで、見積もりと製品の関係を設定します

{
    "session":$session_id,
    "module":"Quotes",
    "module_id":$quote_id,
    "link_field_name":"products",
    "related_ids":[
       $product_id 
    ]
}

わたしにはできる。

于 2013-09-23T03:51:25.027 に答える
1

私は同じ問題を抱えていましたが、解決するために、以下のコードを製品バンドル vardef に追加したところ、正常に動作し始めました。

'quotes' =>
    array (

     'name' => 'quotes',
     'type' => 'link',
     'vname'=>'LBL_PRODUCT_BUNDLES',
     'relationship' => 'product_bundle_quote',
     'source'=>'non-db',

),

ありがとう!

于 2013-08-05T10:08:16.483 に答える
1

これはシュガーバグであることが判明しましたが、他の回答のも​​のではありません. 実際には、バグ 32064に関連しています。彼らは、正式に対処される予定のリリース 6.7 より前に、アップロードしてアクティブ化できるカスタム モジュールを提供してくれました。時間枠にもよりますが、この回避策については、SugarCRM に直接問い合わせることをお勧めします。

于 2013-03-14T17:36:28.817 に答える
1

これは Sugar のバグであり、6.7 リリースで修正される予定です。それまでの間、このフォーラムの投稿でコードの修正を確認してください。

http://forums.sugarcrm.com/f6/create-quote-line-items-web-service-api-83183/

于 2012-11-02T14:26:08.717 に答える