Oracle NetSuite技术问题:如何获取货币的内部/外部ID?
获取NetSuite中USD货币的Internal ID/External ID 并批量为客户添加该货币的方法
1. 手动查询ID(快速解决)
- Internal ID:登录NetSuite后台,进入
设置 > 会计 > 货币,找到USD对应的行。如果表格没显示Internal ID列,右键表头勾选「Internal ID」即可查看。 - External ID:同样在货币列表中查看「External ID」列,若账套里没给USD设置过External ID,这个字段会是空的——这种情况下只需要用Internal ID就能正常关联货币记录。
2. 代码自动获取ID(适合自动化/批量场景)
如果需要在脚本中动态获取USD的ID,不用手动查,可以通过NetSuite的Search API实现,示例代码如下(匹配你提供的Java代码风格):
// 构建货币搜索条件,匹配货币代码为USD CurrencySearchBasic currencySearch = new CurrencySearchBasic(); SearchStringField codeFilter = new SearchStringField(); codeFilter.setOperator(SearchStringFieldOperator.IS); codeFilter.setSearchValue("USD"); currencySearch.setCode(codeFilter); // 执行搜索并获取结果 SearchResult searchResult = getPort().search(currencySearch); if (searchResult.getStatus().isIsSuccess() && searchResult.getTotalRecords() > 0) { Currency usdCurrency = (Currency) searchResult.getRecordList()[0]; String usdInternalId = usdCurrency.getInternalId(); String usdExternalId = usdCurrency.getExternalId(); // 构建货币RecordRef RecordRef ccy = new RecordRef(); ccy.setType(RecordType.CURRENCY); ccy.setInternalId(usdInternalId); // 只有当External ID存在时才设置,否则可忽略 if (usdExternalId != null && !usdExternalId.isEmpty()) { ccy.setExternalId(usdExternalId); } // 后续继续你的客户货币列表更新逻辑 CustomerCurrency customerCcy = new CustomerCurrency(); customerCcy.setCurrency(ccy); CustomerCurrencyList customerCcyList = new CustomerCurrencyList(); customerCcyList.getCurrency().add(customerCcy); customer.setCurrencyList(customerCcyList); updateCustomer(customer); }
3. CSV导入的替代方案
如果你是用NetSuite自带的CSV导入工具批量更新客户,其实不需要手动获取ID——在CSV的货币列中直接填写USD(货币代码),系统会自动匹配对应货币记录,无需指定Internal/External ID。
内容的提问来源于stack exchange,提问作者Pocan Lin
相关产品推荐
相关产品推荐

