2011-01-13 8 views
8

Netsuite에 대한 설명서는 매우 부족합니다. 기본 사항을 다루고 나서 느슨하게 탐색 할 수 있도록합니다. php 툴킷을 사용하려고하는 PHP에 대한 많은 지식이없는 사람이라면 누구나 자비를 구걸하는 무릎을 꿇을 것입니다.Netsuite : 판매 주문에 사용자 지정 필드를 연결하는 방법

이 전체 프로젝트의 어느 시점에서든지 흔적과 오류가 발생했으며 작업 시작 전까지는 모든 것을 이해하려고했습니다.

판매 주문에 맞춤 입력란을 할당하는 데 어려움을 겪고 있습니다. 객체의 객체가되어야한다는 것을 알고 있습니다. XML에서 비누를 가져 가기 위해 XML을 계단식으로 사용할 수 있지만 무엇으로 무엇을 뭐?

어딘가에 있지만 작동하는 일부 코드가 있지만 올바른 RecordRef 형식이 아니라고 불평하고 있습니다. 누군가 Netsuite와 일하면서 내 머리카락을 꺼내기 전에 제게 지식을 빌려주세요.

미리 감사드립니다.

코드 :

$customFields = array('internalId' => 'custbody_new_die_yn','value' => array('name' => 'custbody_new_die_yn','internalId' => 'NO')); 
$customObject = new nsComplexObject("SelectCustomFieldRef"); 
$customObject->setFields($customFields); 

$salesOrderFields = array(

    'entity'  => new nsRecordRef(array('internalId' => $userId)), 
    'paymentMethod' => array('internalId' => 8), 
    'ccNumber'  => 4111111111111111, 
    'ccExpireDate' => date("c", mktime(0,0,0,11,1,2011)), 
    'ccName'  => 'Test Testerson', 
    'itemList' => array(
     'item' => array(
      'item'  => array('internalId' => 5963), 
      'quantity' => 5 
     ) 
    ), 
    'department' => new nsRecordRef(array('internalId' => 1)), 
    'class' => new nsRecordRef(array('internalId' => 47)), 
    'customFieldList' => $customObject 
); 
+0

Axis에서 생성 한 인터페이스를 사용하여 Java에서 Netsuite 웹 서비스 상호 작용을 프로토 타입 화하여 SOAP 쿼리를 올바르게 작성하는 방법을 찾아야한다는 것을 알게되었습니다. 자바로 작업 한 후에 만 ​​PHP 툴킷으로 변환하려고합니다. 가능한 한 언제나 netsuite로 PHP를 피하십시오. – Craig

답변

11

내가 Netsuite의와 PHP를 사용하여 익숙하지 오전하지만 C#을/그물 Netsuite의 작업의 좋은 금액을 했어요.. Craig가 언급했듯이 Visual Studio에서 생성 된 인터페이스가있는 C# /. net과 같은 언어를 사용하면 Netsuite SuiteTalk 웹 서비스 API에서 사용할 수있는 것을 쉽게 찾을 수 있습니다.

NetSuite 도움말 센터에서이 내용과 관련하여 상당한 양의 문서가 있습니다. 꼭 필요한 것은 아니지만 좋은 시작이 될 것입니다. Netsuite Help Center

SuiteFlex/SuiteTalk (웹 서비스) 섹션 (특히 Ids & 참조)에있는이 페이지를 확인하십시오. Using Internal Ids, External Ids, and References

그 말로는 판매 주문에 사용자 정의 필드를 추가하는 .net 예제 & 설명을 돕겠습니다. 여기

다른 CustomFieldRefs을 추가하는 몇 가지 예입니다 : 나는 당신의 위의 예에서 무엇을 말할 수에서

//A list object to store all the customFieldRefs 
List<CustomFieldRef> oCustomFieldRefList = new List<CustomFieldRef>(); 

//List or Record Type reference 
SelectCustomFieldRef custbody_XXX_freight_terms = new SelectCustomFieldRef(); 
custbody_XXX_freight_terms.internalId = "custbody_XXX_freight_terms"; 
ListOrRecordRef oFreightTermsRecordRef = new ListOrRecordRef(); 
oFreightTermsRecordRef.internalId = <internalId of specific record in Netsuite>; 
//See the References link above for more info on this - trying to figure out typeId caused me a lot of pain. 
oFreightTermsRecordRef.typeId = <internalId of the List Record Type in Netsuite>; 
custbody_XXX_freight_terms.value = oFreightTermsRecordRef; 
oCustomFieldRefList.Add(custbody_XXX_freight_terms); 

