Nano Hash - криптовалюты, майнинг, программирование

Как создать заказ на покупку в Netsuite с помощью ScriptSuite?

Я новичок в Netsuite, и меня попросили выполнить сценарий, который был запущен из приложения, запрограммированного на java. Скрипт с функцией для создания заказа на покупку в Netsuite и другой функцией для вывода списка заказов на покупку, созданных ранее. Оказывается, для этого я использую api SuiteScript, но при создании заказа на покупку запустите приложение java и запускает скрипт, но он дает следующую ошибку:

3 августа 2015 г. 14:49:00 com.gargoylesoftware.htmlunit.WebClient printContentIfNeeded ИНФОРМАЦИЯ: {"error": {"code": "user_error", "message": "Пожалуйста, введите значения для: Vendor"} }

Функция Javascript для создания:

function CreatePurchase_Orders(datain){

var output = '';
nlapiLogExecution('DEBUG','createRecord','ingreso la consulta' ) ;
    nlapiLogExecution('DEBUG','createRecord', 'Ingresa: '+ datain);
//var msg = validateTimeBills(datain);
var msg = null;

if (msg){

    var err = new Object();
    err.status = "failed";
    err.message= msg;
    return err;
}

var Purchase_Orders = datain.Purchase_Order;
nlapiLogExecution('DEBUG','createRecord', 'obtuvo el objeto: '+ Purchase_Orders);

for (var Purchase_Orderobject in Purchase_Orders){

    var Purchase_Order = Purchase_Orders[Purchase_Orderobject];
    var transdate = Purchase_Order.Transdate;
    var Form = Purchase_Order.Form;
    var Vendor = Purchase_Order.Vendor;
    var Currency = Purchase_Order.Currency;
    var Item = Purchase_Order.Item;
    nlapiLogExecution('DEBUG','campos','transdate: '+ transdate+'/Form: '+Form + ' /Vendor: ' + Vendor + ' /Currency: ' + Currency
                                                            + ' /Item: ' + Item);
    var Purchase_Order = nlapiCreateRecord('purchaseorder');
    var nlobjAssistant =   nlapiCreateAssistant ( 'asistente' , false ) ;

            var Purchase_Orderid =  1;//nlapiSubmitRecord( Purchase_Order , true, true);
            if(Purchase_Order){

                nlapiLogExecution('DEBUG', 'Purchase_Order ' + Purchase_Orderid + ' successfully created', '');
                nlapiLogExecution('DEBUG', 'createRecord', 'creo el record');

            }

    Purchase_Order.setFieldValue('transdate', transdate);
    Purchase_Order.setFieldValue('inpt_customform1', Form);
    Purchase_Order.setFieldValue('vendor', Vendor);
    Purchase_Order.setFieldValue('inpt_currency7', Currency);
    Purchase_Order.setFieldValue('inpt_item', Item);
    Purchase_Order.setFieldText('quantity_formattedValue', '1');
    Purchase_Order.setFieldText('rate_formattedValue', '1');
    Purchase_Order.setFieldText('amount_formattedValue', '1');
    Purchase_Order.setFieldText('inpt_taxcode', 'VAT_MX:UNDEF_MX');
    Purchase_Order.setFieldText('grossamt_formattedValue', '1');
    Purchase_Order.setFieldText('tax1amt_formattedValue', '0');
    Purchase_Order.setFieldText('expectedreceiptdate', '24/6/2015');

            //var Purchase_Orderid =  1;//nlapiSubmitRecord( Purchase_Order , true, true);                   
            var submitRecord = nlapiSubmitRecord(Purchase_Order);//,true);
            nlapiLogExecution('DEBUG', 'submirRecord ' + submitRecord);

}

var mesg = new Object();
mesg.status = "OK";
mesg.message= nlobjAssistant.getAllFields();
return mesg;

}

А код функции в Java:

