Home
Softono

Node Sellsy

Open source MIT JavaScript
17
Stars
7
Forks
3
Issues
2
Watchers
3 years
Last Commit

 About Node Sellsy

Node Sellsy API wrapper

Platforms

Web Self-hosted

Languages

JavaScript

Need Help Installing Node Sellsy?

We provide expert installation service for this software. Our team will install, configure, and secure Node Sellsy on your server. plans start at just $30.

Node Sellsy

View on GitHub

node-sellsy

npm license github-issues

nodei.co

Node Sellsy API wrapper - works in NodeJS and in the browser.

The official Sellsy API is PHP based so here's a JavaScript handy replacement.

It can helps you automate most of Sellsy from their API.

For example i use a Stripe webhook to automate actions in Sellsy.

Features

QuickStart

npm i --save node-sellsy

var Sellsy = require("node-sellsy");

var sellsy = new Sellsy({
  creds: {
    consumerKey: "myConsumerKey",
    consumerSecret: "myConsumerSecret",
    userToken: "myUserToken",
    userSecret: "myUserSecret",
  },
});

var params = {
  search: {
    contains: "test",
  },
};

sellsy
  .api({
    method: "Client.getList",
    params: params,
  })
  .then((data) => {
    console.log("data", data);
  })
  .catch((e) => {
    console.log("error:", e);
  });

API

You can access the full Sellsy API using sellsy.api({ method, params }).

This call returns a promise.

Browser usage

Sellsy API doesnt provide CORS access so here's a drop-in proxy you can deploy on your own to use node-sellsy on the client : revolunet/sellsy-proxy.

Then, define the endPoint when creating your Sellsy instance :

var sellsy = new Sellsy({
  creds,
  endPoint: "http://path/to/sellsy/proxy",
});

Higher-level API methods :

Customer

Document

  • sellsy.documents.create(data)
  • sellsy.documents.createPayment(docType, docId, paymentData)
  • sellsy.documents.getList(docType, search)
  • sellsy.documents.getById(docType, docId)
  • sellsy.documents.updateStep(docType, docId, step)

Scripts

  • npm run readme : node ./node_modules/node-readme/bin/node-readme.js
  • npm run test : find ./spec -iname '*.spec.js' -exec ./node_modules/.bin/babel-node {} \; | ./node_modules/.bin/tap-spec
  • npm run zuul : ./node_modules/zuul/bin/zuul -- spec/**/*.spec.js
  • npm run build : babel -d ./dist ./src

Examples

Create an invoice

let sellsy = new Sellsy({
  creds: {
    consumerKey: "myConsumerKey",
    consumerSecret: "myConsumerSecret",
    userToken: "myUserToken",
    userSecret: "myUserSecret",
  },
});

const customerIdent = "1234";
const amountHorsTaxes = 42;

sellsy.customers.get({ ident: customerIdent }).then((customer) => {
  const documentData = {
    document: {
      doctype: "invoice",
      thirdid: customer.id,
      notes: customer.email,
      currency: "1",
      displayedDate: new Date().getTime() / 1000,
      subject: "Sujet de la facture",
      tags: "bookeo,stripe",
    },
    row: {
      1: {
        // use 'item' for object from catalog
        row_type: "once",
        row_name: "titre ligne facture",
        row_linkedid: null,
        row_notes: "notes ligne facture",
        row_tax: 20,
        row_unitAmount: amountHorsTaxes,
        row_qt: 1,
      },
    },
  };

  return sellsy.documents.create(documentData);
});

Then you can use

sellsy.documents.updateStep(createdDocument.type, createdDocument.id, 'paid') to mark invoice as paid and sellsy.documents.createPayment to record the payment method

Tests

  Customers.create should call sellsy api

    ✔ should call API twice
    ✔ should call Client.create with correct data
    ✔ should call Client.getList with correct data

  Customers.get should call sellsy api

    ✔ should call API
    ✔ should call get with correct data
    ✔ should return first result

  sellsy.api should be defined

    ✔ should be equal

  sellsy.api should init call oAuth.OAuth with correct parameters

    ✔ consumerKey
    ✔ consumerSecret

  sellsy.api post correct data to API

    ✔ userToken
    ✔ userSecret
    ✔ request
    ✔ io_mode
    ✔ method
    ✔ params

  Sellsy should use default api endPoint

    ✔ https://apifeed.sellsy.com/0/

  Sellsy should use given api endPoint

    ✔ http://path.to/proxy/test/


  total:     17
  passing:   17
  duration:  1.8s

Author

Julien Bouquillon [email protected] http://github.com/revolunet and contributors

License