Forum OpenACS Q&A: Re: A Customer's Self-Service Interface to Bug Tracker!?!

In general this is how it works at the moment:

Installed packages:

- project-manager
- contacts
- invoices

Two options:

- Use .LRN, then you have one community per customer. The unified looks work well through the portlets
- Use individual subsites. Then you are missing the unified view (at the moment), but don't have to deal with .LRN

Each project has an offer with offer_items. Once a task is closed, a callback inserts the logged hours as new offer_item with the unit = logged hours and the price per unit taken from the price list. As you can have default logger descriptions you can link them to the pricelist in the callback.

Once a project is closed, it is marked billable and

1) A new invoice is generated automatically by inserting the offer information into the invoice tables and calling iv_invoice::parse_data with some contacts::oo::import_pdf magic to generate the invoice

2) The billing department manually takes a look at all closed projects from a customer and generates an invoice across multiple projects (this is the reason why you have both "offers" and "invoices").

iv_invoice::parse_data sets the invoice variables and uses a special OO template (content.xml) which contains ADP commands (e.g. multiple) to generate a table with the invoice. The resulting content.xml is saved with zip in the invoice.odt file which is stored in /tmp.

contacts::oo::import_pdf then runs your OO Pdf converter of choice and stores the generated PDF in the invoice folder of the client.

All invoices can be sent via direct e-mail to the customer. Alternatively you can get a joined PDF with all invoices to you inbox if you want to print the invoices and mail them by snail mail.

Electronic signature for invoice PDFs is also on the "todo" list for the mediate term. Again there are a couple of approaches for this.

Hope this helps.