Allows to create, send and track the payment of invoices. The module supports multiple invoice templates and the invoicing of multiple projects in a single invoice. Invoicing can be an important part of the administrative work in a consulting company. This is particularly true if the company bills their customer on a per-effort base. This document explains the different billing scenarios and how they are covered by ]project-open[.
Supported Billing Scenarios:
"Fixed price" projects are the easiest type of billing in ]project-open[: The provider (you) sends a quote document (MS-Word, PDF, ...) to a customer, quoting a number of products and services. To keep track of this quote you create a "quote" object in ]po[ with the same quoted price and (more or less) with the same structure.
You create such a quote by manually filling in a number of invoice lines. We call this "Create Quote From Scratch", meaning that the quote is not created from any underlying data.
Finally, once the project has finished you will send your customer an invoice. This invoice will probably look much like the initial quote but may contain some changes. This is why we have included a function called "Create Invoice from Quote". This function uses your quote as a template but gives you full control to manually modify all elements, add new invoice lines etc.
This is a variant of the "fixed price" project. Imagine that you have agreed an explicit payment schedule in your original quote document with three partial payments.
]po[ offers you all the support for this scenario that there is - it lets you write your three invoices manually, one-by-one. This is the only reasonable solution here, because the system can not reasonably take any assumption about how you want to distribute the money between the payments etc.
For these companies it is impractical to create a separate invoice for each project. Instead, they prefer to write periodic invoices that cover several projects at a time.
Cost based projects are usually billed by the number of days or hours that the provide has been working on the the projects.
To capture these efforts, ]po[ includes a timesheet management system which allows employees to log their hours on project tasks. The accountant can aggregate these hours at the end of the project and create invoices based on the total time spent.
This is a variant of "cost based project". Many service companies provide their customers with maintenance services for a deliverable from a previous project. These maintenance services are billed periodically to the customers.
In order to use this billing mode we recommend that you setup a new project or sub-project for each maintenance period. At the end of the period the bill will arrive to the customer just like in "cost based billing" and you close the (sub-) project.
]po[ supports the concept of "repeating financial items", such as a service contract, a rental contract etc. Repeating financial items can be included in an invoice similar to the "Many Small Projects" case.
A very important function of ]po[ billing is guarantee that each item is billed exactly once. Multiple billing must be avoided as well as "forgetting" to bill an item.
In order to provide guarantee this consistency, ]po[ keeps track of the relationship between billable items and invoices.
Also, ]po[ removes projects from the time sheet module if it has been closed for billing.
Quotes are created based on reference prices managed with the customer accounts price table.
If no reference price is found, the prices as set by default wit the 'Internal' company are taken.
Related Object Types
tcl/intranet-invoices-procs.tcl Bring together all "components" (=HTML + SQL code) related to Invoices
im_invoice_change_oo_content Takes the provided contents and places them in the content.xml file of the odt file, effectivly changing the content of the file. im_invoice_nr_variant Returns the next available "variant" of an invoice number. im_invoice_oo_tdom_explore Returns a hierarchical representation of a tDom tree representing the content of an OOoo document in this case. im_invoice_payment_method_select Returns an html select box named $select_name and defaulted to $default with a list of all the partner statuses in the system im_invoice_permissions Fill the "by-reference" variables read, write and admin with the permissions of $current_user_id on $user_id im_invoice_rounding_factor Gets the right rounding factor per currency. im_invoice_rounding_factor_helper Gets the right rounding factor per currency A rf (rounding factor) of 100 indicates two digits after the decimal separator precision. im_invoice_update_rounded_amount Updates the invoice amount, based on funny rounding rules for different currencies. im_invoices_check_for_multi_project_invoices Check if there are invoices around that are assoicated with more then one project. im_invoices_default_company_contact Return the most appropriate company contact for an invoice. im_invoices_default_company_template Business logic to determine the default invoice template for the given cost type at the given company. im_invoices_object_list_component Returns a HTML table containing a list of objects associated with a particular financial document. im_invoices_select Returns an html select box named $select_name and defaulted to $default with a list of all the invoices in the system. im_invoices_unify_select_projects Input is the list of projects related to a financial document. im_next_invoice_nr Returns the next free invoice number. im_package_invoices_id
sql/common/intranet-invoices-backup.sql sql/common/intranet-invoices-common.sql sql/postgresql/intranet-invoices-create.sql sql/postgresql/intranet-invoices-drop.sql sql/postgresql/upgrade/upgrade-184.108.40.206.0-220.127.116.11.1.sql sql/postgresql/upgrade/upgrade-18.104.22.168.1-22.214.171.124.2.sql sql/postgresql/upgrade/upgrade-126.96.36.199.1-188.8.131.52.2.sql sql/postgresql/upgrade/upgrade-184.108.40.206.2-220.127.116.11.3.sql sql/postgresql/upgrade/upgrade-18.104.22.168.5-22.214.171.124.6.sql sql/postgresql/upgrade/upgrade-126.96.36.199.6-188.8.131.52.7.sql sql/postgresql/upgrade/upgrade-184.108.40.206.0-220.127.116.11.1.sql sql/postgresql/upgrade/upgrade-18.104.22.168.0-22.214.171.124.1.sql sql/postgresql/upgrade/upgrade-126.96.36.199.1-188.8.131.52.2.sql sql/postgresql/upgrade/upgrade-184.108.40.206.0-220.127.116.11.1.sql sql/postgresql/upgrade/upgrade-18.104.22.168.1-22.214.171.124.2.sql sql/postgresql/upgrade/upgrade-126.96.36.199.2-188.8.131.52.3.sql
|dashboard.tcl||Offers a menu to create new Invoices, Quotes, POs and Bills|
|index.tcl||Empty redirection index.tcl file|
|invoice-action.tcl||Purpose: Takes commands from the /intranet/invoices/index page and deletes invoices where marked|
|invoice-association-action-2.tcl||Associates an object with an invoice (financial document)|
|invoice-association-action.tcl||Allows to "associate" a project with a financial document.|
|invoice-discount-surcharge-action.tcl||Adds lines for discount/surcharge to the Invoice|
|list.tcl||List all invoices together with their payments|
|new-2.tcl||Saves invoice changes and set the invoice status to "Created".<br> Please note that there are different forms to create invoices for example in the intranet-trans-invoicing module of the intranet-server-hosting module.|
|new-copy-custselect.tcl||Copy existing financial document to a new one.|
|new-copy-invoiceselect.tcl||Copy existing financial document to a new one.|
|new-copy.tcl||Copy existing financial document to a new one.|
|new-cost-center-select.tcl||Determine the cost center (i.e.|
|new.tcl||Receives the list of tasks to invoice, creates a draft invoice (status: "In Process") and displays it.|
|notify.tcl||Purpose: Send an email to the accounting/project contact to inform about the invoice.|
|payment-action.tcl||Purpose: Takes commands from the /intranet/invoices/index page and deletes invoices where marked|
|view.tcl||View all the info about a specific project|