Generate Invoice ID
When invoices are saved into the couchdb database, they need an _id to uniquely identify themselves. It is possible to let couchdb generate the _id value. However using couchdb-generated _id values means that we need to perform existance checks client-side before saving a invoice to ensure uniqueness
There should only every be a single record for a given invoice in the database. Couchdb internally requires that each document have a unique _id value. If the _id for a invoice is generated manually we can ensure each invoice only gets saved once.
Example
Each invoice can be uniquely identified using the following fields.
- supplierCode
- billingSupplierCode
- billID
- fromDate
- toDate
To generate the _id this module concatenates these values and calculates the sha1 hash value of the concatenated string. The sha1 hash is then used as the _id value
var generateInvoiceID = var generateData = supplierCode: 'NST' billingSupplierCode: 'HES' billID: 'fooBillID' fromDate: '2011-01-19 00:00:00 +00:00' toDate: '2011-02-20 00:00:00 +00:00'
Implementation
See index.js
for a implementation details
Tests
To run the tests execute in the shell
# install development dependencies npm install# run tests npm test