NetSuite, предотвращение предложения цены в заказ на продажу (с помощью кнопки «Заказ на продажу»), если потенциальный клиент назначен по сравнению с клиентом.

Мы разрешаем отделам продаж прикреплять потенциальных клиентов к возможности и расценкам, и после того, как кредит квалифицировал перспективу, они продвигают перспективу для клиента. Что нам нужно сделать, так это скрыть кнопку «Заказ на продажу» в предложении или запретить перенос предложения в заказ на продажу.

Я не решился спросить об этом - кажется, это должно быть интуитивно понятно. Я просмотрел стандартные идентификаторы кнопок NetSuite в справке NetSuite, но не нашел ни одной для «Заказ на продажу». Я рассмотрел логику проверки, но это не проверка, поскольку кнопка заказа на продажу отображается, когда запись не находится в режиме редактирования. Если возможно, я бы хотел, чтобы решение не зависело от формы.

Я был бы счастлив скрыть кнопку или позволить пользователю щелкнуть кнопку и предотвратить создание заказа на продажу. Последнее может быть более удобным для пользователя, потому что, если кнопка скрыта, продавцы будут звонить, спрашивая, почему кнопки нет.

Для наглядности вот изображение:  введите описание изображения здесь


person Rich Bianco    schedule 01.10.2015    source источник


Ответы (2)


Я предполагаю, что когда вы говорите о «кнопке заказа на продажу», вы имеете в виду следующую: < img src = "https://i.stack.imgur.com/isSYe.png" alt = "Кнопка заказа на продажу NetSuite">

Я не уверен, что это лучший пользовательский интерфейс или у вас есть ресурсы для разработки NetSuite, но вот один вариант:

Создайте новый сценарий пользовательского события, который будет развернут для заказа на продажу (и любой другой записи транзакции, которая может потребоваться для этого предотвращения). Используя событие BeforeLoad, вы можете проверить, находится ли Entity в транзакции на стадии Prospect. Если да, то сценарий выдаст ошибку, не позволяя создать транзакцию. Код для этого:

function onBeforeLoad(type) {
    var entityId = nlapiGetFieldValue('entity');

    if ((type != 'create') || !entityId) { return; }

    if(nlapiLookupField('customer', nlapiGetFieldValue('entity'), 'stage') === 'PROSPECT') {
        throw nlapiCreateError('INVALID_REQUEST', 'You cannot create a Sales Order from a Quote placed for a Prospect');
    }
}

Я протестировал этот код в учетной записи TSTDRV, и он работает должным образом. В качестве альтернативы вы можете создать рабочий процесс, который делает то же самое, не требуя написания кода, но я не пытался этого сделать.

При использовании сценария пользовательского события этот код будет независимым от формы, а также от точки входа, что означает, что этот код будет выполняться, если заказ на продажу создается через пользовательский интерфейс, через какой-либо другой сценарий, через интеграцию веб-служб (в зависимости от конфигурации веб-служб) или через импорт CSV (в зависимости от конфигурации импорта CSV).

person erictgrubaugh    schedule 01.10.2015
comment
Очень признателен ++ Я разместил изображение, которое показывает ситуацию, но ваше решение по-прежнему будет работать идеально. var thankYou = abortSOBeforeLoad.Select (new String {Вы не можете создать Заказ на продажу из Quote, если Prospect не был повышен до Customer) .Where (e = ›e.transactionType == Quote) .Where (e =› e.entityType = = Prospect) .OrderBy (e = ›e.stackoverflowhero == egrubaugh360); - person Rich Bianco; 02.10.2015
comment
Протестировал - работает отлично! Я использую stackoverflow в основном, чтобы отвечать на вопросы, потому что ответы на них помогают мне учиться / запоминать, но я находился под давлением по этой проблеме и очень рад, что спросил. Я надеюсь когда-нибудь отплатить за услугу. - person Rich Bianco; 02.10.2015

Чтобы скрыть этот параметр: если вы имеете в виду раскрывающийся список, вы можете создать сценарий для просмотра / редактирования контекста, чтобы сделать следующее:

setFieldAndLabelVisibility ("nl13", ложь);

В противном случае замените nl13 значением элемента table или td, показанного при проверке элемента на желаемой ссылке / значке заказа на продажу.

- Идентификатор в приведенном выше примере - это идентификатор таблицы, кнопки или метки, отображаемый при проверке элемента.

person MBrewer    schedule 01.10.2015
comment
Это еще одна хорошая идея - не подумал об этом. Приятно видеть здесь нескольких экспертов по NetSuite. Это одна из самых сложных вещей, которые мне приходилось делать в спешке. Спасибо. - person Rich Bianco; 13.11.2015