intrader
v0.1.3
Published
e-commerce shopping cart npm module
Downloads
8
Maintainers
Readme
inTrader
Overview
inTrader is a node shopping cart module for e-commerce integration and provides the basic web shop cart functionality for online store. Includes handling of items, currency, weight, payment methods and customer details.
To begin
Install it:
$ npm install inTrader --save-dev
Require it and use:
var should = require('inTrader'); var cart = new inTrader;
The inTrader object consists of the following sub components,
Customer, Payment, VAT, Shipment, Currency, Items,
inTrader Functions
.invoiceNumber
Set or get the order invoice number. A initial number is set when creating the cart with the following format I-YYYYMMDDHHMM, which is the year, month, day, hour and minute the cart was initiated.
var cart = new inTrader();
cart.invoiceNumber(); // Will return something similar to this I-YYYMMDDHHMM
cart.invoiceNumber('Invoice01'); // Set the invoice number Invoice01
.orderNumber
Set or get the order number. A initial number is set when creating the cart with the following format O-YYYYMMDDHHMM, which is the year, month, day, hour and minute the cart was initiated.
var cart = new inTrader();
cart.orderNumber(); // Will return something similar to this O-201403282210
cart.invoiceNumber('Invoice01'); // Set the invoice number Invoice01
.baseCurrency
Set or get the cart base currency using the 'XXX' format such as EUR, USD, GBP. The base currency will be used if no currency is set when requesting item and sub total for order.
var cart = new inTrader();
cart.baseCurrency('USD'); // Set the base currency to USD
cart.baseCurrency(); // fetch the base currency, 'USD' value
.orderDate
Set or get order date. The order date is a regular javascript Date Object
var cart = new inTrader();
cart.orderDate(); // Will return the current Date
cart.orderDate().getDate(); // Will return the order date day of the month
cart.orderDate().getDay(); // Will return the order date day of the week
cart.orderDate().getFullYear(); // Returns the order date year in 4 digits
cart.orderDate().setDate(20); // Set day to 20th day of month
cart.orderDate().setMonth(2); // Set the Month to the March, January is 0, February is 1, and so on
cart.orderDate().setFullYear(1999); // Set order date to year 1999
.expiryDate
Set or get expiry date for order. The expiry date is a regular javascript Data Object to work with dates and times
var cart = new inTrader();
cart.expiryDate(); // Will return the current Date
cart.expiryDate().getDate(); // Will return the order date day of the month
cart.expiryDate().getDay(); // Will return the order date day of the week
cart.expiryDate().getFullYear(); // Returns the order date year in 4 digits
cart.expiryDate().setDate(20); // Set day to 20th day of month
cart.expiryDate().setMonth(2); // Set the Month to the March, January is 0, February is 1, and so on
cart.expiryDate().setFullYear(1999); // Set order date to year 1999
.currencies
Array of the different currencies used in cart
var cart = new inTrader();
cart.currencies();
.items
Array of the order cart item
var cart = new inTrader();
cart.items();
.addItem
Add item to cart
cart.addItem({'ID' : 101, 'itemNumber' : 'product_1', 'price': 12.5, 'weight': 120});
.removeItem
Remove item from cart
var cart = new inTrader();
cart.addItem({'ID' : 101, 'itemNumber' : 'product_1', 'price': 12.5, 'weight': 120});
cart.removeItem({'ID' : 101});
.updateItem
Update cart item
var cart = new inTrader();
cart.addItem({'ID' : 101, 'itemNumber' : 'product_1', 'price': 12.5, 'weight': 120});
cart.updateItem({'ID' : 101, 'itemNumber' : 'product_1_updated', 'price': 125.5, 'weight': 120});
.addCurrency
Add a currency
var cart = new inTrader();
cart.addItem({'ID' : 101, 'itemNumber' : 'product_1', 'price': 12.5, 'weight': 120})
cart.addCurrency({'code' : 'EUR', 'rate' : 0.11368, 'symbol': '�'});
cart.addCurrency({'code' : 'GBP', 'rate' : 0.093750761});
cart.itemTotal('EUR') // Item total =1.421;
cart.itemTotal('GBP') // Item total = 1.17188451;
cart.baseCurrency('EUR');
cart.itemTotal // item total = 1.421;
cart.baseCurrency = 'GBP'; // total = 1.17188451;
.removeCurrency
Remove currency
var cart = new inTrader();
cart.addCurrency({'code' : 'EUR', 'rate' : 0.11368, 'symbol': '�'});
cart.addCurrency({'code' : 'GBP', 'rate' : 0.093750761});
cart.removeCurrency('EUR');
.updateCurrency
Update a currency
var cart = new inTrader();
cart.addItem({'ID' : 101, 'itemNumber' : 'product_1', 'price': 12.5, 'weight': 120});
cart.addCurrency({'code' : 'EUR', 'rate' : 1.11368, 'symbol': '�'});
cart.itemTotal.should.be = 13.921;
cart.updateCurrency({'code' : 'EUR', 'rate' : 1.21368}); //itemTotal = 15.171;
.reset
Reset cart, clear items and reset total to 0
var cart = new inTrader();
cart.reset();
.vatTotal
Return the vat total based on all the items in cart
var cart = new inTrader();
cart.addItem({'ID' : 101, 'itemNumber' : 'product_1', 'price': 12.5, 'weight': 120});
cart.vat().rate(0.25); //Set the vat rate to 25%
cart.vatTotal() // 3.125,
.itemTotal
Return the total sum of all items in cart
var cart = new inTrader();
cart.addItem({'ID' : 101, 'itemNumber' : 'product_1', 'price': 12.5, 'weight': 120});
cart.addCurrency({'code' : 'EUR', 'rate' : 1.11368, 'symbol': '�'});
cart.itemTotal() // 13.921, The first added currency will serve as base currency an it's rate will be used to calculate the total (12.5 * 1.11368);
cart.itemTotal('EUR') //13.921, Same as previous since this matches the base currency;
.subTotal
Return the sub total of cart, includes item total and fees for shipment and payment
var cart = new inTrader();
cart.addItem({'ID' : 101, 'itemNumber' : 'product_1', 'price': 10, 'weight': 120});
cart.payment().method('PayPal');
cart.payment().registered(false);
cart.payment().fee (0.1);
cart.payment().text('How to pay with paypal');
cart.subTotal() // 10.1;
.weight
Returns the total weigh of the cart items
var cart = new inTrader();
cart.addItem({'ID' : 101, 'itemNumber' : 'product_1', 'price': 10, 'weight': 120});
cart.weight() //120
.toJSON
Return cart in JSON format
var cart = new inTrader();
cart.addItem({'ID' : 101, 'itemNumber' : 'product_1', 'price': 10, 'weight': 120});
cartJSON = cart.toJSON();
console.log(cartJSON.items[0].itemNumber); // product_1
Customer Functions
Set and get for the following customer values, ID, firstName, lastName, customerNumber, pinNumber, address, address2, zip, city, country, countryCode, deliveryAddress, deliveryZip, deliveryCity, email, mobileNumber, company, vatNumber;
var cart = new inTrader();
cart.customer() // The Customer object
cart.customer().firstName('Sten-�ke');
cart.customer().lastName('Cederr��k');
cart.customer().should.have.property('customerNumber');
cart.customer().pinNumber('19891012-1234');
cart.customer().address('vems gata');
cart.customer().address2('c/o');
cart.customer().zip('SE214 24');
cart.customer().city('Xl�v');
cart.customer().country('Sweden');
cart.customer().countryCode('Se');
cart.customer().deliveryAddress('other street');
cart.customer().deliveryZip('');
cart.customer().deliveryCity('');
cart.customer().email('[email protected]');
cart.customer().mobileNumber('1234567');
cart.customer().company('AB Cederr��ken');
cart.customer().vatNumber('SE891012123401');
Payment Functions
Set and get for the payment functions registered, method, fee, text
var cart = new inTrader();
cart.payment().method('PayPal');
cart.payment().registered(false); //Payment has not been registered
cart.payment().fee (0.1);
cart.payment().text('How to pay description');
Currency Functions
Set and get for the payment options code, rate, symbol
var cart = new inTrader();
var currency = new inTraderCurrency();
currency.code('USD');
currency.rate(1);
currency.symbol('$');
cart.addCurrency(currency);
cart.currencies().length.should.equal(1);
Shipment Functions
Set and get for the payment options method, fee, zone
var cart = new inTrader();
cart.shipment().fee(30);
cart.shipment().zone(1);
cart.shipment().method('Regular Post');
VAT Functions
.rate
Get and set for the cart VAT rate
var cart = new inTrader();
cart.vat().rate(0.25);
Item Functions
Get and set for Item object ID, qty, price, weight, itemNumber
var cart = new inTrader();
var item = new inTraderItem();
item.ID(101);
item.itemNumber('product_1');
item.price(12.5);
item.weight(120);
cart.addItem(item);
The item can be added directly to cart if you pass the argument as a object
var cart = new inTrader();
cart.addItem({'ID' : 101, 'itemNumber' : 'product_1', 'price': 12.5, 'weight': 120});
#Complete Order
``````js
var cart = new inTrader();
cart.vat().rate(0.25); // Set the vat rate to 25%
//Add some items to the cart
cart.addItem({'ID' : 1, 'itemNumber' : 'product_1', 'price': 12.5, 'weight': 122});
cart.addItem({'ID' : 2, 'itemNumber' : 'product_2', 'price': 22.5, 'weight': 100});
cart.addItem({'ID' : 3, 'itemNumber' : 'product_3', 'price': 2.5, 'weight': 20});
cart.addItem({'ID' : 4, 'itemNumber' : 'product_4', 'price': 8.75, 'weight': 28});
cart.addItem({'ID' : 5, 'itemNumber' : 'product_5', 'price': 125, 'weight': 1200});
cart.totalWeight(); // 1470;
cart.itemTotal(); // 171.25;
cart.subTotal(); // 171.25;
cart.shipment().fee(75);
cart.payment().fee(4.78);
cart.itemTotal(); // 171.25
cart.subTotal(); // 251.03
cart.vatTotal() // 42.8125
cart.payment().registered(); // false
cart.addCurrency({'code' : 'SEK', 'rate' : 1});
cart.addCurrency({'code' : 'EUR', 'rate' : 0.11368, 'symbol': '�'});
cart.addCurrency({'code' : 'GBP', 'rate' : 0.093750761});
cart.addCurrency({'code' : 'USD', 'rate' : 0.152744});
cart.itemTotal('SEK') // 171.25;
cart.subTotal('SEK') // 251.03;
cart.itemTotal('EUR') // 19.4677;
cart.itemTotal('GBP') // 16.05481782125;
cart.itemTotal('USD') // 26.15741;
cart.subTotal('EUR') // 28.5370904;
cart.subTotal('GBP') // 23.53425353383;
cart.subTotal('USD') // 38.343326319999996;
cart.vatTotal('EUR') // 4.866925;
cart.vatTotal('GBP') // 4.0137044553125;
cart.vatTotal('USD') // 6.5393525;
cart.customer().firstName('Ragnar');
cart.customer().lastName('R��k');
cart.customer().customerNumber('-');
cart.customer().pinNumber('560312-1212');
cart.customer().address('Valhallav�gen 7');
cart.customer().address2('c/o Sleipner Johansson');
cart.customer().zip('112 34');
cart.customer().city('Lokeborg');
cart.customer().country('Sweden');
cart.customer().countryCode('se');
cart.customer().deliveryAddress('');
cart.customer().deliveryZip('');
cart.customer().deliveryCity('');
cart.customer().email('[email protected]');
cart.customer().mobileNumber('0737212345');
cart.customer().company('AB BB');
cart.customer().vatNumber('SE560312121201');
cart.payment().registered(true);
cart.reset();
cart.payment().registered() // false;
Feedback How to Contribute
- Fork and edit
- Submit pull request for consideration
Contribute Style Guide
- Be clear on your commit messages
- Every pull request may not be accepted. Don't blame anybody.