Не слишком уверен насчет PHP-аспекта, но в Java это будет сделано следующим образом.Обратите внимание, что первым шагом является использование вызова initialize
для получения записи выполнения элемента, а затем вы сохраняете ее как обычно.Этап пометки каждой строки как выполнимой (itemReceive
) является общим для SuiteTalk и Suitescript.
ReadResponse initFF = nsClient.getPort().initialize(new InitializeRecord(InitializeType.itemFulfillment, new InitializeRef(null, InitializeRefType.salesOrder, soId, null), null));
ItemFulfillment ff = (ItemFulfillment)initFF.getRecord();
ItemFulfillment ff = (ItemFulfillment)initFF.getRecord();
for(ItemFulfillmentItem ffItem : ff.getItemList().getItem()){
ffItem.setItemReceive(Boolean.TRUE);
}
ff.setShipStatus(ItemFulfillmentShipStatus._shipped);
System.err.println("adding fulfillment");
WriteResponse ffResp = nsClient.getPort().add(ff);
if(!ffResp.getStatus().isIsSuccess()){
System.err.println(nsClient.getStatusDetails(ffResp.getStatus()));
fail("Unable to add item fulfillment");
}
Таким образом, вызываемый вами вызов кажется неправильным.Если бы вы использовали PHPtoolkit, предоставленный NS, вы бы делали:
$service->initialize($objx);
Соответствующий пакет сценариев потребовал бы, чтобы вы прошли через строки элементов и установили значение столбца itemreceive в true.так что в вашем цикле ifRec.setCurrentLineItemValue('item', 'itemreceive', 'T');
Некоторые гораздо более старые .php, которые я написал, выглядят следующим образом и, похоже, работали без элемента itemReceive.Хотя он по-прежнему извлекает запись выполнения из вызова инициализации перед попыткой передать выполнение:
$initRefFields = array('internalId' => $soId, 'type' => 'salesOrder');
$initRef = new nsComplexObject('InitializeRef');
$initRef -> setFields($initRefFields);
$initRecFields = array('reference' => $initRef, 'type' => 'itemFulfillment');
$initRec = new nsComplexObject('InitializeRecord');
$initRec -> setFields($initRecFields);
$readReponse = $nsClient -> initialize($initRec);
if($readReponse -> isSuccess) {
$itemFulfillment = $readReponse -> record;
... manipulate lines
$addResponse = $nsClient -> add($itemFulfillment);
}