1

ここにいる誰かが NetSuite の経験を持っていることを願っています! 販売注文を取得するために、Netsuite Web サービスを介して保存済み検索にアクセスしています。何らかの理由で、注文の商品は次のようになります。

[item] => Array
    (
        [0] => SearchColumnSelectField Object
            (
                [searchValue] => RecordRef Object
                    (
                        [internalId] => 1088
                        [externalId] => 
                        [type] => 
                        [name] => 
                    )

画面に保存された検索で製品が正しく表示されていても、製品コードではなく internalId が表示されます。ここから製品コードを取得するにはどうすればよいですか?

4

3 に答える 3

1

間違った列を選択しているか、テキストまたは itemfield:name ではなくフィールド値を検索しています。回答を編集し、見つけ次第追加します。これは、suitscript を使用した私の ns の経験からのものです。

私が見るリファレンスドキュメントを使用して: TRX概要フィールドの投稿:

<complexType name="PostingTransactionSummaryField"> <sequence> <element name="period" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> <element name="account" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> <element name="parentItem" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> <element name="item" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> <element name="entity" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> <element name="department" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> <element name="class" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> <element name="location" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> <element name="subsidiary" type="xsd:boolean" minOccurs="0" maxOccurs="1"/> </sequence> </complexType>

または参照ドキュメントを使用する: GetPostingTransactionSummaryResult:

<complexType name="GetPostingTransactionSummaryResult"> <sequence> <element ref="platformCore:status" minOccurs="1" maxOccurs="1"/> <element name="totalRecords" type="xsd:int" minOccurs="0"/> <element name="pageSize" type="xsd:int" minOccurs="0"/> <element name="totalPages" type="xsd:int" minOccurs="0"/> <element name="pageIndex" type="xsd:int" minOccurs="0"/> <element name="postingTransactionSummaryList" type="platformCore:PostingTransactionSummaryList" minOccurs="0" maxOccurs="1"/> </sequence> </complexType>

別の無関係なトピックで、私はこれを見つけました:

Web サービス コンテキストの指定 Web サービス
と UI でフォームの動作が異なるようにするには、次のいずれかを実行できます。

コンテキスト固有の SuiteScript コードを記述し、nlapiGetContext 関数を使用してコードを分岐する

Web サービスで SuiteScript を無効にする

ただし、クライアントとサーバーの両方の SuiteScript は、NetSuite 内でレコードが作成または更新されるメカニズムに関係なく、適用する必要があるカスタマイズされたビジネス ルールを適用するように記述されています。これは特に、SuiteCloud パートナー アプリケーションを展開し、ビジネス ルールを引き続き尊重したいお客様に当てはまります。Client SuiteScript には、多くの場合、ユーザーの操作が必要であり、Web サービスの呼び出し中に自動的に実行できないブラウザ固有の動作があるため、NetSuite では、Client SuiteScript を無効にして、すべての場合に適用する必要があるビジネス条件に対して Server SuiteScript を展開することをお勧めします。

Server SuiteScript が Web サービスの呼び出し中に実行されないように指定するには、[設定] > [統合] > [Web サービス] の [Web サービス設定] ページで [サーバー側スクリプトを無効にする] 設定を有効にします。

重要:
Web サービスを介して送信されたデータが、Server SuiteScript を介して実行される可能性のあるカスタム ビジネス ロジックおよびワークフローに準拠する必要がない場合にのみ、この設定を有効にしてください。


于 2013-06-15T10:14:10.690 に答える
0

検索設定で bodyFieldsOnly を FALSE に設定します。

$NSservice = new NetSuiteService();
$NSservice->setSearchPreferences(false, 100, true);
于 2013-07-07T13:53:25.067 に答える
0
<?php
$order_date = date('Y-m-d H:i:s');

    // create array of fields
    $itemArr = array();
    $i = 0;
    foreach($order_items_product as $keyProduct =>$valueProduct){
        //if you not have internal id of item in netsuuite then please add the item in the netsuite and try.
        $netsuiteItemId = 'Your Item Internal id Which is in the Netsuite Item';

        $itemArr[$i]['item']['internalId'] = $netsuiteItemId;
        $itemArr[$i]['quantity'] = $valueProduct['qty'];
        $i++;
    }

    if (!define('LF', "\n")) {
        define('LF', "\n");
    }

     /* for use in formatting custom addresses since NetSuite converts to <br> */
    //Billing Address Information
    /* this example has the customer address info in a db record, just pulled into $row */
    $billAddress = stripslashes($order->order_custom_fields['_billing_first_name'][0]) . ' ' . $order->order_custom_fields['_billing_last_name'][0] . LF;
    $billAddress .= stripslashes($order->order_custom_fields['_billing_address_1'][0]).LF;
    $billAddress .= stripslashes($order->order_custom_fields['_billing_address_2'][0]).LF;
    $billAddress .= stripslashes($order->order_custom_fields['_billing_country'][0]).LF;
    $billAddress .= stripslashes($order->order_custom_fields['_billing_state'][0]) . ' - ' . $order->order_custom_fields['_billing_postcode'][0] . ', ' . LF;
    $billAddress .= $order->order_custom_fields['_billing_phone'][0] . ', ' . $order->order_custom_fields['_billing_email'][0];

    //Shipping Address Information
    $shipAddress = stripslashes($order->order_custom_fields['_shipping_first_name'][0]) . ' ' . $order->order_custom_fields['_shipping_last_name'][0] . LF;
    $shipAddress .= stripslashes($order->order_custom_fields['_shipping_address_1'][0]).LF;
    $shipAddress .= stripslashes($order->order_custom_fields['_shipping_address_2'][0]).LF;
    $shipAddress .= stripslashes($order->order_custom_fields['_shipping_city'][0]).LF;
    $shipAddress .= stripslashes($order->order_custom_fields['_shipping_state'][0]) . ', ' . $order->order_custom_fields['_shipping_postcode'][0] . ', ' . LF;
    $shipAddress .= $order->order_custom_fields['_billing_phone'][0] .', '. $order->order_custom_fields['_billing_email'][0];


    $purchaseOrderFields = array (
                        'entity' => array ('internalId' => $internal_Id, 'type' => 'customer'),
                        'shippingCost' => $order->order_shipping,
                        'shipMethod' => $order->payment_method,
                        'toBeEmailed' => true,
                        //'tranId' => $order->order_custom_fields['Transaction ID'][0],
                        //'tranDate' => date('Y-m-d H:i:s'),
                        'source' => 'littlecrate',
                        'createdFrom' => 'littlecrate.com',
                        'discountRate' => $order->order_custom_fields['_order_discount'][0],
                        'taxRate' => $order->order_custom_fields['_order_tax'][0],
                        'email' => $order->billing_email,
                        //'shipDate' => date('Y-m-d H:i:s'),
                        'shipMethod' => $order->shipping_method,
                        'shippingCost' => $order->order_shipping,
                        'shippingTax1Rate' => $order->order_shipping_tax,
                        'paymentMethod' => $order->payment_method,
                        //'taxTotal' => $order->order_tax,
                        //'total' => $order->order_total,
                        'billAddress' => $billAddress,
                        'shipAddress' => $shipAddress,
                        'itemList' => array (
                                                'item' => $itemArr
                                            )
                                );

    $salesOrder = new nsComplexObject('SalesOrder');

    $salesOrder ->setFields($purchaseOrderFields);

    $addResponse = $myNSclient->add($salesOrder );
    if (!$addResponse->isSuccess) {
        echo "Order Information is Not Inserted Into The Netsuite. Please Contact to Administration."; 
        exit;
    } 

    ?>
于 2013-07-17T12:40:04.937 に答える