2016-02-19 3 views
0

Я пытаюсь установить поле «Клиент» на уровне линии заказа на поставку, когда я создаю PO через скрипт. Я хочу, чтобы значение было заданием из соответствующего заказа клиента. Если вы перейдете в пользовательский интерфейс, чтобы отредактировать это поле, вы можете ввести как Рабочие места, так и Клиенты (поле имеет тип объекта, поэтому оба работают).Настройка поля «Клиент» на уровне линии PO

Мой код после записи записи (пользовательское мероприятие). Вот фрагмент кода:

var objcurrentSO = nlapiLoadRecord('salesorder', nlapiGetRecordId()); 
var ijob = objcurrentSO.getFieldValue('job'); 
nlapiLogExecution("DEBUG", "JOB ID", "Job: "+ijob); 
//get line Item information from SO and store into arrlines array 
var objPO = nlapiCreateRecord('purchaseorder'); 
//set header fields for objPo 
    for (var j = 0; j < arrlines.length; j++) 
     { 
      objPO.selectNewLineItem('item'); 
      objPO.setCurrentLineItemValue('item', 'item', arrlines[j].Item); 
      objPO.setCurrentLineItemValue('item', 'description', arrlines[j].Description); 
      objPO.setCurrentLineItemValue('item', 'rate', arrlines[j].Itemcost); 
      objPO.setCurrentLineItemValue('item', 'quantity', arrlines[j].Itemquantity);   
      objPO.setCurrentLineItemValue('item', 'department', 71); 
      objPO.setCurrentLineItemValue('item', 'class', arrlines[j].Class); 
      objPO.setCurrentLineItemValue('item', 'location', ilocation); 
      objPO.setCurrentLineItemValue('item', 'customer', ijob); //project set on line level 
      objPO.commitLineItem('item'); 
      nlapiLogExecution('DEBUG', 'Setting PO line values', "Line: " + j + "; Item: " + arrlines[j].Itemtext + "; Itemcost: " + arrlines[j].Itemcost + "; Itemdescription: " + arrlines[j].Description); 
     } 

// отправить PO

При всем этом, что в настоящее время происходит, создает ПО, но поле клиента не установлен вообще. Выполнение моего журнала показывает правильный идентификатор задания, который я ожидаю. Я могу вручную добавить задание в пользовательский интерфейс.

Любые идеи?

+0

Одна вещь, которая расстраивает об этом является то, что ваш пост подразумевает ваш код работает на всех. Идиома setCurrentLineItem предназначена для клиентских скриптов и записей, загруженных/созданных в динамическом режиме. – bknights

+0

Есть ли причина, по которой вы не можете использовать функциональность «специальный заказ» или «падение корабля», так что ПО генерируется автоматически? – bknights

+0

Одна вещь, которая появляется на ум, не имея возможности запросить больше кода/конфигурации, заключается в том, что дочерняя компания-покупатель не соответствует дочерней компании в Заказе на покупку? –

ответ

1

Ваш код выглядит правильно. Пожалуйста, постарайтесь убедиться, что поставщик и клиент должны быть в одном филиале.

Не могли бы вы попробовать создать заказ на покупку в динамическом режиме, как - var poRecord = nlapiCreateRecord('purchaseorder', {recordmode:'dynamic'})

+0

Это сработало. Поскольку в динамическом режиме порядок имеет значение, мне нужно было отредактировать часть моего скрипта, но теперь все работает и задание задано. Благодаря! – TMann

Смежные вопросы