@fye/netsuite-client
v2.1.0
Published
Generic functionality for connecting to NetSuite Web Services from Node
Downloads
16
Readme
Netsuite Client
This package contains functionality for connecting to NetSuite Web Services from Node, handling token authorization and SOAP XML parsing.
Install
npm install @fye/netsuite-client
Use in your node app
Import
const { NetSuiteClient } = require('@fye/netsuite-client');
Instantiate
When instatiating your netsuite client object, you'll need to provide a config object with connection details. See
netsuite-config-template.json
in the ../__tests__/functional
folder.
const netsuiteConfig = {
// various properties
// see netsuite-config-template.json
// or the defaultConfig in netsuite-client.js
};
netsuiteConfig.bodyFieldsOnly = false;
const netsuiteClient = new NetSuiteClient(netsuiteConfig);
Get a SalesOrder record and view its properties
const soExternalId; // SFCC order id
const netsuiteSalesOrder = await netsuiteClient.getSalesOrder({externalId: soExternalId});
console.log(`orderStatus: ${netsuiteSalesOrder.orderStatus}`);
console.log(`internalId: ${netsuiteSalesOrder.internalId}`);
console.log(`externalId: ${netsuiteSalesOrder.externalId}`);
console.log(`customerName: ${netsuiteSalesOrder.customerName}`);
console.log(`orderTrackingUrl: ${netsuiteSalesOrder.orderTrackingUrl}`);
// ...
const netsuiteSalesOrderShipping = netsuiteSalesOrder.shipping;
console.log(`address: ${netsuiteSalesOrderShipping.address}`);
console.log(`quantity: ${netsuiteSalesOrderShipping.quantity}`);
console.log(`date: ${netsuiteSalesOrderShipping.date}`);
console.log(`method: ${netsuiteSalesOrderShipping.method}`);
console.log(`trackingNumber: ${netsuiteSalesOrderShipping.trackingNumber}`);
// ...
const netsuiteSalesOrderBilling = netsuiteSalesOrder.billing;
console.log(`address: ${netsuiteSalesOrderBilling.address}`);
console.log(`paymentMethod: ${netsuiteSalesOrderBilling.paymentMethod}`);
console.log(`creditCardNumber: ${netsuiteSalesOrderBilling.creditCardNumber}`);
console.log(`creditCardExpirationDate: ${netsuiteSalesOrderBilling.creditCardExpirationDate}`);
console.log(`creditCardProcessor: ${netsuiteSalesOrderBilling.creditCardProcessor}`);
// ...
const products = netsuiteSalesOrder.products;
products.forEach(netsuiteSalesOrderProduct => {
console.log(`internalId: ${netsuiteSalesOrderProduct.internalId}`);
console.log(`name: ${netsuiteSalesOrderProduct.name}`);
console.log(`description: ${netsuiteSalesOrderProduct.description}`);
console.log(`quantity: ${netsuiteSalesOrderProduct.quantity}`);
console.log(`purchaseOrderInternalId: ${netsuiteSalesOrderProduct.purchaseOrderInternalId}`);
// ...
});
const discounts = netsuiteSalesOrder.discounts;
products.forEach(netsuiteSalesOrderDiscount => {
console.log(`internalId: ${netsuiteSalesOrderDiscount.internalId}`);
console.log(`name: ${netsuiteSalesOrderDiscount.name}`);
console.log(`description: ${netsuiteSalesOrderDiscount.description}`);
console.log(`amount: ${netsuiteSalesOrderDiscount.amount}`);
console.log(`grossAmount: ${netsuiteSalesOrderDiscount.grossAmount}`);
// ...
});
const taxes = netsuiteSalesOrder.taxes;
taxes.forEach(netsuiteSalesOrderTax => {
console.log(`taxTypeName: ${netsuiteSalesOrderTax.taxTypeName}`);
console.log(`netAmount: ${netsuiteSalesOrderTax.netAmount}`);
console.log(`taxBasis: ${netsuiteSalesOrderTax.taxBasis}`);
console.log(`taxRate: ${netsuiteSalesOrderTax.taxRate}`);
console.log(`taxAmount: ${netsuiteSalesOrderTax.taxAmount}`);
// ...
});
// call the netsuiteSalesOrder.dump() method to see all of the properties
Search for SalesOrders
// Search for sales orders on November 12th, 2019 with a status of Billed
const fromDate = new Date('2019-11-11T21:00:00.000-08:00');
const toDate = new Date('2019-11-11T21:00:00.000-08:00');
const status = netSuiteSalesOrderStatus.BILLED;
const orders = await netsuiteClient.searchForSalesOrders({fromDate, toDate, status});
orders.forEach(netsuiteSalesOrder => {
netsuiteSalesOrder.dump();
});
Update a SalesOrder
// Update the transaction date to today's date
const soExternalId; // SFCC order id
const newTransactionDate = new Date();
let updateValues = [{ name: 'tranDate', value: newTransactionDate.toISOString() }];
let response = await netsuiteClient.updateSalesOrder({ soExternalId, updateValues });
Get a PurchaseOrder record and view its properties
const poInternalId; // purchase order's internal id
const netsuitePurchaseOrder = await netsuiteClient.getPurchaseOrder(poInternalId);
console.log(`internalId: ${netsuitePurchaseOrder.internalId}`);
console.log(`createdDate: ${netsuitePurchaseOrder.createdDate}`);
console.log(`lastModifiedDate: ${netsuitePurchaseOrder.lastModifiedDate}`);
console.log(`memo: ${netsuitePurchaseOrder.memo}`);
console.log(`status: ${netsuitePurchaseOrder.status}`);
// ...
const netsuitePurchaseOrderVendor = netsuitePurchaseOrder.vendor;
console.log(`billingAddress: ${netsuitePurchaseOrderVendor.billingAddress}`);
console.log(`internalId: ${netsuitePurchaseOrderVendor.internalId}`);
console.log(`name: ${netsuitePurchaseOrderVendor.name}`);
console.log(`orderId: ${netsuitePurchaseOrderVendor.orderId}`);
const netsuitePurchaseOrderShipping = netsuitePurchaseOrder.shipping;
console.log(`address: ${netsuitePurchaseOrderShipping.address}`);
console.log(`date: ${netsuitePurchaseOrderShipping.date}`);
console.log(`method: ${netsuitePurchaseOrderShipping.method}`);
console.log(`trackingNumber: ${netsuitePurchaseOrderShipping.trackingNumber}`);
const products = netsuitePurchaseOrder.products;
products.forEach(netsuitePurchaseOrderProduct => {
console.log(`internalId: ${netsuitePurchaseOrderProduct.internalId}`);
console.log(`name: ${netsuitePurchaseOrderProduct.name}`);
console.log(`description: ${netsuitePurchaseOrderProduct.description}`);
console.log(`quantity: ${netsuitePurchaseOrderProduct.quantity}`);
console.log(`quantityReceived: ${netsuitePurchaseOrderProduct.quantityReceived}`);
// ...
});
const expenses = netsuitePurchaseOrder.expenses;
expenses.forEach(netsuitePurchaseOrderExpense => {
console.log(`internalId: ${netsuitePurchaseOrderExpense.internalId}`);
console.log(`name: ${netsuitePurchaseOrderExpense.name}`);
console.log(`amount: ${netsuitePurchaseOrderExpense.amount}`);
console.log(`grossAmount: ${netsuitePurchaseOrderExpense.grossAmount}`);
console.log(`locationName: ${netsuitePurchaseOrderExpense.locationName}`);
// ...
});
// call the netsuitePurchaseOrder.dump() method to see all of the properties
Search for PurchaseOrders
// Find all of the purchase orders for a given sales order
const soInternalId; // sales order's internal id
const orders = await netsuiteClient.searchForPurchaseOrders(soInternalId);
orders.forEach(netsuitePurchaseOrder => {
netsuitePurchaseOrder.dump();
});
Get an ItemFulfillment record and view its properties
const ifInternalId; // item fulfillment's internal id
const netsuiteItemFulfillment = await netsuiteClient.getItemFulfillment(ifInternalId);
console.log(`internalId: ${netsuiteItemFulfillment.internalId}`);
console.log(`createdDate: ${netsuiteItemFulfillment.createdDate}`);
console.log(`lastModifiedDate: ${netsuiteItemFulfillment.lastModifiedDate}`);
console.log(`memo: ${netsuiteItemFulfillment.memo}`);
console.log(`customerName: ${netsuiteItemFulfillment.customerName}`);
// ...
const netsuiteItemFulfillmentShipping = netsuiteItemFulfillment.shipping;
console.log(`address: ${netsuiteItemFulfillmentShipping.address}`);
console.log(`method: ${netsuiteItemFulfillmentShipping.method}`);
console.log(`status: ${netsuiteItemFulfillmentShipping.status}`);
const products = netsuiteItemFulfillment.products;
products.forEach(netsuiteItemFulfillmentProduct => {
console.log(`internalId: ${netsuiteItemFulfillmentProduct.internalId}`);
console.log(`name: ${netsuiteItemFulfillmentProduct.name}`);
console.log(`description: ${netsuiteItemFulfillmentProduct.description}`);
console.log(`quantity: ${netsuiteItemFulfillmentProduct.quantity}`);
console.log(`vendorName: ${netsuiteItemFulfillmentProduct.vendorName}`);
// ...
});
const packages = netsuiteItemFulfillment.packages;
packages.forEach(netsuiteItemFulfillmentPackage => {
console.log(`weight: ${netsuiteItemFulfillmentPackage.weight}`);
console.log(`description: ${netsuiteItemFulfillmentPackage.description}`);
console.log(`trackingNumber: ${netsuiteItemFulfillmentPackage.trackingNumber}`);
});
// call the netsuiteItemFulfillment.dump() method to see all of the properties
Search for ItemFulfillments
// Find all of the item fulfillments for a given sales order
const soInternalId; // sales order's internal id
const itemFulfillments = await netsuiteClient.searchForItemFulfillments(soInternalId);
itemFulfillments.forEach(netsuiteItemFulfillment => {
netsuiteItemFulfillment.dump();
});
Get a CashSale record and view its properties
const csInternalId; // cash sales's internal id
const netsuiteCashSale = await netsuiteClient.getCashSale(csInternalId);
console.log(`internalId: ${netsuiteCashSale.internalId}`);
console.log(`transactionDate: ${netsuiteCashSale.transactionDate}`);
console.log(`memo: ${netsuiteCashSale.memo}`);
console.log(`salesEffectiveDate: ${netsuiteCashSale.salesEffectiveDate}`);
console.log(`nexusName: ${netsuiteCashSale.nexusName}`);
// ...
const netsuiteCashSaleShipping = netsuiteCashSale.shipping;
console.log(`address: ${netsuiteCashSaleShipping.address}`);
console.log(`quantity: ${netsuiteCashSaleShipping.quantity}`);
console.log(`amount: ${netsuiteCashSaleShipping.amount}`);
console.log(`grossAmount: ${netsuiteCashSaleShipping.grossAmount}`);
console.log(`taxAmount: ${netsuiteCashSaleShipping.taxAmount}`);
// ...
const netsuiteCashSaleBilling = netsuiteCashSale.billing;
console.log(`address: ${netsuiteCashSaleBilling.address}`);
console.log(`paymentMethod: ${netsuiteCashSaleBilling.paymentMethod}`);
console.log(`creditCardNumber: ${netsuiteCashSaleBilling.creditCardNumber}`);
console.log(`creditCardExpirationDate: ${netsuiteCashSaleBilling.creditCardExpirationDate}`);
console.log(`creditCardProcessor: ${netsuiteCashSaleBilling.creditCardProcessor}`);
// ...
const products = netsuiteCashSale.products;
products.forEach(netsuiteCashSaleProduct => {
console.log(`internalId: ${netsuiteCashSaleProduct.internalId}`);
console.log(`name: ${netsuiteCashSaleProduct.name}`);
console.log(`description: ${netsuiteCashSaleProduct.description}`);
console.log(`quantity: ${netsuiteCashSaleProduct.quantity}`);
console.log(`amount: ${netsuiteCashSaleProduct.amount}`);
// ...
});
const discounts = netsuiteCashSale.discounts;
products.forEach(netsuiteCashSaleDiscount => {
console.log(`internalId: ${netsuiteCashSaleDiscount.internalId}`);
console.log(`name: ${netsuiteCashSaleDiscount.name}`);
console.log(`description: ${netsuiteCashSaleDiscount.description}`);
console.log(`amount: ${netsuiteCashSaleDiscount.amount}`);
console.log(`grossAmount: ${netsuiteCashSaleDiscount.grossAmount}`);
// ...
});
const taxes = netsuiteCashSale.taxes;
taxes.forEach(netsuiteCashSaleTax => {
console.log(`taxTypeName: ${netsuiteCashSaleTax.taxTypeName}`);
console.log(`netAmount: ${netsuiteCashSaleTax.netAmount}`);
console.log(`taxBasis: ${netsuiteCashSaleTax.taxBasis}`);
console.log(`taxRate: ${netsuiteCashSaleTax.taxRate}`);
console.log(`taxAmount: ${netsuiteCashSaleTax.taxAmount}`);
// ...
});
// call the netsuiteCashSale.dump() method to see all of the properties
Search for CashSales
// Find all of the cash sales for a given sales order
const soInternalId; // sales order's internal id
const cashSales = await netsuiteClient.searchForCashSales(soInternalId);
cashSales.forEach(netsuiteCashSale => {
netsuiteCashSale.dump();
});
Upload a file
const fileRef = await netsuiteClient.upload(
'./some/local/dir/my-file.csv', // local file
'uploads/my-file.csv', // NetSuite target file path
);
Other
Checkout other methods: look at the netsuite object console.log(netsuiteClient);
and read netsuite-client.js.
Testing
- Create a
netsuite-config.json
file; seenetsuite-config-template.json
for an example in the Functional test folder. - Run
yarn run test
to execute the test scripts.