detach(detachRequest) At this time, only a basic reference is supported, Contact reference is not supported yet.
As an example, to attach a file to an expenseReport, you would do the
following:
sub nsRecRef {
my ($rectype, $id) = @_;
return { type => $rectype, internalId => $id };
}
my $attachRequest = {
attachTo => nsRecRef('expenseReport', $erId),
attachedRecord => nsRecRef('file', $fid)
};
$ns->attach($attachRequest) or nsfatal 'error attaching';
The detach operation is coded exactly the same.
errorResults
The errorResults method is populated when a request returns an erroneous
response from NetSuite. These errors can occur at anytime and with any
operation. Always assume your operations will fail, and build your code
accordingly.
The hash reference that is returned looks like this:
{
'message' => 'You have entered an invalid email address or account
number. Please try again.',
'code' => 'INVALID_LOGIN_CREDENTIALS'
};
If there is something FUNDAMENTALLY wrong with your request (like you
have included an invalid field), your errorResults may look like this:
{
'faultcode' => 'soapenv:Server.userException',
'detailDetail' => 'partners-java002.svale.netledger.com',
'faultstring' => 'com.netledger.common.schemabean.NLSchemaBeanException:
<<somefield>> not found on {urn:relationships_2_6.lists.webservices.netsuite.com}Customer'
};
Thus, a typical error-prepared script might look like this:
$ns->login or die "Can't connect to NetSuite!\n";
if ($ns->search('customer', $query)) {
for my $record (@{ $ns->searchResults->{recordList} }) {
if ($ns->get('customer', $record->{recordInternalId})) {
print Dumper($ns->getResults);
}
else {
# If an error is encountered while running through
# a list, print a notice and break the loop
print "An error occured!\n";
last;
}
}
}
else {
# I really want to know why my search would fail
# lets output the error and message
my $message = $ns->errorResults->{message};
my $code = $ns->errorResults->{code};
print "Unable to perform search!\n";
print "($code): $message\n";
}
$ns->logout; # no error handling here, if this fails, oh well.
For a complete listing of errors and associated messages, consult the
SuiteTalk (Web Services) Records Guide.
<http://www.netsuite.com/portal/developers/resources/suitetalk-documenta
tion.shtml>
AUTHOR Fred Moyer, fred@redhotpenguin.com
LICENCE AND COPYRIGHT Copyright 2013, iParadigms LLC.
Original Netsuite module copyright (c) 2008, Jonathan Lloyd. All rights
reserved.
This module is free software; you can redistribute it and/or modify it
under the same terms as Perl itself. See perlartistic.
ACKNOWLEDGEMENTS Initial content shamelessly stolen from https://github.com/gitpan/NetSuite
Thanks to iParadigms LLC for sponsoring the reboot of this module.