2011-01-13 24 views
8

Tài liệu về Netsuite khá thiếu, chúng bao gồm các khái niệm cơ bản và sau đó cho phép bạn khám phá. Bất cứ ai mà không có một kiến ​​thức rộng lớn về PHP cố gắng sử dụng bộ công cụ php của họ sẽ được trên đầu gối của họ cầu xin cho lòng thương xót.Netsuite: Cách đính kèm các trường tùy chỉnh vào các đơn hàng bán hàng

Tại bất kỳ điểm nào trong suốt toàn bộ dự án này, đó là dấu vết và lỗi và cố gắng hiểu rõ mọi thứ cho đến khi mọi thứ bắt đầu hoạt động.

Tôi đang bối rối khi chỉ định trường tùy chỉnh cho đơn đặt hàng, tôi biết nó phải là đối tượng của đối tượng để nó xếp xml cho xà phòng để tiếp nhận nhưng điều gì với gì?

Tôi có một số mã tôi làm việc đó là nhận được một nơi nào đó nhưng nó là phàn nàn nó không phải là loại RecordRef đúng. Nếu có ai làm việc với Netsuite và cảm thấy nỗi đau của tôi, hãy cho tôi mượn kiến ​​thức của bạn trước khi tôi lấy hết tóc ra.

Xin cảm ơn trước.

Code:

$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

Tôi đã tìm thấy rằng tôi phải tạo mẫu thử tất cả các tương tác dịch vụ web Netsuite của tôi trong Java bằng cách sử dụng giao diện Axis được tạo ra để tìm ra cách xây dựng các truy vấn SOAP một cách chính xác. Chỉ sau khi tôi có nó làm việc trong Java, tôi thử dịch nó sang bộ công cụ PHP. Bất cứ khi nào có thể tôi tránh PHP với netsuite. – Craig

Trả lời

11

Tôi không quen sử dụng PHP với Netsuite nhưng tôi đã làm được một số lượng tốt của C#/công việc Netsuite ròng.. Như Craig đã đề cập, tôi tìm thấy nó dễ dàng hơn nhiều bằng cách sử dụng một ngôn ngữ như C# /. Net với một Visual Studio tạo ra giao diện để tìm ra những gì có sẵn trong API dịch vụ web Netsuite SuiteTalk.

Có một số lượng tài liệu hợp lý xung quanh nội dung này trong Trung tâm trợ giúp của NetSuite - không có nghĩa là mọi thứ bạn cần sẽ là một khởi đầu tốt. Netsuite Help Center

Kiểm tra phần SuiteFlex/SuiteTalk (Dịch vụ web) cụ thể trang này trên Id & Tham khảo. Using Internal Ids, External Ids, and References

Với điều đó, tôi sẽ cố gắng trợ giúp với ví dụ .net & giải thích về việc thêm trường tùy chỉnh vào Đơn đặt hàng.

Dưới đây là một vài ví dụ về cách thêm CustomFieldRefs khác nhau:

//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(); 

Từ những gì tôi có thể nói trong ví dụ trên của bạn tôi nghĩ rằng vấn đề của bạn là với ListOrRecordRef typeid. Thật khó để nói từ ví dụ của bạn những gì typeId bạn đang tham khảo, nhưng nếu bạn có thể con số đó ra và đặt TypeId trên SelectCustomFieldRef của bạn Tôi nghĩ rằng nên khắc phục vấn đề của bạn.

+0

Tôi đã tìm ra điều này có lẽ 3-4 ngày sau khi tôi đăng câu hỏi thông qua nhóm người dùng netsuite, cuối cùng ai đó đã kéo qua. Đó là chính xác những gì bạn nghĩ rằng ListOrRecordRef là vấn đề sau khi tôi đã nói như thế nào NS sẽ chỉ chấp nhận nó, nó trở nên dễ hiểu tại sao NS chấp nhận nó theo cách đó. Cảm ơn thông tin chi tiết, ai đó sẽ tìm kiếm một ngày này và thấy điều này hữu ích và đó là lý do tại sao tôi đánh dấu câu trả lời này. Cảm ơn một lần nữa. – Dreamcube

+0

@Rick, bạn có biết rằng liệu có thể xác định typeID theo lập trình không? Nói cách khác, bằng cách biết tên của trường tùy chỉnh, có cách nào để xác định Danh sách tùy chỉnh hiện được liên kết không? – digitalsteez

+0

Lưu ý rằng đối với StringCustomFieldRef nó thực sự phải là thuộc tính scriptId không phải là internalId. Đây là cách mà dòng này sẽ xem xét: objStringCustomFieldRef.scriptId = "custbody_XXX_tracking_link"; – theark40

Các vấn đề liên quan