112

Product support

Read the plugin support instructions.

Categories

You can create an unlimited number of invoices for users (customers). These invoices can be emailed or downloaded as PDF. It is also possible to pay these invoices using my FREE Briddle.Omnipay plugin and to use my Briddle.Members plugin to create recurring invoices.

Features

I want you to get excited about this plugin and I understand that that will only happen if you can really make it your own.

STATUS FEATURE
YES THOROUGHLY SUPPORTED
YES CONCISE DOCUMENTATION
YES MULTILINGUAL
YES PERMISSIONS
YES EXTENDABLE (USING EVENTS)
YES CREATE/EDIT/DELETE INVOICES FROM YOUR CODE [NEW]
YES AUTOMAGICALLY CREATE ORDER IF DEAL IN Briddle.Crm IS MARKED WON [NEW]
YES ADD TAB TO RainLab.User PLUGIN WITH INVOICES FOR A USER [NEW]
YES FULLY EDITABLE INVOICE TEMPLATE
YES INVOICES COMPONENT (show a list of invoices for a logged in user)
YES MAIL INVOICE
YES DOWNLOAD INVOICE AS PDF
YES LOG (AND SHOW) WHEN EMAILS ARE SEND [NEW]
YES MARK ORDERS AS PAID IF PAID WITH MY FREE PLUGIN Briddle.Omnipay [NEW]
YES ONLINE PAYMENTS USING MY FREE PLUGIN Briddle.Omnipay
YES RECURRING INVOICES USING MY PLUGIN Briddle.Members

You can complement and extend this plugin with various other (free and paid) plugins. See the documentation tab for more information.

Support

Please use the Support Forum (on the left side of the page for any theme or plugin) or send me a message. I also offer design and development services. You can visit my website for more information. Do not use reviews to ask for support.

IMPORTANT NOTICE! All my activities on October CMS are suspended indefinitely after my second burn-out. I do not offer any support or updates

Like this plugin?

Did you know that only about 30% of my plugins are paid (70% of my plugins are free) and that 30% of your purchase goes to help fund the October Project? If you purchase this plugin, you can help me to develop it further, provide support for it or make new plugins.

Why is this a paid plugin?

Someting that is free has little or no perceived value. Users do not commit to free products and only use them untill something else that looks nice and is free comes along. When I invest my time in the development of a new plugin or theme I commit to supporting and maintaining it. I ask my customers to do the same. I do not make money from this plugin by advertisements, upgrades or additional services like hosting or setup. I simply sell the software.

Did you know that only about 30% of my plugins are paid (70% of my plugins are free) and that 30% of your purchase or donation goes to help fund the October Project?

My plugins take many hours to develop (10-120+) and even more hours to document and maintain. My paid plugins have to pay for both this time and the time I am spending on free plugins and less successfull paid plugins. This means that it will take even a successfull plugin years to become profitable. Please consider buying an extended license if you want me to continue to maintain these plugins for the very small fee I ask in return or hire me for adding functionality that you feel is missing but valuable.

My other plugins include:

Edit invoice

Hello, I am Wiego. Please start by reading the whole documentation! If you have any questions, find a bug or experience difficulties getting the plugin to work please use the Support Forum. Only leave a Review if you are happy with the plugin or are still unhappy with the plugin after reaching out to me in the Support Forum. Thank you! Wiego

Why is this a paid plugin?

Someting that is free has little or no perceived value. Users do not commit to free products and only use them untill something else that looks nice and is free comes along. When I invest my time in the development of a new plugin or theme I commit to supporting and maintaining it. I ask my customers to do the same. I do not make money from this plugin by advertisements, upgrades or additional services like hosting or setup. I simply sell the software.

Did you know that only about 30% of my plugins are paid (70% of my plugins are free) and that 30% of your purchase or donation goes to help fund the October Project?

My plugins take many hours to develop (10-120+) and even more hours to document and maintain. My paid plugins have to pay for both this time and the time I am spending on free plugins and less successfull paid plugins. This means that it will take even a successfull plugin years to become profitable. Please consider buying an extended license if you want me to continue to maintain these plugins for the very small fee I ask in return or hire me for adding functionality that you feel is missing but valuable.

