:page_with_curl: Generate your orders or your invoices and export them in html, pdf or buffer easily.
Generate your orders and you invoices and export them easily. If you want some examples, check tests.
$ npm install @rimiti/invoice-it --save
From import
import invoiceIt from '@rimiti/invoice-it';
From require
const invoiceIt = require('@rimiti/invoice-it').default;
To generate an order:
import invoiceIt from '@rimiti/invoice-it';
const recipient = {
company_name: 'Receiver company',
first_name: 'Will',
last_name: 'Jameson',
street_number: '20',
street_name: 'Rue Victor Hugo',
zip_code: '77340',
city: 'Pontault-Combault',
country: 'France',
phone: '06 00 00 00 00',
mail: '[email protected]'
};
const emitter = {
name: 'Dim Solution',
street_number: '15',
street_name: 'Rue Jean Jaures',
zip_code: '75012',
city: 'Paris',
country: 'France',
phone: '01 00 00 00 00',
mail: '[email protected]',
website: 'www.dimsolution.com'
};
const order = invoiceIt.create(recipient, emitter);
You can also use getter / setters like that
const order = invoiceIt.create();
order.recipient.company_name = 'Receiver company';
order.recipient.first_name = 'Will';
order.recipient.last_name = 'Jameson';
order.recipient.street_number = '20';
order.recipient.street_name = 'Rue Victor Hugo';
order.recipient.zip_code = '77340';
order.recipient.city = 'Pontault-Combault';
order.recipient.country = 'France';
order.recipient.phone = '06 00 00 00 00';
order.recipient.mail = '[email protected]';
order.emitter.name = 'Dim Solution';
order.emitter.street_number = '15';
order.emitter.street_name = 'Rue Jean Jaures';
order.emitter.zip_code = '75012';
order.emitter.city = 'Paris';
order.emitter.country = 'France';
order.emitter.phone = '01 00 00 00 00';
order.emitter.mail = '[email protected]';
order.emitter.website = 'www.dimsolution.com';
Return order object
order.getOrder();
Return html order
order.getOrder().toHTML();
Save html order into file (default filepath: 'order.html')
order.getOrder().toHTML().toFile('./order.html')
.then(() => {
console.log('HTML file created.');
});
Save html order into file (default filepath: 'order.pdf')
order.getOrder().toPDF().toFile('./order.pdf')
.then(() => {
console.log('PDF file created.');
});
To generate an invoice:
import invoiceIt from '@rimiti/invoice-it';
const recipient = {
company_name: 'Receiver company',
first_name: 'Will',
last_name: 'Jameson',
street_number: '20',
street_name: 'Rue Victor Hugo',
zip_code: '77340',
city: 'Pontault-Combault',
country: 'France',
phone: '06 00 00 00 00',
mail: '[email protected]'
};
const emitter = {
name: 'Dim Solution',
street_number: '15',
street_name: 'Rue Jean Jaures',
zip_code: '75012',
city: 'Paris',
country: 'France',
phone: '01 00 00 00 00',
mail: '[email protected]',
website: 'www.dimsolution.com'
};
const invoice = invoiceIt.create(recipient, emitter);
You can also use getter / setters like that
const invoice = invoiceIt.create();
invoice.recipient.company_name = 'Receiver company';
invoice.recipient.first_name = 'Will';
invoice.recipient.last_name = 'Jameson';
invoice.recipient.street_number = '20';
invoice.recipient.street_name = 'Rue Victor Hugo';
invoice.recipient.zip_code = '77340';
invoice.recipient.city = 'Pontault-Combault';
invoice.recipient.country = 'France';
invoice.recipient.phone = '06 00 00 00 00';
invoice.recipient.mail = '[email protected]';
invoice.emitter.name = 'Dim Solution';
invoice.emitter.street_number = '15';
invoice.emitter.street_name = 'Rue Jean Jaures';
invoice.emitter.zip_code = '75012';
invoice.emitter.city = 'Paris';
invoice.emitter.country = 'France';
invoice.emitter.phone = '01 00 00 00 00';
invoice.emitter.mail = '[email protected]';
invoice.emitter.website = 'www.dimsolution.com';
Return invoice object
invoice.getInvoice();
Return html invoice
invoice.getInvoice().toHTML();
Save html invoice into file (default filepath: 'invoice.html')
invoice.getInvoice().toHTML().toFile('./invoice.html')
.then(() => {
console.log('HTML file created.');
});
Save html invoice into file (default filepath: 'invoice.pdf')
invoice.getInvoice().toPDF().toFile('./invoice.pdf')
.then(() => {
console.log('PDF file created.');
});
Add custom fields to invoice
const paymentId = {
key: 'invoice_header_paymentId_value',
value: paymentRef
};
const phrases = ['invoice_header_payment_reference', paymentId];
invoice.getInvoice(phrases).toPDF()
All below globals attributes are totally customizable from the .configure()
method or from setters
:
From .configure()
The configure method can override all default attributes presents in this file.
Customization example:
To generate and export in PDF an invoice with: - Logo url: http://example.com/logo.png - Date format: YYYY-MM-DD - Your invoice pattern: INVOICE-1901_00001 - Invoice note: It's my custom node!
import invoiceIt from '@rimiti/invoice-it';
invoiceIt.configure({
global: {
logo: 'http://example.com/logo.png',
invoice_reference_pattern: '$prefix{INVOICE}$date{YYMM}$separator{_}$id{00000}',
invoice_note: 'It\'s my custom node!',
date_format: 'YYYY-MM-DD',
},
});
const recipient = {
company_name: 'Receiver company',
first_name: 'Will',
last_name: 'Jameson',
street_number: '20',
street_name: 'Rue Victor Hugo',
zip_code: '77340',
city: 'Pontault-Combault',
country: 'France',
phone: '06 00 00 00 00',
mail: '[email protected]'
};
const emitter = {
name: 'Dim Solution',
street_number: '73',
street_name: 'Rue Jean Jaures',
zip_code: '75012',
city: 'Paris',
country: 'France',
phone: '01 00 00 00 00',
mail: '[email protected]',
website: 'www.dimsolution.com'
};
const invoice = invoiceIt.create(recipient, emitter);
invoice.id = 1;
order.getInvoice().toPDF().toFile();
From setters
import invoiceIt from '@rimiti/invoice-it';
const recipient = {
company_name: 'Receiver company',
first_name: 'Will',
last_name: 'Jameson',
street_number: '20',
street_name: 'Rue Victor Hugo',
zip_code: '77340',
city: 'Pontault-Combault',
country: 'France',
phone: '06 00 00 00 00',
mail: '[email protected]'
};
const emitter = {
name: 'Dim Solution',
street_number: '73',
street_name: 'Rue Jean Jaures',
zip_code: '75012',
city: 'Paris',
country: 'France',
phone: '01 00 00 00 00',
mail: '[email protected]',
website: 'www.dimsolution.com'
};
const invoice = invoiceIt.create(recipient, emitter);
invoice.global.logo = 'http://example.com/logo.png';
invoice.global.invoice_reference_pattern = '$prefix{INVOICE}$date{YYMM}$separator{_}$id{00000}';
invoice.global.invoice_note = 'It\'s my custom node!';
invoice.global.date_format = 'YYYY-MM-DD';
invoice.id = 1;
order.getInvoice().toPDF().toFile();
To add more language:
import invoiceIt from '@rimiti/invoice-it';
invoiceIt.configure({
language: {
locales: ['en', 'pl'],
directory: `${__dirname}/path/to/locales`,
defaultLocale: 'en'
}
});
Run using npm run <script> command.
clean - remove coverage data, Jest cache and transpiled files,
test - run tests with coverage,
test:watch - interactive watch mode to automatically re-run tests,
build - compile source files,
build:watch - interactive watch mode, compile sources on change.
MIT © Dimitri DO BAIRRO