Раскрывающийся список обновлений Netsuite PHP в заказе на продажуPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Раскрывающийся список обновлений Netsuite PHP в заказе на продажу

Сообщение Anonymous »

Как следует из названия, я пытаюсь обновить существующий заказ на продажу с помощью набора инструментов Netsuite PHP. Поле, которое я пытаюсь обновить, — это «Отдел/Канал продаж», собственное поле Netsuite. Я могу загрузить запись нормально, но когда я пытаюсь изменить значение «отдел» и сохранить запись, я получаю следующую ошибку:

Код: Выделить всё

Fatal error:  Uncaught SoapFault exception: [soapenv:Server.userException] com.netledger.schemabean.NLSchemaBeanException: getResponse is not a legal value for {urn:types.core_2022_1.platform.webservices.netsuite.com}RecordType in /var/www/composer/vendor/ryanwinchester/netsuite-php/src/NetSuiteClient.php:196
Stack trace:
#0 /var/www/composer/vendor/ryanwinchester/netsuite-php/src/NetSuiteClient.php(196): SoapClient->__soapCall()
#1 /var/www/composer/vendor/ryanwinchester/netsuite-php/src/NetSuiteService.php(103): NetSuite\NetSuiteClient->makeSoapCall()
#2 /var/www/vhosts/intranet.kegworks.com/docs/netsuite/modify_sales_order.php(37): NetSuite\NetSuiteService->update()
#3 {main}
добавлен в /var/www/composer/vendor/ryanwinchester/netsuite-php/src/NetSuiteClient.php в строке 196
Строка 37 в мой код:

Код: Выделить всё

$updateResponse = $ns2->update($update);
Полный код:

Код: Выделить всё

// Netsuite PHP
require ($inc_path . "composer/vendor/autoload.php");
use NetSuite\NetSuiteService;
use NetSuite\Classes\GetRequest;
use NetSuite\Classes\RecordRef;
use NetSuite\Classes\UpdateRequest;
$ns = new NetSuiteService($ns_creds[$env]);
$ns->setLogPath('/var/www/vhosts/*********************/docs/netsuite/logs');
$ns->logRequests(true);

$request = new GetRequest();
$request->baseRef = new RecordRef();
$request->baseRef->internalId = 86900717;
$request->baseRef->type = "salesOrder";
$response = $ns->get($request);

$response->department = "Commercial Sales";

$ns2 = new NetSuiteService($ns_creds[$env]);
$update = new UpdateRequest();
$update->record = $response;
$updateResponse = $ns2->update($update);

print_r ($updateResponse);

print_r ($response);
Сообщение об ошибке не имеет для меня смысла, если только оно не говорит о запросе на получение, который я использовал для открытия ордера, но если это неправильно, то что? Мы будем очень признательны за любую помощь (пинок под зад, ссылку на RTFM и т. д.).
Поискивал еще немного и думаю, что нашел правильный способ сделать это, но это не так. кажется, не работает. Новый код:

Код: Выделить всё

// Netsuite PHP
require ($inc_path . "composer/vendor/autoload.php");
use NetSuite\NetSuiteService;
use NetSuite\Classes\GetRequest;
use NetSuite\Classes\RecordRef;
use NetSuite\Classes\SalesOrder;
use NetSuite\Classes\UpdateRequest;
$ns = new NetSuiteService($ns_creds[$env]);
$ns->setLogPath('/var/www/vhosts/*********************/docs/netsuite/logs');
$ns->logRequests(true);

$dep = new RecordRef();
$dep->internalId = "10";
$dep->name = "Commercial Sales";

$so = new SalesOrder();
$so->internalId = 86900717;
$so->department = $dep;

$request = new UpdateRequest();
$request->record = $so;

$response = $ns->update($request);

print_r($response);
print_r($so);
Значения для записи отдела поступают непосредственно из SO, поэтому они должны быть правильными, но я получаю ответ, в котором говорится, что это сработало, но есть ошибка:

Код: Выделить всё

NetSuite\Classes\UpdateResponse Object
(
[writeResponse] => NetSuite\Classes\WriteResponse Object
(
[status] => NetSuite\Classes\Status Object
(
[statusDetail] => Array
(
[0] => NetSuite\Classes\StatusDetail Object
(
[code] =>
[message] =>
[afterSubmitFailed] =>
[type] => ERROR
)

)

[isSuccess] => 1
)

[baseRef] => NetSuite\Classes\RecordRef Object
(
[internalId] => 86900717
[externalId] =>
[type] => salesOrder
[name] =>
)

)

)
И когда я перезагружаю запись в Netsuite, значение Department не изменилось. В запросе на обновление нет ничего, что могло бы указать мне, в чем заключается ошибка (если она вообще существует) или почему поле не обновилось.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ales-order
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»