Skip to content

orderwerks/fishbowl-ts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Stephen BeroStephen Bero
Stephen Bero
and
Stephen Bero
Dec 22, 2021
8714bcc · Dec 22, 2021

History

84 Commits
Jun 7, 2021
Dec 22, 2021
Dec 22, 2021
Jun 7, 2021
Apr 16, 2021
Feb 14, 2019
Jun 7, 2021
Jun 7, 2021
Dec 22, 2021
Feb 13, 2019
Dec 22, 2021

Repository files navigation

Fishbowl-ts

The TypeScript wrapper for the Fishbowl API

npmDownloads

NPM

Request options

Reference src/requestTypes.ts to learn option parameters for the different requests

Fishbowl API

If you have questions regarding the actual Fishbowl API please visit the Fishbowl API wiki

Original Author

This library was built around the original work done by BrennanRocks

Usage

The default options for the constructor are

const fb = new Fishbowl({
    host: '127.0.0.1',
    port: 28192,
    IAID: 54321,
    IAName: 'Fishbowljs',
    IADescription: 'Fishbowljs helper',
    username: 'admin',
    password: 'admin',
    useLogger: true
  });

You may pass a callback function to the constructor to know if it connected properly

const fb = new Fishbowl({}, (err, res) => {
  if (err) {
    console.log(err);
    return;
  }
});

To use async await use the sendRequestPromise({ req, options, json }) function

const executeQuery = async () => {
  try {
    const part = await fb.sendRequestPromise({ req: 'ExecuteQueryRq', options: { query: 'select * from part where num = "B201"' } });
    const product = await fb.sendRequestPromise({ req: 'ExecuteQueryRq', options: { query: 'select * from product where num = "B202"' } });
    console.log(`Part: ${part}`);
    console.log(`Product: ${product}`);
  } catch (err) {
    console.log(`Err: ${err.code} - ${err.message}`);
  }
}

executeQuery();

All requests by default will send back the data in JSON format.

fb.sendRequest({ req: 'ExecuteQueryRq', options: { query: "select * from part where num='B201'" } }, (err, res) => {
  if (err) {
    console.log(`Err: ${err.code} - ${err.message}`);
    return;
  }

  console.log(`Data: ${res}`);
});

If the request allows it and you desire it, the request could send the data back in CSV format. Notice the json flag as the third attribute in the RequestOptions.

fb.sendRequest({ req: 'ExecuteQueryRq', options: { query: "select * from part where num='B201'" }, json: false }, (err, res) => {
 if (err) {
   console.log(`Err: ${err.code} - ${err.message}`);
   return;
 }

 console.log(`Data: ${res}`);
});

All valid API requests are accepted, not only the requests documented on the Fishbowl API wiki

fb.sendRequest({req: 'PartGetRq', options: { Number: 'B201', GetImage: false } }, (err, res) => {
 if (err) {
   console.log(`Err: ${err.code} - ${err.message}`);
   return;
 }

 console.log(`Data: ${res}`);
});
const Fishbowl = require('fishbowl-js');

const fb = new Fishbowl({}, (err, res) => {
  if (err) {
    console.log(err);
    return;
  }
});

// If you have already approved this integration, this will be seamless.
// If you have not approved the integration, you will need to approve it and then send the login request again.
fb.sendRequest({ req: 'LoginRq' });

const partImport = [
  {
    partNumber: '1API',
    partDescription: 'Fishbowl-js',
    partDetails: '',
    uom: 'ea',
    upc: '',
    partType: 'Inventory',
    active: 'true',
    abcCode: 'N',
    weight: '210',
    weightUom: 'lbs',
    width: '0',
    height: '0',
    length: '0',
    sizeUom: 'ft',
    primaryTracking: '',
    alertNote: '',
    pictureUrl: '',
    poItemType: 'Purchase',
    'Tracks-Lot Number': 'false',
    'Tracks-Revision Level': 'false',
    'Tracks-Expiration Date': 'false',
    'Tracks-Serial Number': 'false'
  },
  {
    partNumber: '2API',
    partDescription: 'Fishbowl-js2',
    partDetails: '',
    uom: 'ea',
    upc: '',
    partType: 'Inventory',
    active: 'false',
    abcCode: 'N',
    weight: '210',
    weightUom: 'lbs',
    width: '0',
    height: '0',
    length: '0',
    sizeUom: 'ft',
    primaryTracking: '',
    alertNote: '',
    pictureUrl: '',
    poItemType: 'Purchase',
    'Tracks-Lot Number': 'false',
    'Tracks-Revision Level': 'false',
    'Tracks-Expiration Date': 'false',
    'Tracks-Serial Number': 'false'
  }
];

fb.sendRequest({ req: 'ImportRq', options: { type: 'ImportPart', row: partImport } }, (err, res) => {
  if (err) {
    console.log(`err: ${err.code} - ${err.message}`);
    return;
  }

  console.log(`Data: ${res}`);
});

fb.sendRequest({ req: 'IssueSORq', options: { soNumber: '50053' } });

const executeQuery = async () => {
  try {
    const part = await fb.sendRequestPromise({ req: 'ExecuteQueryRq', options: { query: "select * from part where num='B201' or num='B202' or num='1API'" }, json: false });
    const product = await fb.sendRequestPromise({ req: 'ExecuteQueryRq', options: { query: "select * from product where num = 'B202'" } });
    console.log(`Part: ${part}`);
    console.log(`Product: ${product}`);
  } catch (err) {
    console.log(`Err: ${err.code} - ${err.message}`);
  }
}

executeQuery();

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published