Table of contents

Installation

You need an account on octobercms.com to install this plugin.

  1. Sign in and click on the Add to Project button on the product page for the plugin in the marketplace.
  2. Select the project you wish to add the plugin to (or create one).
  3. Make sure you install any 3rd-party plugins this plugin depends on
  4. Make sure you have attached this project to your website in the backend of your website in order to pull in the new plugin (Settings > Updates & Plugins). Don't worry, attaching or detaching your website to a project will never delete anything!
  5. Make sure you allow short_open_tag (default PHP setting)

Getting started

Please note that RainLab.User, RainLab.UserPlus and LukeTowers.SnappyPDF are required for this plugin and that the RainLab.UserPlus plugin now requires RainLab.Location and RainLab.Notify. All these plugins are FREE.

  1. Add Briddle.Invoice to a project and attach it to your website (This plugin requires RainLab.User, RainLab.UserPlus, and LukeTowers.SnappyPDF. The User Plus Plugin requires RainLab.Location and RainLab.Notify so add those first). All these plugins are FREE.
  2. Make sure you allow short_open_tag (this is the default PHP configuration)
  3. Go to Settings > Omnipay > Invoice settings to configure the plugin

Invoices component

This component lists unpaid invoices for a logged in user. Simply place the component on the page and specify a pay URL (without trailing slash). My FREE Briddle.Omnipay plugin will take care of the rest.

Customize invoice template

You can fully customize the invoice template in Settings > Omnipay > Invoice configuration

The following variables are available:

VARIABLE DESCRIPTION
{{ order }} Translation of "Invoice"
{{ date }} Translation of "Date"
{{ due }} Translation of "Due"
{{ customer }} Translation of "Customer"
{{ description }} Translation of "Description"
{{ quantity }} Translation of "Quantity"
{{ amount }} Translation of "Amount"
{{ vat }} Translation of "Vat"
{{ subtotal }} Translation of "Subtotal"
{{ tax }} Translation of "Tax"
{{ total }} Translation of "Total"
{{ invoice.id }} Invoice ID
{{ invoice.description }} Invoice description
{{ invoice.vat }} Invoice vat
{{ invoice.amount }} Invoice amount
{{ invoice.user.company }} Customer company
{{ invoice.user.name }} Customer company
{{ invoice.user.street_addr }} Customer company
{{ invoice.user.zip }} Customer company
{{ invoice.user.city }} Customer company
{{ invoice.user.country }} Customer company
{{ invoice.created_at }} Invoice Sent date
{{ invoice.due }} Invoice Due date
{{ company_invoice_prefix }} Invoice prefix from settings
{{ company_logo }} Logo from settings
{{ company_name }} Company name from settings
{{ company_street_addr }} Company name from settings
{{ company_zip }} Company zip from settings
{{ company_city }} Company city from settings
{{ company_country }} Company country from settings
{{ company_conditions }} Company conditions from settings
{{ items }} Collection of invoice items (description, quantity, price, vat)

Online payments

Please use my FREE plugin Briddle.Omnipay to allow online payments. Online payments with this plugin are automagically logged.

My Omnipay plugin does not support automatic payments but you could implement SEPA Direct Debit with Mollie.com to setup automatic payments or use Stripe to setup automatic payments using a credit-card yourself.

Recurring invoices

Please use my plugin Briddle.Members to setup recurring invoices.

Programmatically adding items to orders