//Freeform text sorta field    
StringCustomFieldRef objStringCustomFieldRef = new StringCustomFieldRef(); 
objStringCustomFieldRef.internalId = "custbody_XXX_tracking_link"; 
objStringCustomFieldRef.value = "StringValue"; 
oCustomFieldRefList.Add(objStringCustomFieldRef); 

//Checkbox field type 
BooleanCustomFieldRef custbody_XXX_if_fulfilled = new BooleanCustomFieldRef(); 
custbody_XXX_if_fulfilled.internalId = "custbody_XXX_if_fulfilled"; 
custbody_XXX_if_fulfilled.value = true; 
oCustomFieldRefList.Add(custbody_XXX_if_fulfilled); 

//By far the most complicated example a multi-select list referencing other records in Netsuite 
MultiSelectCustomFieldRef custrecord_XXX_transaction_link = new MultiSelectCustomFieldRef(); 
//internal id of field you are updating 
custrecord_XXX_transaction_link.internalId = "custrecord_XXX_transaction_link"; 

List<ListOrRecordRef> oListOrRecordRefList = new List<ListOrRecordRef>(); 

ListOrRecordRef oListOrRecordRefItemFulfillment = new ListOrRecordRef(); 
oListOrRecordRefItemFulfillment.name = "Item Fulfillment"; 
oListOrRecordRefItemFulfillment.internalId = <ItemFulfillmentInternalId>; 
//Item Fulfillment is record type (Transaction -30) - this is from the above Reference links 
oListOrRecordRefItemFulfillment.typeId = "-30"; 
oListOrRecordRefList.Add(oListOrRecordRefItemFulfillment); 

ListOrRecordRef oListOrRecordRefSalesOrder = new ListOrRecordRef(); 
oListOrRecordRefSalesOrder.name = "Sales Order"; 
oListOrRecordRefSalesOrder.internalId = <SalesOrderInternalId>; 
//Sales Order is record type (Transaction -30) - this is from the above Reference links 
oListOrRecordRefSalesOrder.typeId = "-30"; 
oListOrRecordRefList.Add(oListOrRecordRefSalesOrder); 

//Add array of all the ListOrRecordRefs to the MultiSelectCustomFieldRef   
custrecord_XXX_transaction_link.value = oListOrRecordRefList.ToArray(); 
oCustomFieldRefList.Add(custrecord_XXX_transaction_link); 

//And then add all these to the Custom Record List (Array) on the Sales Order Record 
objSalesOrder.customFieldList = oCustomFieldRefList.ToArray(); 

내가 문제가 ListOrRecordRef 유형 ID로 생각합니다. 그것은 귀하의 예제에서 당신이 참조하는 typeId 말할 수 있지만 그걸 알아낼 수있는 SelectCustomFieldRef TypeId 설정할 경우 귀하의 문제를 해결해야한다고 생각합니다.

+0

netsuite 사용자 그룹을 통해 질문을 게시 한 후 3-4 일이 지나면 알아 냈습니다. 마침내 누군가가 뽑았습니다. NS가 어떻게 받아들이는지 말한 후에 ListOrRecordRef가 문제라고 생각했던 바로 그 것이 었습니다. NS가 왜 그런 식으로 받아들이는지 이해하는 것은 쉬워졌습니다. 자세한 정보를 보내 주셔서 감사합니다. 누군가가이 하루를 검색하여 유용하다고 생각합니다. 이것이 내가이 답변을 표시 한 이유입니다. 다시 한번 감사드립니다. – Dreamcube

+0

@Rick, 프로그래밍 방식으로 typeID를 식별 할 수 있는지 알고 있습니까? 즉, 사용자 정의 필드의 이름을 알면 현재 연관된 CustomList를 판별하는 방법이 있습니까? – digitalsteez

+0

StringCustomFieldRef의 경우 실제로 internalId가 아닌 scriptId 속성이어야합니다. 다음은 그 라인이 어떻게 보이는지입니다 : objStringCustomFieldRef.scriptId = "custbody_XXX_tracking_link"; – theark40