You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by "Nicolas Malin (JIRA)" <ji...@apache.org> on 2014/09/08 11:33:28 UTC

[jira] [Created] (OFBIZ-5759) Multiple invoice templates

Nicolas Malin created OFBIZ-5759:
------------------------------------

             Summary: Multiple invoice templates
                 Key: OFBIZ-5759
                 URL: https://issues.apache.org/jira/browse/OFBIZ-5759
             Project: OFBiz
          Issue Type: New Feature
          Components: accounting
    Affects Versions: Trunk
            Reporter: Nicolas Malin
            Priority: Minor


Open this issue behind discussion on user mailing list :
http://ofbiz.markmail.org/message/rtrxzvlozlnribye?q=multiple+invoice+template to keep in mind and/or if some people is interested to contribute ;)

{quote} I am looking for a way to add additional invoice templates without changing to much of the original ofbiz code if possible.

The case: - multiple unrelated companies - multi tenant environment - multiple invoice layouts 
{quote}

 When I have this case on a projet, I use the content system to load the template.

Example : Store a default template for each organization or a template specific by some customer. 
 * Create PartyContentType : INVOICE_TEMPLATE 
 * Load your templates en Content 
 * Associate your content to each organization in ofbiz 
 * if a customer have a specific template associate it

On your InvoicePDF screen resolve the template by a groovy script : {code:java}
 //resolve if customer template is present 
partyContents = delegator.findByAndCache("PartyContent", [partyId : invoice.partyId]) 
if (partyContents) partyContents = EntityUtil.filterByDate(partyContents, invoice.invoiceDate) 
if (partyContents) partyContent = partyContents[0]

if (!partyContent) { //resolve if organization hasa template 
    partyContents = delegator.findByAndCache("PartyContent", [partyId : invoice.partyIdFrom]) 
    if (partyContents) partyContents = EntityUtil.filterByDate(partyContents, invoice.invoiceDate) 
    if (partyContents) partyContent = partyContents[0]
 }
 {code}
 Warn, I wrote the code on the fly, maybe it doesn't contains the absolute true ;)

Now you have a content, you can resolve your flow has you want (ftl injection, content service to renderer string), etc .... 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)