WebClient client = new WebClient(BrowserVersion.FIREFOX_31);
        client.getOptions().setJavaScriptEnabled(false);
        client.getOptions().setThrowExceptionOnScriptError(false);

        WebRequest requestSettings = new WebRequest(new URL(url),HttpMethod.POST);

        requestSettings.setAdditionalHeader("Host", "rest.na1.netsuite.com");
        requestSettings.setAdditionalHeader("User-Agent", "SuiteScript-Call");
        requestSettings.setAdditionalHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        requestSettings.setAdditionalHeader("Accept-Language", " es-cl,es;q=0.8,en-us;q=0.5,en;q=0.3");
        requestSettings.setAdditionalHeader("Accept-Encoding", "gzip, deflate");
        requestSettings.setAdditionalHeader("Content-Type", "application/json");
        requestSettings.setAdditionalHeader("Pragma", "no-cache");
        requestSettings.setAdditionalHeader("Cache-Control", "no-cache");
        requestSettings.setAdditionalHeader("Referer", "http://localhost:8084");
        requestSettings.setAdditionalHeader("Cookie", "");
        requestSettings.setAdditionalHeader("Connection", "keep-alive");

        requestSettings.setAdditionalHeader("Authorization", "NLAuth nlauth_account=" + account + ", nlauth_email=" + mail + ", nlauth_signature=" + pass + ", nlauth_role=" + role + "");

        Gson gson = new Gson();

        //objeto llenado estaticamente de forma momentanea, se debe leer desde archivo externo                    
        Purchase_Order purchaseOrder = new Purchase_Order("25/06/2015","formTest","vendorTest","CurrencyTest","itemTest");

        String cuerpo = gson.toJson(purchaseOrder);

        System.out.println(cuerpo);

// Устанавливаем параметры запроса requestSettings.setRequestBody (cuerpo);

        Page page = client.getPage(requestSettings);
        WebResponse response = page.getWebResponse();

        String json = response.getContentAsString();
        System.out.println(json);

С помощью этой функции javascript вы должны создать мне запись Заказа на покупку, но я не могу найти ошибку и решение, если кто-то может мне помочь, я был бы очень признателен. PS: если вам нужно создать индивидуальную форму, можете мне сказать, как? Благодарность!


  • Можете ли вы опубликовать свою структуру JSON, чтобы иметь представление о получаемых полях. 04.08.2015
  • На данный момент я использую, чтобы проверить это: {Purchase_Order: [{Transdate: 25.06.2015, Form: formTest, VendorTest, Currency: CurrencyTest, Item: itemTest}]} 04.08.2015
  • Можете ли вы добавить к этому контекст. К вашему сведению, чтобы создать заказ на покупку, вам необходимо предоставить внутренний идентификатор поставщика: integer value то же самое, что и для item, также в случае, если это элемент Netsuite. 04.08.2015
  • Другими словами, ваш json должен быть примерно таким: {"Purchase_Order":[{"Transdate":"25/06/2015","Form":"101","Vendor":"102","Currency":"2","Item":"104"}]} 04.08.2015
  • спасибо за помощь, попробую и прокомментировал, что это я. От уже большое спасибо за разъяснения не знал. 04.08.2015
  • Если у вас есть какие-либо вопросы, не стесняйтесь размещать свои запросы. :) 04.08.2015
  • эти числа должны соответствовать внутреннему идентификатору продавца, форме, валюте и номенклатуре? в противном случае, как я могу проверить, что запись была создана ?? Привет! 04.08.2015
  • Да, эти числа должны соответствовать их внутренним идентификаторам (поставщик, форма, валюта и предмет) 04.08.2015
  • Не могу найти внутренний id в NetSuite, где взять? 04.08.2015
  • откройте запись PO и просто щелкните имя поля в нижней части всплывающего окна, вы можете найти внутренний идентификатор этого поля 04.08.2015
  • Большое спасибо за помощь, и я смог это сделать. Теперь я мог бы указать какой-нибудь метод для перечисления всех созданных заказов на поставку? Привет! 05.08.2015

Ответы:


1

Вот некоторые моменты:

Как указано в сообщении об ошибке Please enter value (s) for: Vendor, вам не хватает значения поля vendor, которое является обязательным. В вашем фрагменте кода вы передаете неправильное значение internalid для поставщика. Вы должны использовать entity вместо vendor

 Purchase_Order.setFieldValue('entity', Vendor); // where vendor is the internal id of the vendor record

Для настройки пользовательской формы вы можете использовать

Purchase_Order.setFieldValue('customform', Form); // where Form is the id of the custom form

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

04.08.2015
  • друг, большое спасибо за помощь, я новичок в этом, и я немного сложно с тем, что я просил. Я внесу предложенные вами изменения и прокомментировал, что это был я. От уже большое спасибо! 04.08.2015
  • Поскольку эту работу нельзя было оставить без завершения, иначе я немного растерялся, так как могу проверить наличие внутреннего идентификатора полей для ввода формы заказа на покупку, может быть, вам лучше начать с нуля. Это может помочь с необходимостью? (создание формы и все необходимое для оформления Заказа на поставку, пожалуйста.) Буду внимателен к комментариям. 04.08.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..