Please note that the total amount due and the total VAT in the order will now also be automagically recalculated and updated if you add/update/remove items using the Item model (https://octobercms.com/docs/database/model#basic-inserts).

You can programmatically create a new order using the Order model of the plugin. You can then add/update/remove items in that order. This will automagically recalculate the total amount due and the total VAT.

use Briddle\Invoice\Models\Order;
use Briddle\Invoice\Models\Item;

$order = new Order;
$order->description = 'Some deal';
$order->user_id = 3;
$order->due = '2020-12-01';  
$order->currency = 'USD';
$order->save();   

$item = new Item;
$item->description = 'Something';
$item->quantity = 1;
$item->vat = 21;
$item->price = 1000;
$item->order_id= 3;
$item->save();

$item = Item::find(3);
$item ->description = 'Some other thing';
$item ->save();

$item = Item::find(3);
$item ->delete();

or (deprecated):

use Briddle\Invoice\Models\Order;

$order = new Order; 

$order->addItem($orderId,[
    'description' => 'Test item',
    'quantity' => 1,
    'vat' => 21,
    'price' => 1000
]);

$order->updateItem($orderId,[
    'id' => 1,
    'description' => 'Test item',
    'quantity' => 1,
    'vat' => 21,
    'price' => 1000
]);

$order->removeItem($orderId,$itemId);

Programmatically logging order history

Mails and online payments using my FREE plugin Briddle.Omnipay are automagically logged

You can use the Log model to log history. The created_on and updated_on fields are added automagically.

use Briddle\Invoice\Models\Log;

$log = new Log;
$log->name = 'Something';
$log->order_id= 3;
$log->save();

Mail template

Mails are automagically logged

Upon installation the mail template briddle.invoice::mail.invoice is created. The following variables are available inside this template:

VARIABLE DESCRIPTION
{{ invoice.id }} Invoice ID
{{ invoice.description }} Invoice description
{{ invoice.vat }} Invoice vat
{{ invoice.amount }} Invoice amount
{{ invoice.user.company }} Customer company
{{ invoice.user.name }} Customer company
{{ invoice.user.street_addr }} Customer company
{{ invoice.user.zip }} Customer company
{{ invoice.user.city }} Customer company
{{ invoice.user.country }} Customer company
{{ invoice.created_at }} Invoice Sent date
{{ invoice.due }} Invoice Due date

Available events

The following events are available to extend the functionality of this plugin:

STATUS EVENT
YES briddle.invoice.afterMail
YES eloquent.creating: Briddle\Invoice\Models\Order
YES eloquent.created: Briddle\Invoice\Models\Order
YES eloquent.saving: Briddle\Invoice\Models\Order
YES eloquent.saved: Briddle\Invoice\Models\Order
YES eloquent.updating: Briddle\Invoice\Models\Order
YES eloquent.updated: Briddle\Invoice\Models\Order
YES eloquent.deleting: Briddle\Invoice\Models\Order
YES eloquent.deleted: Briddle\Invoice\Models\Order
YES eloquent.creating: Briddle\Invoice\Models\Item
YES eloquent.created: Briddle\Invoice\Models\Item
YES eloquent.saving: Briddle\Invoice\Models\Item
YES eloquent.saved: Briddle\Invoice\Models\Item
YES eloquent.updating: Briddle\Invoice\Models\Item
YES eloquent.updated: Briddle\Invoice\Models\Item
YES eloquent.deleting: Briddle\Invoice\Models\Item
YES eloquent.deleted: Briddle\Invoice\Models\Item
YES eloquent.creating: Briddle\Invoice\Models\Log
YES eloquent.created: Briddle\Invoice\Models\Log
YES eloquent.saving: Briddle\Invoice\Models\Log
YES eloquent.saved: Briddle\Invoice\Models\Log
YES eloquent.updating: Briddle\Invoice\Models\Log
YES eloquent.updated: Briddle\Invoice\Models\Log
YES eloquent.deleting: Briddle\Invoice\Models\Log
YES eloquent.deleted: Briddle\Invoice\Models\Log
YES eloquent.creating: RainLab\User\Models\User
YES eloquent.created: RainLab\User\Models\User
YES eloquent.saving: RainLab\User\Models\User
YES eloquent.saved: RainLab\User\Models\User
YES eloquent.updating: RainLab\User\Models\User
YES eloquent.updated: RainLab\User\Models\User
YES eloquent.deleting: RainLab\User\Models\User
YES eloquent.deleted: RainLab\User\Models\User

Available permissions

As always you can set permissions for this plugin in Settings > Administrators > Invoice

  • Manage orders
  • Manage items
  • Manage settings
  • Manage log

Available languages

This plugin can be translated in any language

This plugin supports the following languages out of the box:

  • english
  • dutch
  • german

Support

Please use the Support Forum (on the left side of the page for any theme or plugin) or send me a message. I also offer design and development services. You can visit my website for more information. Do not use reviews to ask for support.

IMPORTANT NOTICE! All my activities on October CMS are suspended indefinitely after my second burn-out. I do not offer any support or updates

1.5.3

Bugfix error _userorders.htm when no users are found

Jun 18, 2020

1.5.2

Bugfix translation string plugin.yaml causing error in admin settings

Jun 01, 2020

1.5.1

Minor bugfix invoice component for downloading PDF

Dec 21, 2019

1.5.0

Minor bugfix backend relationRender form

Dec 21, 2019

1.4.9

Added relationRender for logs to orders and added docs

Dec 19, 2019

1.4.8

Reused the editable PDF layout in the PDF preview - invoice items should now be edited in the relationmanager tab when editing an order

Dec 19, 2019

1.4.7

Fixed wrong default due and created_at dates in the editable PDF layout and added the option to update the created_at field

Dec 19, 2019

1.4.6

Minor GUI cleanup

Dec 18, 2019

1.4.5

Added Event listener briddle.crm.won to autogenerate a new invoice when a deal in the Briddle.Crm plugin is marked as won

Dec 18, 2019

1.4.4

Added tab for listing invoices for a user in the RainLab.User plugin

Dec 18, 2019

1.4.3

Added Event listener to also log orders that are marked as paid manually

Dec 18, 2019

1.4.2

Added Dutch and German translations

Dec 17, 2019

1.4.1

Added listener for briddle.omnipay.paid to automagically mark orders as paid if paid online

Dec 17, 2019

1.4.0

Added default quantity and VAT for new items added in the order preview

Dec 17, 2019

1.3.9

Added email logging

Dec 17, 2019

1.3.8

Updated table briddle_invoice_log

Dec 17, 2019

1.3.7

Created table briddle_invoice_log

Dec 17, 2019

1.3.6

Code restructuring to allow using relationRender and updating the order totals when adding/deleting/updating invoice items with it

Dec 16, 2019

1.3.5

Code restructuring to allow adding orders and items programmatically

Dec 03, 2019

1.3.4

Bugfix in PDF function

Oct 18, 2019

1.3.3

Bugfix in PDF function

Oct 18, 2019

1.3.2

Added invoice component for logged in users to view invoice PDF

Oct 18, 2019

1.3.1

Fixed bug in adding empty items and in generating PDF with missing logo

Oct 18, 2019

1.3.0

Fixed preview view

Sep 11, 2019

1.2.9

Debugging

Sep 11, 2019

1.2.8

Some minor tweaks

Sep 10, 2019

1.2.7

Update to invoice item editor

Sep 10, 2019

1.2.6

Updated table briddle_invoice_items

Sep 10, 2019

1.2.5

Update to invoice item editor

Sep 09, 2019

1.2.4

Update to invoices component view

Aug 27, 2019

1.2.3

Bugfix

Aug 27, 2019

1.2.2

Added invoice summary to invoices list

Aug 25, 2019

1.2.1

Fixed bug in invoice_prefix on PDF invoices and added the Invoices component listing unpaid invoices for a user

Aug 25, 2019

1.2.0

Added briddle.invoice.afterMail event, default currency setting, editable invoice template

Aug 24, 2019

1.1.0

Added dependencies

Aug 23, 2019

1.0.12

Drop table briddle_invoice_statuses

Aug 23, 2019

1.0.11

Updated table briddle_invoice_orders

Aug 23, 2019

1.0.10

Updated table briddle_invoice_orders

Aug 23, 2019

1.0.9

Updated table briddle_invoice_orders

Aug 23, 2019

1.0.8

Updated table briddle_invoice_items

Aug 23, 2019

1.0.7

Created table briddle_invoice_statuses

Aug 23, 2019

1.0.6

Updated table briddle_invoice_items

Aug 23, 2019

1.0.5

Created table briddle_invoice_items

Aug 23, 2019

1.0.4

Updated table briddle_invoice_order

Aug 23, 2019

1.0.3

Updated table briddle_invoice_order

Aug 23, 2019

1.0.2

Created table briddle_invoice_order

Aug 23, 2019

1.0.1

Initialize plugin.

Aug 23, 2019