2016-09-12 121 views
2

我需要使用php工具包删除地址簿列表中已存在的客户地址。 这里是我的代码,如何使用netsuite php工具包删除地址簿中的客户地址

$service = new NetSuiteService(); 


    $addressbook = new CustomerAddressBook(); 
    $addressbook->internalId = 'xxxxxx'; // addressBook Record (a entire row) interanl id 


    $addressBookList = new CustomerAddressbookList(); 
    $addressBookList->addressbook = $addressbook; 
    $addressBookList->replaceAll = false; 

    $customer = new Customer(); 
    $customer->internalId = $_SESSION["customer_internalId"]; // customer internal ID 
    $customer->addressbookList = $addressBookList; 

    $deleteRequest = new DeleteRequest(); 
    $deleteRequest->record = $customer; 
    $deleteResponse = $service->delete($deleteRequest); 

    print_r($deleteResponse); 

WHE运行此代码我得到异常“BaseRef是一个抽象类,不能在被实例化...”。如何删除客户的地址簿列表中的许多地址之一?

+0

有人请帮助我 –

回答

2

我不认为你可以删除客户记录中的特定子记录。

看这里看deleted record types

我会做更新请求而只是删除我不从addressbooklist需要的地址。像这样的东西...

<?php 
$service = new NetSuiteService(); 
$service->setPreferences(false, true, true, true); 
$gr = new GetRequest(); 
$gr->baseRef = new RecordRef(); 
$gr->baseRef->internalId = $_SESSION["customer_internalId"]; //customer internal id 
$gr->baseRef->type = "customer"; 
$getResponse = $service->get($gr); 

if (!$getResponse->readResponse->status->isSuccess) 
{ 
echo "GET ERROR"; 
} 
else 
{ 
echo "GET SUCCESS"; 
} 

$customer = $getResponse->readResponse->record; 
$arrayAddressBook = $customer->addressbookList->addressbook; 

// find matching addressbook 

$findAddressKey = array_filter($arrayAddressBook, 
function ($e) 
{ 
return $e->internalId == 'xxxxxx' 

// addressbook internal id; 

}); 

// grab key of that addressbook object to remove 

$addressKey = key($findAddressKey); 
unset($arrayAddressBook[$addressKey]); 
$customer->addressbookList->replaceAll = true; 
$customer->addressbookList->addressbook = $arrayAddressBook; 
$request = new UpdateRequest(); 
$request->record = $customer; 
$service->setPreferences(false, false, false, true); 
$updateResponse = $service->update($request); 

if (!$updateResponse->writeResponse->status->isSuccess) 
{ 
echo "UPDATE ERROR"; 
} 
else 
{ 
echo "UPDATE SUCCESS, id " . $updateResponse->writeResponse->baseRef- >internalId; 
} 
?> 
+0

谢谢!它的工作 –