All Projects → invoiceninja → flutter-package

invoiceninja / flutter-package

Licence: MIT license
Create PDF invoices and accept payments in a Flutter app

Programming Languages

dart
5743 projects
C++
36643 projects - #6 most used programming language
CMake
9771 projects
HTML
75241 projects
c
50402 projects - #5 most used programming language
swift
15916 projects

Projects that are alternatives of or similar to flutter-package

Invoiceninja
Invoices, Expenses and Tasks built with Laravel and Flutter
Stars: ✭ 6,247 (+27060.87%)
Mutual labels:  invoices, tasks, expenses
Akaunting
Free and Online Accounting Software
Stars: ✭ 4,599 (+19895.65%)
Mutual labels:  invoices, expenses
cake
Cake is a powerful and flexible Make-like utility tool. Make Tasks Great Again!
Stars: ✭ 64 (+178.26%)
Mutual labels:  tasks
spinach
Modern Redis task queue for Python 3
Stars: ✭ 46 (+100%)
Mutual labels:  tasks
python-asynchronous-tasks
😎Asynchronous tasks in Python with Celery + RabbitMQ + Redis
Stars: ✭ 37 (+60.87%)
Mutual labels:  tasks
springcrm
An open-source CRM.
Stars: ✭ 14 (-39.13%)
Mutual labels:  invoices
Tasks
Simple tasks & notes manager written in PHP, jQuery and Bootstrap using a custom flat file database.
Stars: ✭ 102 (+343.48%)
Mutual labels:  tasks
hammer
Build Tool for Browser and Node Applications
Stars: ✭ 226 (+882.61%)
Mutual labels:  tasks
Madara
✍️ A way for people to manage their tasks.
Stars: ✭ 17 (-26.09%)
Mutual labels:  tasks
Accomplisher
Motivational app to accomplish daily goals.
Stars: ✭ 16 (-30.43%)
Mutual labels:  tasks
splitwise
A JavaScript SDK for the Splitwise API.
Stars: ✭ 48 (+108.7%)
Mutual labels:  expenses
angular-gantt-schedule-timeline-calendar-example
Angular gantt-schedule-timeline-calendar usage example
Stars: ✭ 15 (-34.78%)
Mutual labels:  tasks
grouptabs
Mobile Web App to organize payments in dynamic groups of people.
Stars: ✭ 40 (+73.91%)
Mutual labels:  expenses
cpp-made-2020-hw
A repo for publishing tasks and tests for mail.ru MADE (big-data school) 2020 C++ course.
Stars: ✭ 34 (+47.83%)
Mutual labels:  tasks
theeye-of-sauron
TheEye Dockers and QuickStart
Stars: ✭ 27 (+17.39%)
Mutual labels:  tasks
ProtoPromise
Robust and efficient library for management of asynchronous operations in C#/.Net.
Stars: ✭ 20 (-13.04%)
Mutual labels:  tasks
EnumerableAsyncProcessor
Process Multiple Asynchronous Tasks in Various Ways - One at a time / Batched / Rate limited / Concurrently
Stars: ✭ 84 (+265.22%)
Mutual labels:  tasks
vscode-projects-plus-todo-plus
Bird's-eye view over your projects, view all your todo files aggregated into one.
Stars: ✭ 25 (+8.7%)
Mutual labels:  tasks
epdtext
A simple display manager app for the WaveShare 2.7in e-Paper Display
Stars: ✭ 18 (-21.74%)
Mutual labels:  tasks
quaderno-api
API documentation and wrappers for Quaderno.
Stars: ✭ 19 (-17.39%)
Mutual labels:  invoices

Invoice Ninja

This package makes it easy to create PDF invoices and accept payments in a Flutter app

https://youtube.com/watch?v=iefk6TOU-Ts

Sample

Features

  • Accept online payment in mobile, web and desktop Flutter apps
  • Supports many payment gateways including Stripe, PayPal and Authorize.net
  • Easily create professional PDF invoices
  • Includes a self-service client portal
  • Many more features...

Note: the package requires the new v5 version of the app [Demo | More info]

To Do

  • Recurring billing
  • Images/documents
  • Tasks and expenses

Installing

dependencies:
  invoiceninja: ^0.0.9

Import

import 'package:invoiceninja/invoiceninja.dart';

The package provides two main classes:

  • InvoiceNinja: Supports the public 'Storefront' routes which allow reading the list of products and creating/finding clients and invoice
  • InvoiceNinjaAdmin: Supports the REST Admin API which uses token based security

Storefront API

Configure

InvoiceNinja.configure(
  'KEY', // Set your company key or use 'KEY' to test
  url: 'https://demo.invoiceninja.com', // Set your selfhost app URL
  debugEnabled: true,
);

Load the product list

final products = await InvoiceNinja.products.load();

Find the product by key

final product = await InvoiceNinja.products.findByKey('product_key');

Create/persist the client

var client = Client.forContact(email: '[email protected]');
client = await InvoiceNinja.clients.save(client);

Create/persist the invoice

var invoice = Invoice.forClient(client, products: [product]);
invoice = await InvoiceNinja.invoices.save(invoice);

Display the PDF invoice

launch(
  'https://docs.google.com/gview?embedded=true&url=${invoice.pdfUrl}',
  forceWebView: true,
);

Accept the payment

var invoiceKey = invoice.key;
launch(invoice.url);

// ...

final invoice = await InvoiceNinja.invoices.findByKey(invoiceKey);
if (invoice.isPaid) {
  // ...
}

You can use the WidgetsBindingObserver interface to run code when the app is resumed.

Consider giving issue #57536 a thumbs up to make this better in the future.

Admin API

Configure

InvoiceNinjaAdmin.configure(
  'TOKEN', // Set your API token or use 'TOKEN' to test
  url: 'https://demo.invoiceninja.com', // Set your selfhost app URL
  debugEnabled: true,
);

Find a client by email

final client = await InvoiceNinjaAdmin.clients.findByEmail(email);

Load all invoices

final payments = await InvoiceNinjaAdmin.payments.load();

Load the payments list

final payments = await InvoiceNinjaAdmin.payments.load();

Find a payment by id

final payment = await InvoiceNinjaAdmin.payments.findById(id);

Create/persist a quote

var quote = Quote.forClient(client, products: [product]);
quote = await InvoiceNinjaAdmin.quotes.save(quote);

Create/persist a credit

var credit = Credit.forClient(client, products: [product]);
credit = await InvoiceNinjaAdmin.credits.save(quote);
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].