{"id":18487249,"url":"https://github.com/rimiti/invoice-it","last_synced_at":"2025-04-10T02:20:24.076Z","repository":{"id":25744856,"uuid":"90026808","full_name":"rimiti/invoice-it","owner":"rimiti","description":":page_with_curl: Generate your orders or your invoices and export them in html, pdf or buffer easily.","archived":false,"fork":false,"pushed_at":"2023-10-16T16:43:15.000Z","size":1593,"stargazers_count":94,"open_issues_count":9,"forks_count":33,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-02T17:05:33.553Z","etag":null,"topics":["generator","html","invoice","invoice-template","module","node","order","order-template","pdf"],"latest_commit_sha":null,"homepage":"https://dimsolution.com/blog/2018-05-29/how-to-easily-generate-order-invoice-pdf-file/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rimiti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-02T11:37:33.000Z","updated_at":"2025-03-10T13:33:59.000Z","dependencies_parsed_at":"2024-10-23T16:46:19.732Z","dependency_job_id":"d86907ca-2ae5-4653-a8ea-6da245b2d9ed","html_url":"https://github.com/rimiti/invoice-it","commit_stats":{"total_commits":320,"total_committers":10,"mean_commits":32.0,"dds":"0.27812499999999996","last_synced_commit":"e21b439eaab133bf249df33be3adaac7e198450d"},"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimiti%2Finvoice-it","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimiti%2Finvoice-it/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimiti%2Finvoice-it/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimiti%2Finvoice-it/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rimiti","download_url":"https://codeload.github.com/rimiti/invoice-it/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248143022,"owners_count":21054694,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["generator","html","invoice","invoice-template","module","node","order","order-template","pdf"],"created_at":"2024-11-06T12:50:21.027Z","updated_at":"2025-04-10T02:20:24.051Z","avatar_url":"https://github.com/rimiti.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# invoice-it\n\n[![Dependencies][prod-dependencies-badge]][prod-dependencies]\n[![Code Climate score][codeclimate-score-badge]][codeclimate-score]\n[![Code Climate coverage][coverage-badge]][coverage]\n[![Code Climate coverage][codeclimate-issues-badge]][codeclimate-issues]\n[![Build Status][travis-badge]][travis-ci]\n[![MIT License][license-badge]][LICENSE]\n[![PRs Welcome][prs-badge]][prs]\n\nGenerate your orders and you invoices and export them easily.\nIf you want some examples, check tests.\n\n## Install\n```\n$ npm install @rimiti/invoice-it --save\n```\n\n## Features\n\n- Generate order / invoice\n- Export to HTML / PDF / Stream\n- Easy to use it\n- Robust implementation with good unit test coverage.\n\n## Demonstration\n\n\u003cimg src=\"https://github.com/rimiti/invoice-it/blob/master/static/images/order.png\" height=\"550\"\u003e \u003cimg src=\"https://github.com/rimiti/invoice-it/blob/master/static/images/invoice.png\" height=\"550\"\u003e\n\n## Usage\n\n\n### Importation\n\n**From import**\n```javascript\nimport invoiceIt from '@rimiti/invoice-it';\n```\n\n**From require**\n```javascript\nconst invoiceIt = require('@rimiti/invoice-it').default;\n```\n\n### Order\n\nTo generate an order:\n\n```js\nimport invoiceIt from '@rimiti/invoice-it';\n\n  const recipient = {\n    company_name: 'Receiver company',\n    first_name: 'Will',\n    last_name: 'Jameson',\n    street_number: '20',\n    street_name: 'Rue Victor Hugo',\n    zip_code: '77340',\n    city: 'Pontault-Combault',\n    country: 'France',\n    phone: '06 00 00 00 00',\n    mail: 'will.jameson@test.com'\n  };\n\n  const emitter = {\n    name: 'Dim Solution',\n    street_number: '15',\n    street_name: 'Rue Jean Jaures',\n    zip_code: '75012',\n    city: 'Paris',\n    country: 'France',\n    phone: '01 00 00 00 00',\n    mail: 'contact@dimsolution.com',\n    website: 'www.dimsolution.com'\n  };\n\n  const order = invoiceIt.create(recipient, emitter);\n```\n\nYou can also use getter / setters like that\n\n```js\nconst order = invoiceIt.create();\n\norder.recipient.company_name = 'Receiver company';\norder.recipient.first_name = 'Will';\norder.recipient.last_name = 'Jameson';\norder.recipient.street_number = '20';\norder.recipient.street_name = 'Rue Victor Hugo';\norder.recipient.zip_code = '77340';\norder.recipient.city = 'Pontault-Combault';\norder.recipient.country = 'France';\norder.recipient.phone = '06 00 00 00 00';\norder.recipient.mail = 'will.jameson@test.com';\n\norder.emitter.name = 'Dim Solution';\norder.emitter.street_number = '15';\norder.emitter.street_name = 'Rue Jean Jaures';\norder.emitter.zip_code = '75012';\norder.emitter.city = 'Paris';\norder.emitter.country = 'France';\norder.emitter.phone = '01 00 00 00 00';\norder.emitter.mail = 'contact@dimsolution.com';\norder.emitter.website = 'www.dimsolution.com';\n```\n\nReturn order object\n```js\norder.getOrder();\n```\n\nReturn html order\n```js\norder.getOrder().toHTML();\n```\n\nSave html order into file (default filepath: 'order.html')\n```js\norder.getOrder().toHTML().toFile('./order.html')\n  .then(() =\u003e {\n      console.log('HTML file created.');\n  });\n```\n\nSave html order into file (default filepath: 'order.pdf')\n```js\norder.getOrder().toPDF().toFile('./order.pdf')\n  .then(() =\u003e {\n     console.log('PDF file created.');\n  });\n```\n\n### Invoice\n\nTo generate an invoice:\n\n```js\nimport invoiceIt from '@rimiti/invoice-it';\n\n  const recipient = {\n    company_name: 'Receiver company',\n    first_name: 'Will',\n    last_name: 'Jameson',\n    street_number: '20',\n    street_name: 'Rue Victor Hugo',\n    zip_code: '77340',\n    city: 'Pontault-Combault',\n    country: 'France',\n    phone: '06 00 00 00 00',\n    mail: 'will.jameson@test.com'\n  };\n\n  const emitter = {\n    name: 'Dim Solution',\n    street_number: '15',\n    street_name: 'Rue Jean Jaures',\n    zip_code: '75012',\n    city: 'Paris',\n    country: 'France',\n    phone: '01 00 00 00 00',\n    mail: 'contact@dimsolution.com',\n    website: 'www.dimsolution.com'\n  };\n\n  const invoice = invoiceIt.create(recipient, emitter);\n```\n\nYou can also use getter / setters like that\n\n```js\nconst invoice = invoiceIt.create();\n\ninvoice.recipient.company_name = 'Receiver company';\ninvoice.recipient.first_name = 'Will';\ninvoice.recipient.last_name = 'Jameson';\ninvoice.recipient.street_number = '20';\ninvoice.recipient.street_name = 'Rue Victor Hugo';\ninvoice.recipient.zip_code = '77340';\ninvoice.recipient.city = 'Pontault-Combault';\ninvoice.recipient.country = 'France';\ninvoice.recipient.phone = '06 00 00 00 00';\ninvoice.recipient.mail = 'will.jameson@test.com';\n\ninvoice.emitter.name = 'Dim Solution';\ninvoice.emitter.street_number = '15';\ninvoice.emitter.street_name = 'Rue Jean Jaures';\ninvoice.emitter.zip_code = '75012';\ninvoice.emitter.city = 'Paris';\ninvoice.emitter.country = 'France';\ninvoice.emitter.phone = '01 00 00 00 00';\ninvoice.emitter.mail = 'contact@dimsolution.com';\ninvoice.emitter.website = 'www.dimsolution.com';\n```\n\nReturn invoice object\n```js\ninvoice.getInvoice();\n```\n\nReturn html invoice\n```js\ninvoice.getInvoice().toHTML();\n```\n\nSave html invoice into file (default filepath: 'invoice.html')\n```js\ninvoice.getInvoice().toHTML().toFile('./invoice.html')\n  .then(() =\u003e {\n      console.log('HTML file created.');\n  });\n```\n\nSave html invoice into file (default filepath: 'invoice.pdf')\n```js\ninvoice.getInvoice().toPDF().toFile('./invoice.pdf')\n  .then(() =\u003e {\n      console.log('PDF file created.');\n  });\n```\n\nAdd custom fields to invoice\n```js\nconst paymentId = {\n  key: 'invoice_header_paymentId_value',\n  value: paymentRef\n};\nconst phrases = ['invoice_header_payment_reference', paymentId];\ninvoice.getInvoice(phrases).toPDF()\n```\n\n### Customization\n\nAll below globals attributes are totally customizable from the `.configure()` method or from `setters`:\n\n**From .configure()**\n\nThe configure method can override all default attributes presents [in this file](https://github.com/rimiti/invoice-it/blob/master/src/index.js).\n\nCustomization example:\n\nTo generate and export in PDF an invoice with:\n    - Logo url: http://example.com/logo.png\n    - Date format: YYYY-MM-DD\n    - Your invoice pattern: INVOICE-1901_00001\n    - Invoice note: It's my custom node!\n\n```js\nimport invoiceIt from '@rimiti/invoice-it';\n\ninvoiceIt.configure({\n  global: {\n    logo: 'http://example.com/logo.png',\n    invoice_reference_pattern: '$prefix{INVOICE}$date{YYMM}$separator{_}$id{00000}',\n    invoice_note: 'It\\'s my custom node!',\n    date_format: 'YYYY-MM-DD',\n  },\n});\n\nconst recipient = {\n  company_name: 'Receiver company',\n  first_name: 'Will',\n  last_name: 'Jameson',\n  street_number: '20',\n  street_name: 'Rue Victor Hugo',\n  zip_code: '77340',\n  city: 'Pontault-Combault',\n  country: 'France',\n  phone: '06 00 00 00 00',\n  mail: 'will.jameson@test.com'\n};\n\nconst emitter = {\n  name: 'Dim Solution',\n  street_number: '73',\n  street_name: 'Rue Jean Jaures',\n  zip_code: '75012',\n  city: 'Paris',\n  country: 'France',\n  phone: '01 00 00 00 00',\n  mail: 'contact@dimsolution.com',\n  website: 'www.dimsolution.com'\n};\n\nconst invoice = invoiceIt.create(recipient, emitter);\n\ninvoice.id = 1;\norder.getInvoice().toPDF().toFile();\n```\n\n**From setters**\n\n```js\nimport invoiceIt from '@rimiti/invoice-it';\n\nconst recipient = {\n  company_name: 'Receiver company',\n  first_name: 'Will',\n  last_name: 'Jameson',\n  street_number: '20',\n  street_name: 'Rue Victor Hugo',\n  zip_code: '77340',\n  city: 'Pontault-Combault',\n  country: 'France',\n  phone: '06 00 00 00 00',\n  mail: 'will.jameson@test.com'\n};\n\nconst emitter = {\n  name: 'Dim Solution',\n  street_number: '73',\n  street_name: 'Rue Jean Jaures',\n  zip_code: '75012',\n  city: 'Paris',\n  country: 'France',\n  phone: '01 00 00 00 00',\n  mail: 'contact@dimsolution.com',\n  website: 'www.dimsolution.com'\n};\n\nconst invoice = invoiceIt.create(recipient, emitter);\n\ninvoice.global.logo = 'http://example.com/logo.png';\ninvoice.global.invoice_reference_pattern = '$prefix{INVOICE}$date{YYMM}$separator{_}$id{00000}';\ninvoice.global.invoice_note = 'It\\'s my custom node!';\ninvoice.global.date_format = 'YYYY-MM-DD';\ninvoice.id = 1;\norder.getInvoice().toPDF().toFile();\n```\n\n### i18n\n\nTo add more language:\n\n```js\nimport invoiceIt from '@rimiti/invoice-it';\n\ninvoiceIt.configure({\n  language: {\n    locales: ['en', 'pl'],\n    directory: `${__dirname}/path/to/locales`,\n    defaultLocale: 'en'\n  }\n});\n```\n\n## Scripts\n\nRun using npm run \u003cscript\u003e command.\n\n    clean - remove coverage data, Jest cache and transpiled files,\n    test - run tests with coverage,\n    test:watch - interactive watch mode to automatically re-run tests,\n    build - compile source files,\n    build:watch - interactive watch mode, compile sources on change.\n\n## License\nMIT © [Dimitri DO BAIRRO](https://github.com/rimiti/invoice-it/blob/master/LICENSE)\n\n[prod-dependencies-badge]: https://david-dm.org/rimiti/invoice-it/status.svg\n[prod-dependencies]: https://david-dm.org/rimiti/invoice-it\n[codeclimate-score-badge]: https://codeclimate.com/github/rimiti/invoice-it/badges/gpa.svg\n[codeclimate-score]: https://codeclimate.com/github/rimiti/invoice-it\n[coverage-badge]: https://codecov.io/gh/rimiti/invoice-it/branch/master/graph/badge.svg\n[coverage]: https://codecov.io/gh/rimiti/invoice-it\n[codeclimate-issues-badge]: https://codeclimate.com/github/rimiti/invoice-it/badges/issue_count.svg\n[codeclimate-issues]: https://codeclimate.com/github/rimiti/invoice-it\n[travis-badge]: https://travis-ci.org/rimiti/invoice-it.svg?branch=master\n[travis-ci]: https://travis-ci.org/rimiti/invoice-it\n[license-badge]: https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square\n[license]: https://github.com/rimiti/invoice-it/blob/master/LICENSE\n[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frimiti%2Finvoice-it","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frimiti%2Finvoice-it","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frimiti%2Finvoice-it/lists"}