]po[ Financial Documents

(Please click on the hexagons for more information)

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

"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.

Fixed Price Projects With Multiple Invoices

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.

However, the "Financial Controlling" functionality allows you to check a posteriori if the sum of the three invoices is equal to the initial quote.

Many Small Projects

Some consulting/ service companies have to deal with a big number of relatively small projects. Examples may be advertising agencies, translation agencies, property management companies 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.

]po[ supports this billing mode by allowing you to include multiple projects in a single invoice via the "Create Invoice from Timesheet Tasks" wizard.

Cost Based Projects

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.

Maintenance Projects

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.

Repeating Invoices

]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.


Consistency Checks

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.



  • Active and Stable

Related Tutorials

Related Object Types

Related Packages

Related Modules


Package Documentation

Procedure Files

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_item_permissions       Fill the "by-reference" variables read, write and admin with the permissions of $current_user_id on $user_id 
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_dependency_tree_component       Returns a HTML portlet with a graph on how this financial document relates to others. 
im_invoices_finance_document_comparison_component       Returns a HTML table with a comparison of the volume of FinDocs per type and outline_number. 
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. 

SQL Files


Content Pages

      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


  Contact Us
  Project Open Business Solutions S.L.

Calle Aprestadora 19, 12o-2a

08902 Hospitalet de Llobregat (Barcelona)


 Tel Europe: +34 609 953 751
 Tel US: +1 415 200 2465
 Mail: info@project-open.com