This page is intended to be the root of Cookbook, FAQ, Tips, Tricks, HowTo, etc.
You may find supplementary useful informations at Old OFBiz wiki and Opentaps's OFBiz cookbooks part but note that this information may be outdated...
Tip | ||
---|---|---|
| ||
|
Tables of content
|
Tables of content
Table of Contents | ||||
---|---|---|---|---|
|
...
Accounting
- MISC Accounting Links
- Billing Account
- If you get accounting related issues and are not interested in posting accounting transactions, see here
- Show prices with VAT included in including VAT in eCommerce (retail, B2C)
- How are managed transactions in different currencies from the one of GL ?
- glAccountClass vs glAccountType : follow the links
- A thread about glAccountType
- Sage payment integration
Apache HTTPD (Apache Web server)
- Apache ProxyPassReverse Directive advices
- Beware of HTTP ETag
- Sticky session load balancing with Apache and mod_balancer on Ubuntu Linux
- Install OFBiz with MariaDB, Apache2 Proxy and SSL
Ajax - Javascript - Json
- Integrate OFBiz with Yui-Ext
- An easy way to get a data structure from server to Javascript in client browser
- You can also take a Take a look at DWR. I found this really easy to integrate with OFBiz. No complicated Javascript/JSON. Also, its Apache V2 licensed.
- Disabling right click: document.oncontextmenu=new Function("return false")
- Restrict your user to go back: window.history.forward(0)
Applications server
- How to run inside a non embedded application server
- How to make redirection inside an application server without using mod_rewrite
- How to run multiple ofbiz instances on one PC and technical production setup guide, see section URL and Port Settings
Asset Maintenance
Audit
Barcodes
- The Barcodes in OFBiz are done with Barcode4j. See the Barcode XML format documentation for howto specify the format.
...
- Setting Up CAS with OFBiz (PDF) (This document speaks about OFBiz release 5, this release will never exist but will certainly be 9.4 or hopefully at least 9.x (x<=12)...)existed but that should not be a problem)
- Same but dynamic up to date help in trunk
...
- Some details about SSL and X.509
- How to set SSL
- How to set up certificates for RMI
- How to configure authorize.net certificates
- Google Checkout Integration
- Here is a pretty good tutorial on getting your SSL certificate setup
CMS
Magnolia CMS Integration Guide (note though that the recommended way in OFBiz is still to use the content component...)
CSS
- OFBiz maincss.css HTML Element Collection Styles
- If you get this problem The horizontal menu in the right column is causing the HTML elements below it to drop down to the bottom of the screen
DataBase
Derby
Miscellaneous
OFBiz's Data File Tools Some tips from Jacopo
- How to use EntityWhereString A tip from GrimTim
- How to troubleshoot SQL errors A tip from Chris Lombardi
- How to measure SQL queries durations
- How to use OFBiz on read only database
- Tips for View Entities A tip from SkipDever
- How to connect to an External Database A tip from Adrian Crum
- How to save customised data for import as demo data A tip from Raj Saini
- Is it possible to delete products, categories, catalogs, etc., that are no longer needed?
- About lastUpdatedStamp, lastUpdatedTxStamp (transaction), createdStamp, and createdTxStamp
- Why primary keys are VAR_CHAR type in OFBiz ? A tip from David E. Jones
MySQL
Oracle
PostgreSQL
Tune your PostgreSQL installation a tip from Mike <mz4wheeler@gmail.com>
- Setup OFBiz version 16.11.02 with PostgresSQL on Windows (from Do Nhu Vy)
MariaDB
Development tips
From Ant to Gradle
- How to run multiple ofbiz instances on one PC: see technical production setup guide, section URL and Port Settings
What is the best practice to modify an existing component or create a new one?
- What is considered the best practice in creating a custom web application with OFBIZ?
- How to Extend an existing component in customized application?
- How to manage your source differences?
- Variables always available in screen context
- Tips & Tricks while working with Groovy
- Deprecating entities
- Add a WAR file
- Using locale XSD files instead of OFBiz remote (at http://ofbiz.apache.org/dtds) for validation and content completion
- UBPL IntroductionFrom Ant to Gradle
- Ofbiz as a development framework - release 9.04
- Ofbiz as a development framework - upcoming release 10.04
- Field Description tooltip help
- How to not have a string escaped for html : org.ofbiz.base.util.StringUtil.wrapString(uiLabelMap.yourString)
- Turning Firefox cache on/off (mostly for javascript testing)
- Validation in forms
- How to change the default messages
- Profiling Ofbiz with YourKit in Eclipse
- Note on creating a view-entity using entity or view-entity from other components
- When and when not restarting
Eclipse IDE
Eclipse IDE
- Running and Debugging
- Eclipse Tips
- Browsing Derby Database in Eclipse
- Profiling Ofbiz with YourKit in Eclipse
Geographic Information Systems (GIS)
- Setting up PostGIS spatially-enabled PostgreSQL database
- Connecting OFBiz to PostGIS spatially-enabled database
...
Intellij IDEA IDE
Setup Intellij IDEA IDE for OFBiz Framework - Guide applicable for OFBiz 16.11.x and above, and for Linux-based or Mac working environment.
- Running and Debugging OFBiz in Intellij IDEA - Guide applicable for OFBiz 16.11.x and above.
Known issues
Licences
Load Balancing
- Sticky session load balancing with Apache and mod_balancer on Ubuntu Linux
- Introduction to Load Balancing an OFBiz Cluster
Migration
Miscellaneous
- Contact List How To
- As Is Communication Event Process Flow
- Sending mails to contact lists
- Issue with createAcctgTransAndEntries service
- Steps to process a Configurable Product
- How to display all information of a single party
- Product Promotion Example
- What is the difference between Event and Service?
- SECAs and Error/Failure Management
...
POS (the POS is deprecated and has been put in Attic)
- More about POS
- How to get rid of "Terminal is closed" message
- How to syncrhonise POS terminal(s) with a central database
...
- Monitoring and Maintaining the database
- Cleaning the database from unimportant data
- Users with disabled accounts are still able to login
- How to make redirection inside an application server without using mod_rewrite
- Handling of External data
- OAGIS
- How to hide products in eCommerce ?
- Performance : Server Hardware for Ofbiz hosting
- Load balance across multiple instances of OFBiz
- Custom Components in OFBiz
- Take advantages of a custom component
- How to use the Setup application It's a bit long ot load has it must create dynamically the documentation. You may prefer to simply use the Help in OFBiz itself...
- how to set the Distributed Entity Cache Clear Mechanism
...
- Getting and Running OFBiz in 5 steps (look, there are more Quick Start Guides under Jacopo's Wiki space)
RMI
This RMI error on client side?, click to see the tip
Code Block Caused by: java.util.MissingResourceException: Can't find bundle for base name cache, locale en_US
- How to use RMI without SSL
- How to test easily if RMI is working (using a simple client)
- Somethings you should know about RMI
Reporting tools
...
- Plugin search tools for Firefox using Nabble or Mark Mail
- To search in OFBiz spaces instead of all Apache Wiki (Apache cwiki is shared among Apache projects) use the OFBiz wiki search
Selenium
Soap / XML-RPC / REST
Attachments |
---|
- How to use SOAP in OFBiz
- A tutorial from Vincenzo Di Lorenzo, see Attachements uses Axis 1.4, deprecated since r892712 which introduced Axis2 in OFBiz
- A tutorial from Opentaps documentation (version 0.9v5), see Attachements uses Axis 1.4, deprecated since r892712 which introduced Axis2 in OFBiz
- Export Ofbiz Services that use complex type parameters via SOAP using AXIS2 deprecated since r892712 which introduced Axis2 in OFBiz
- You could also be interested by these linksComplex typesdeprecated since r892712 which introduced Axis2 in OFBiz{
- Export Ofbiz Services that use complex type parameters via SOAP using AXIS2 - since r892712+ - start here if you want to use SOAP
- Using XMLRPC as an alternative to SOAP
- Using XMLRPC with Flex client
- Export service using REST
Another approach deprecated since r892712
For those who are familiar with Spring, you may be interested by Apache CXF instead of AXIS2. You will find a quick comparaison between AXIS2 and CXF here deprecated since r892712r89271
SSL
...
Themes
Translation
Unsubscribe
To unsubscribe You certainly forgot how you subscribed, it's easy to forgot if you use a Nabble forum to subscribe.
Windows
Workflow Engines
XSL:FO (FOP)
ZK (work in progress)
A tuto (screencast) for a ZK view handler
...
There is also this tuto but from comments in user ML we recommend rather the way above
FAQ - TIPS - Cookbook - How to
...
Anchor | ||||
---|---|---|---|---|
|
How to use mod_proxy_ajp
You need to use a 2.2+ version of HTTPD. I used 2.2.6.
In httpd.conf (or in a file in sites-available on Debian/Ubuntu using a2ensite)
Uncomment (or compile with at least these modules using --enable on Debian/Ubuntu use a2enmod)
...
Code Block |
---|
ProxyRequests Off <Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> # Enable/disable the handling of HTTP/1.1 "Via:" headers. # ("Full" adds the server version; "Block" removes all outgoing Via: headers) # Set to one of: Off \| On \| Full \| Block ProxyVia On NameVirtualHost *:80 <VirtualHost *:80> # General setup for the virtual host. ServerName www.example.com:443 ServerAdmin you@example.com ProxyRequests Off ProxyPreserveHost On proxyPass / ajp://localhost:8009/ RewriteEngine On RewriteRule ^/(images/.+);jsessionid=\w+$ /$1 </VirtualHost> include conf/httpd-ssl.conf (or include ../apache2/httpd-ssl.conf if using a file in sites-available on Debian/Ubuntu using a2ensite) |
In httpd-ssl.conf
replace (according to your setup, ie. keeping the right paths)
...
in the 443 VirtualHost. This will give acces to your svn repsoitory (supposed to be declared as <Location /svn>) only through https. If you need also access through https, do the same in the 80 VirtualHost.
Anchor | ||||||
---|---|---|---|---|---|---|
|
Change a field type in Derby
- Export the table to xml
- Drop the table
- Start OFBiz - table recreated with new structure
- Import xml data from #1
Advice from Adrian Crum.
Anchor | ||||
---|---|---|---|---|
|
Browse a Derby database and more using SQuirrel
http://db.apache.org/derby/integrate/SQuirreL_Derby.html#N101C7
For the URL use something like jdbc:derby:c:/ofbiz/runtime/data/derby/ofbiz (of course using your right path)
Link from Sundeep Ray. There is an alternative to this solution : Browsing Derby Database in Eclipse
Anchor | ||||
---|---|---|---|---|
|
Use CVV (also called CV2 and more acronyms) codes in OFBiz
As of rev. 585172 (date 2008-10-16) the changes mentioned below have been officially included in the OFBiz trunk.
https://issues.apache.org/jira/browse/OFBIZ-767#action_12476855
Anchor | ||||
---|---|---|---|---|
|
Using gift-card in OFBIz
Steps to use GC with OFBiz demo data:
After you create GC for a party(e.g for DemoCustCompany) with
Card Number: 12345 and Pin Number:123, then:
...
Then you are ready to create order and to specify the GC as a payment method.
A tip from Rashko Rejmer
Anchor |
---|
Yui-Ext |
Ajax : Integrate OFBiz with Yui-Ext
http://www.nabble.com/Re%3A-integrate-OFBiz-with-Yui-Ext-p11131937.html
A tip from Jason Wu
Anchor | |||
---|---|---|---|
|
Patch on Windows
Creating patches
- Using Eclipse => Subclipse (Create Patch, Apply Patch context menu options, the clipboard one is the "easiest")
- Using ToirtoiseSVN from Files Explorer (Create Patch, Apply Patch context menu options). Tortoise does not exist on Linux/Mac but there are some equivalent tools.
- Making a diff with subversion on command line : svn di fileName > filename.patch
I let you find the tools with google :Eclipse/Subclipse, Tortoise, Subversion client, patch.exe, todos.exe, etc.
Applying patches
Tip |
---|
Note that below no longer works (or hardly) since Windows 7. I suggest rather to use Cygwin if you use a version below WIndows 10. I have personnaly installed with Git Bash. Bash comes embedded with WIndows 10. |
To patch on Windows you have to download patch.exe. But you may encouter EOL problems with patch.exe. That's why I prefer to use Eclipse's "Apply Patch" option wich is great to use with clipboard. If you get issue with Subclipse and work on Windows you may try Tortoise's "Apply Patch" option. If I get problems with Tortoise I then use the patch command. Something to understand is that Tortoise actually use "SVN merge" so in certains cases problems arise. To avoid EOL problems with the patch command, I use a bat file patchdos.bat :
...
Anchor | ||||
---|---|---|---|---|
|
Run OFBiz as a Windows service
- You need JavaService.exeThis is freely available at http://javaservice.objectweb.org/.
Documentation and example code are also available
Unzip the JavaService-bin-1.2.x.zip (or JavaService-2.0.x.zip) Where should the expanded files be located?
Set up and run your script with the appropriate path. Ex:Code Block javaservice -install OFBiz %java_home%\jre\bin\server\jvm.dll -Xms256M -Xmx512M -Djava.class.path=%java_home%\lib\tools.jar;%ofbiz_home%\ofbiz.jar -start org.ofbiz.base.start.Start -out %ofbiz_home%\logs\serviceLog.txt -err %ofbiz_home%\logs\serviceErr.txt -current %ofbiz_home% -manual
Note: If your java sdk is installed under a directory with a space in it, the service will install, but not start properly, unless you change java_home to the DOS 8.3 name. For example, if your java sdk is installed inC:\Program Files\Java\j2sdk1.4.2_xx
then you wouldset java_home=C:\PROGRA~1\Java\j2sdk1.4.2_xx
* Go to the win2k services app and you should now find a service 'OFBiz' set up to run manually (this of course can be changed to run automatically if so desired).
- Alternatively, the service can be started with the command:net start OFBiz
- And the service can then be stopped with the command:net stop OFBiz
...
Anchor | ||||
---|---|---|---|---|
|
Some Selenium tips
Brett Palmer gave a presentation on Selenium testing for Ofbiz at ApacheCon 2008. The presentation is no longer available at the ApacheCon site, but is available at http://www.kenfuse.com/forum/material-regarding-seleniumxml.
Setting up Selenium RC server in Windows
- Download latest version of Selenium RC and extract in a folder named Selenium at (for instance) C:\Program Files\Java\jdk1.6.0_03\bin
- From Command prompt run the following commands:
- cd C:\PROGRA~1\Java\jdk1.6.0_03\bin
- java -jar .\Selenium\selenium-server.jar -interactive
...
Anchor | ||||
---|---|---|---|---|
|
How to troubleshoot SQL Errors
If you receive an SQL error in ofbiz, it doesn't show the error from the database itself. Instead, it shows a general error which isn't neccessarily clear. Run the SQL directly on the database get a more helpful error message.
Anchor | ||||
---|---|---|---|---|
|
How to connect to
...
a Database
...
on read only
If you need to connect OFBiz to a database without write access or you want just are sure that your users have a read acces, you can change on the entityengine.xml the helper to the class ReadOnlyHelperDAO on your data-source like that
Code Block | ||
---|---|---|
| ||
<datasource name="localderby"
helper-class="org.apache.ofbiz.entity.datasource.ReadOnlyHelperDAO"
schema-name="OFBIZ"
field-type-name="derby">... |
Anchor | ||||
---|---|---|---|---|
|
How to connect to an External Database
- Create entity definitions for the external database like you would for an OFBiz entity (except use the no-auto-stamp="true" attribute).
- Assign the entities to a different group (in entitygroup.xml), "myExternalDB" for example.
- Create a datasource for the external database (in entityengine.xml), named "myExternalDB" for example.
- Assign the "myExternalDB" datasource and the "myExternalDB" entity group to the the default delegator: <group-map group-name="myExternalDB" datasource-name="myExternalDB"/>
- Use the default delegator to access the external database.
Anchor | ||||
---|---|---|---|---|
|
Sending mails to contact lists
In the marketing application, click on contact list, then find your list, then click on Comm Events and then Create New Contact List. Comm Event should land you here:
http://demo-trunk-ofbiz.apache.org//marketing/control/EditContactListCommEvent?contactListId=9000&DONE_PAGE=/marketing/control/ListContactList
based on the trunk demo server.
Set your from details and party roles (maybe N/A), fill your subject and content and click save.
When you're happy with it, change the status to "In-Progress" and click save again. The comm events should then start to trigger and the email flow, although you'll want to test it on a small list to start with. If the list is clean and processes through OK the status should automatically change to "Complete" when it is done but if there are badly formatted email addresses that can stick the status and you will need to manually mark as complete and you might review the logs to find the error.
At the time of this tip was wrote, the start and finish dates do not work as expected, leave them blank for your first testing.
A Ray Barlow's tip
Anchor | ||||
---|---|---|---|---|
|
How to save customised data for import as demo data
Add a entity-resource entry of type "data" and reader-name as "ext" in ofbiz-components.xml of your application. For example:
Code Block |
---|
<entity-resource type="data" reader-name="ext" loader="main" location="data/GeoData_IN.xml"/>
|
And run the
Code Block |
---|
"run-install-extseed"
|
ant target instead of
Code Block |
---|
"run-install"
|
This should load your modified data along with the seed data and without any demo data.
- Create entity definitions for the external database like you would for an OFBiz entity (except use the no-auto-stamp="true" attribute).
- Assign the entities to a different group (in entitygroup.xml), "myExternalDB" for example.
- Create a datasource for the external database (in entityengine.xml), named "myExternalDB" for example.
- Assign the "myExternalDB" datasource and the "myExternalDB" entity group to the the default delegator: <group-map group-name="myExternalDB" datasource-name="myExternalDB"/>
- Use the default delegator to access the external database.
...
Sending mails to contact lists
In the marketing application, click on contact list, then find your list, then click on Comm Events and then Create New Contact List. Comm Event should land you here:
http://demo-trunk-ofbiz.apache.org//marketing/control/EditContactListCommEvent?contactListId=9000&DONE_PAGE=/marketing/control/ListContactList
based on the trunk demo server.
Set your from details and party roles (maybe N/A), fill your subject and content and click save.
When you're happy with it, change the status to "In-Progress" and click save again. The comm events should then start to trigger and the email flow, although you'll want to test it on a small list to start with. If the list is clean and processes through OK the status should automatically change to "Complete" when it is done but if there are badly formatted email addresses that can stick the status and you will need to manually mark as complete and you might review the logs to find the error.
At the time of this tip was wrote, the start and finish dates do not work as expected, leave them blank for your first testing.
A Ray Barlow's tip
...
How to save customised data for import as demo data
Add a entity-resource entry of type "data" and reader-name as "ext" in ofbiz-components.xml of your application. For example:
Code Block |
---|
<entity-resource type="data" reader-name="ext" loader="main" location="data/GeoData_IN.xml"/>
|
And run the
Code Block |
---|
"run-install-extseed"
|
ant target instead of
Code Block |
---|
"run-install"
|
This should load your modified data along with the seed data and without any demo data.
...
How to run inside a non embedded application server
Have a look at framework/appserver/README file. You might be also interested by Run OFBiz under outside Application Servers (WASCE 2.0.0.1, Geronimo 2.0.3, Tomcat 5.5 and 6, JBoss 4.2.2)
Anchor | ||||
---|---|---|---|---|
|
Issue with createAcctgTransAndEntries service
If you see errors like
Error:Error trying to begin transaction, could not process method: The
current transaction is marked for rollback, not beginning a new
transaction
and aborting current operation; the rollbackOnly was caused by: Service
createAcctgTransAndEntries threw an unexpected
exception/errororg.ofbiz.service.ServiceValidationException: The following
required parameter is missing: OUT
createAcctgTransAndEntries.acctgTransId (The following required
parameter
is missing: OUT createAcctgTransAndEntries.acctgTransId) calling
service
balanceInventoryItems in receiveInventoryProduct
...
Anchor | ||||
---|---|---|---|---|
|
What is the best practice to modify an existing component or create a new one?
From an old thread by Chris Howe and David Jones. Note that it's now easier to use the create-component ant target (just try "ant -p" to know more) or the Gradle createComponent Gradle task for newer project.
...
Anchor | ||||
---|---|---|---|---|
|
What is considered the best practice in creating a custom web application with OFBIZ?
A David Jones's tip
One approach is to simply copy an entire component into a new directory and start hacking away at it until it fit your needs. This is a fine practice if you never have plans of bringing it up to date with a current revision or version. OFBIZ is currently making about 40 commits a week. By the time you complete your customizations, you are out of date.
...
Which one is right? It depends on on how much changes you are making. Modifying the following files will allow you to "customize" an application, whereas starting from scratch using an existing application as a template is better for a "custom application."
The Five Files
- application\...\webapp\...\WEB-INF\controller.xml
- <web-app>
- change the <display-name>
- change the <description>
- <web-app>
...
The goal with the differences app is to create all of the customizations that you need without touching original OFBIZ code. That way when you update to more current versions, you're less likely to encounter significant conflicts. It makes your application close to being "turn-key".
The Decorator
Most likely the first thing your're going to want to customize is the decoration (the header, which screens are in the leftbar if you want to display a right bar, how the body is displayed, which UILabels you use, etc). For this you need to do two things. (As of revision 5539 you can only do this if your views are using the ecommerce application, it shouldn't be long before all of the applications support this)
...
Now your application is an exact copy of the model application with your customized decoration. The reason it's an exact copy is because you have essentially the same controller.xml files in both applications. All of the requests call the same views, which call the same screens, which in turn call the same actions and widgets. So now you want to make some more changes.
Customize Screens
- controller.xml
- <view-map>
- change the name if necessary
- change the location to a *Screens.xml file inside custom application
- <view-map>
- Screens.xml
- create a new screen
- remember they can call .bsh, .ftl, and forms from other applications
- if you want to use a custom .ftl or .bsh be sure to us a similar directory structure as the original file so you can make easy comparisons when you update.
...
Anchor | ||||
---|---|---|---|---|
|
How to Extend an Existing Component
Scenario: You can extend any of the existing applications via a custom component in the hot-deploy directory. In the following example we are extending the Marketing component via our custom component called mycomponent.
...
Anchor | ||||
---|---|---|---|---|
|
Configuring SSL
There are two main techniques in configuring SSL, through Apache (recommended), and through the JVM directly.
Apache
Configuring SSL through Apache is probably the preferred method, and is well documented.
JVM
It's also possible to have the SSL certificate in your JVM environment. The certificate is usually found in the $JAVA_HOME/jre/lib/security directory.
...
Anchor | ||||
---|---|---|---|---|
|
RMI error on client side
Add the $OFBIZ/framework/base/config dir to the jar as a <resource> in your build file (Maven's pom.xml example, to be adapted for ant)
...
Anchor | ||||
---|---|---|---|---|
|
How to use RMI without SSL
By default, since OFBIz is under the Apache Software Fundation Licence, OFBiz comes with RMI using SSL. Before it was possible to use RMI without SSL. But due to licence constraint some code has been removed. If you need, for testing for instance, to use RMI without SSL follow this tip:
In framework/base/config/ofbiz-containers.xml comment out this snippet during tests
...
Anchor | ||||
---|---|---|---|---|
|
How to test easily if RMI is working (using a simple client)
Simply run the testRmi service from Webtools (not sure this is sufficient...)
OR
Unzip somewhere on you disk this attachment. From there I guess it's pretty simple.
Anchor | ||||
---|---|---|---|---|
|
Somethings you should know about RMI
- On Windows, do not have any spaces between any directories on your path, or the RMIDispatcher will not start
- On Linux, the RMI server may not know its own IP address and might get "lost." This will cause java.net.SocketException?: Socket is not connected (Error connecting to 127.0.0.1). This error message is generated on the RMI server but it will be displayed on the RMI client. The answer is to force rmi server's IP address into the JVM environment.
...
Anchor | ||||
---|---|---|---|---|
|
How to manage your source differences
The first three links use the vendor branch principle
...
Anchor | ||||
---|---|---|---|---|
|
If you get accounting related issues and are not interested in posting accounting transactions
If you are not interested in posting accounting transactions to the GL then you can disable (i.e. comment out) the first eca rule in accounting/servicedef/secas_ledger.xml
Code Block <eca service="createAcctgTransAndEntries" event="commit"> <condition field-name="acctgTransId" operator="is-not-empty"/> <action service="postAcctgTrans" mode="sync"/> </eca>
- Configure an Error Journal to post there the accounting transactions that are incomplete
You can create the error journal in this way:- Go to Accounting >>General Ledger >>Setup >>Journals and create a new journal
https://localhost:8443/accounting/control/SetupGlJournals?organizationPartyId=Company - Go to Accounting >>General Ledger >>Setup >>Accounting Preferences and select the journal in the "Error Gl Journal Id":
https://localhost:8443/accounting/control/PartyAcctgPreference?organizationPartyId=Company - All the "incomplete" transactions will be visible here:
https://localhost:8443/accounting/control/ListUnpostedAcctgTrans?organizationPartyId=Company
- Go to Accounting >>General Ledger >>Setup >>Journals and create a new journal
Anchor | ||||
---|---|---|---|---|
|
Is it possible to delete products, categories, catalogs, etc., that are no longer needed?
This question has been already asked many times. You should find more information in Nabble
The main idea is that in OFBiz we don't delete but use end dates to mark obsolescence.
...
If you really need to do it, think about these 4 points before...
Anchor | ||||
---|---|---|---|---|
|
Show prices with VAT included in eCommerce (B2C)
For that you must :
- In your store, set the field "Show Prices With Vat Tax"=Y
- Set the field "Vat Tax Auth Geo Id" with the corresponding VAT Geo (it's a default value, remember the VAT is applied in function of the client Geo)
- Set the field "Vat Tax Auth Party Id" with a correctly set Tax Authority (see below how to set it in accouting)
- In accouting, set your Tax Authority (and any you will need)
- "Include Tax In Price"=Y
- Create the "Categories" that will include products with VAT included (this is not mandatory, it allows to limit the scope)
- Set the "Product Rates" you need. Note that you can Tax Promotions and Shipping if needed
In order to show the prices including VAT in the store for consumers, you need to take following steps:
- in the accounting component:
- adjust the data for the appropriate Tax Authority so that 'Include Tax in Price' = 'Y'
- associate the appropriate product categories under the 'Categories' tab of the Tax Authority
- set the appropriate product rate (for Value Added Tax)
- optionally set the flag for 'Tax Promotions'
- optionally set the flag for 'Tax Shipping'
- in the catalog component for the appropriate store (in the section 'TAX':
- set the flag 'Show prices with VAT tax included' to 'Y'
- set the appropriate Vat Tax Auth Geo ID
- set the appropriate Vat Tax Auth Party ID
For now you can't set a different VAT rate for shipping, see last comment of
Jira | ||||||
---|---|---|---|---|---|---|
|
Anchor | |||
---|---|---|---|
Anchor | |||
|
Certificate for RMI
You need to have the ofbizrmi.jks and ofbiztrust.jks setup at both ends. For testing, the easiest way is
...
Thanks to Andrew Sykes
Anchor | ||||
---|---|---|---|---|
|
About lastUpdatedStamp, lastUpdatedTxStamp (transaction), createdStamp, and createdTxStamp
They are the timestamps that the entity engine automatically maintains for all entities, unless you use no-auto-stamp=true in the entity definition. But by default all entities will have these four fields.
...
Anchor | ||||
---|---|---|---|---|
|
How are managed transactions in different currencies from the one of GL ?
Accounting transactions originated by events in different currencies from the one of GL are automatically converted using the currency exchange rate of the date of the transaction.
The "company base currency" is set in the partyAcctgPreference. You have to enter a record in the CurrencyUomDated entity.
If this information is available then you'll notice that the AcctgTransEntry will have two different amounts in the fields amount/currencyUomId and origAmount/origCurrencyUomId
...
Anchor | ||||
---|---|---|---|---|
|
Why primary keys are VAR_CHAR type in OFBiz
- The performance overhead is minimal on modern database systems (see EnterpriseDB guys know what they are talking about, they are offering Postgres commercial support)
- Character strings give significant flexibility, especially when it is common to migrate data from other systems that have characters in their IDs.
- Being able to prefix IDs is used in a number of places in OFBiz, including prefixes for entire systems when data transfers between them are done to separate ID spaces.
Anchor | ||||
---|---|---|---|---|
|
Is there any WYSIWYG editors for XSL:FO ?
- Free tools
- Commercials tools
Anchor | ||||
---|---|---|---|---|
|
Using locale XSD files instead of OFBiz remote (at http://ofbiz.apache.org/dtds) for validation and content completion
This has (at least) 2 advantages :
...
Anchor | ||||
---|---|---|---|---|
|
How to hide products in eCommerce ?
If a View Allow category is configured only the products in that category will be visible when this catalog is active. Other products will not show up in search results, category browsing, and if someone tries to view the product by ID it will report that no product is found for this ID. There is a performance impact associated with the use of this category, so alternatives might be desirable in certain circumstances. In general for easier maintenance it is best to have this set to the same category as the Default Search category.
But in general for Catalog Setup you shoud refer at this section of the Apache OFBiz Business Setup Guide
Anchor | ||||
---|---|---|---|---|
|
Performance : Server Hardware for Ofbiz hosting
Because customizations can dramatically change the performance
characteristics of OFBiz it is a good idea to always do performance
and load testing once development is complete.
...
Anchor | ||||
---|---|---|---|---|
|
Using TTF fonts in FOP
You can use TTF fonts in fo.ftl files. You need to use file "framework/webapp/config/fop.xconf". This file contain following code that responsible for font family, change font family according to the requirement, exemple
...
Anchor | ||||
---|---|---|---|---|
|
Validation in forms
include a js code like below:
Code Block Event.observe(window, 'load', function() {if ($('formId')) validateNewUser = new Validation('formId', {immediate: true});}
And in the respective form use the suitable class for form fields
Code Block <field ... widget-style="required"> ... </field> <field ... widget-style="validate-email"> ... </field> <field ... widget-style="validate-url"> ... </field>
More at Really easy field validation
A tip from Atul Vani
Anchor | ||||
---|---|---|---|---|
|
What is the difference between Event and Service?
- Events are used for validation and conversion using map processor, while services are used for business logic like CRUD operation
- Service returns Map
- Event returns String.
- Services are loaded with the server, any changes in definition (not implementation if in MiniLang) needs a reload
- We can call service inside event. But we cannot call event inside service.
- An event is specific local piece functionality normally used in one place for one purpose and called from its location.
- A service is a piece of functionality which can be located anywhere on the network, is most of time used in several different places and is called by its 'name'
- In case of events you have access to HttpServletRequest and HttpServletResponse objects and you can read/write whatever you want. In case of services, you have access only to service parameters.
...
- Services perform transaction rollback if any error occurs, not events. Note though that if an event is implemented by a simple-method, since by default simple-methods are executed inside a transaction unless the simple-method is flagged to not use a transaction, an error will also rollback the event.
Anchor | ||||
---|---|---|---|---|
|
How to change the default messages
The messages that come in different pages in OFBiz are configured using several configuration files. The best parts of message display framework under OFBiz are as follows:
- It is totally internationalized.
- Actual text messages are stored in configuration files only. This configuration files are written in XML using property key value approach. The actual files like FTL files, service definition files which use these text messages refers to the property key and locale (optional) only to display the message in the output page.
- You can hide the message by just clicking on it. No reloading is required.
The main components of the message display framework in OFBiz are
- messages.ftl: under ofbiz/framework/common/webcommon/includes folder. It is responsible for displaying error and event message in a specific div on the top of the content area.
- CommonUiLabels.xml: under ofbiz/framework/common/config folder. This is a property key value configuration file for storing common UI label elements including error / event headers and messages.
- CommonErrorUiLabels.xml: under ofbiz/framework/common/config folder. This is a property key value configuration file for storing common error message elements.
Beside these two configuration files there are at least one property key value configuration file under the config directory of the respective element for almost all elements like accounting, manufacturing, service, minilang etc. under the applications and framework directories. e.g. AccountingErrorUiLabels.xml, MiniLangErrorUiLabels.xml, ServiceErrorUiLabels.xml
One important thing to notice here is that all UI labels in OFBiz are displayed in the same manner using the property key value XML configuration files available under the config directory. In some cases there are no separate error configuration files but the error messages are included in the UI label configuration file itself. e.g. in case of marketing component related error messages are included in the MarketingUiLabels.xml under ofbiz/applications/marketing/config folder.
How to change a specific error message
- First identify the module in which the message is coming.
- If it is a common message then it would be in CommonUiLabels.xml or in CommonErrorUiLabels.xml
- If it is a module specific message then look into the configuration files under the config folder of that component.
- Identity the key and change the value in English language. If you presently want to change the English message only, then there is no need to do to anything else. However, if you want to update the internationalization part also then you need to do the following step for each language.
- Now using a specific translation program like Google Language Tools, translate the English sentence into a specific language and copy paste that in the value for that specific language.
- After the change is over you need to restart the server for the changes to take effect. You can also clear in the cache named UtilPropertiesBundleCache the resource associated to the message you've just modified. Go to Webtools -> Cache maintenance and search for UtilPropertiesBundleCache.
The same procedure can be followed for changing the UI label elements.
A tip from Amitava Neogi
Anchor | ||||
---|---|---|---|---|
|
Note on creating a view-entity using entity or view-entity from other components
If you need to use an entity or view-entity from other components to construct a view-entity, be cautious on how the sequence of the components are loaded. This is because the view-entity will be loaded when you start OFBiz, and if the component entity xml is loaded AFTER your component, your view-entity would not be able to pick up the relevant information from the other component.
Therefore it is important to make sure that if you're using entities from other component, make sure they are loaded BEFORE your component.
Anchor | ||||
---|---|---|---|---|
|
When and when not restarting
This is a big, and often not enough known OFBiz great feature.
Most of the time you don't need to restart when you change things in dev mode (dev mode depends on the content of cache.properties file, see here how to set it).
It's easier to name the main cases (I'll not get into details) where you need to restart:
- Containers and alike configurations changes (this one seems obvious, changes related to the embedded application server - Tomcat - needs a restart)
- Java changes (compilation)
- DB definitions changes (entity, field, etc.)
If the caches are on (ie not on dev mode), it's the same (you don't need to recompile) but you need to clear the caches. See at ...webtools/control/FindUtilCache You might even clear only the cache where things changed (production performance).
Anchor | ||||
---|---|---|---|---|
|
Beware of HTTP ETag
The ETag header is causing an issue with browser cache not being updated when the server has been updated. Actually a weak ETag, see http://en.wikipedia.org/wiki/HTTP_ETag
Seems like tomcat’s DefaultServlet will only serve weak ETag’s even though tomcat7+ does have code for strong ETag but is never used and there is no documentation on how to set it
A possible solution is to remove If-None-Match request header and ETag response header in apache http server
RequestHeader unset If-None-Match
Header unset ETag
Anchor | ||||
---|---|---|---|---|
|
How to measure SQL queries durations
If a query takes more than 150 ms its duration is shown in log. To change that look for:
Debug.logTiming("Ran query in "
in GenericDAO.java
Anchor | ||||
---|---|---|---|---|
|
What is the difference between [+0] and [] in a widget screen file?
[] If the list does not exist, create a new list and append item to it. If the list exist, append item to the end of the list
[+0] If list does not exist, create a new list and append item to it. If the list exist, insert item at the beginning of the list
Anchor | ||||
---|---|---|---|---|
|
What's the recommended workflow engine in OFBiz? Is it Shark?
OFBiz gave up on Workflow Engines. Shark was implemented last but never really used in OFBiz. Instead of using a Workflow Engine, OFBiz uses an Event Driven Architecture (EDA), so ECAs (SECA, EECA, MECA) are used in OFBiz to drive the Workflow. ECA is the acronym of Event Condition Action. SECAs are for Services (triggered on services conditions), EECAs are for Entity (triggered on entities conditions), MECAs are for Mail.
Anchor | ||||
---|---|---|---|---|
|
Dash vs "en dash" in Gradle commands
When you use a command like
gradlew "ofbiz --load-data readers=seed,seed-initial,ext,ext-demo"
Beware that copying this command in Microsoft Word will automatically transform the double dash in "en dashes" (Unicode 0x2013: "–" from Unicode Map)
Other cases not related to Word were also reported.So when this command does not work check that you are really using dashes!
Anchor | ||||
---|---|---|---|---|
|
If you have problems to buid OFBiz on Windows 10 try this:
from Turn windows feature on or off ->Windows subsystem for Linux->Restart and retry
More at Really easy field validation
A tip from Atul Vani
...
What is the difference between Event and Service?
- Events are used for validation and conversion using map processor, while services are used for business logic like CRUD operation
- Service returns Map
- Event returns String.
- Services are loaded with the server, any changes in definition (not implementation if in MiniLang) needs a reload
- We can call service inside event. But we cannot call event inside service.
- An event is specific local piece functionality normally used in one place for one purpose and called from its location.
- A service is a piece of functionality which can be located anywhere on the network, is most of time used in several different places and is called by its 'name'
- In case of events you have access to HttpServletRequest and HttpServletResponse objects and you can read/write whatever you want. In case of services, you have access only to service parameters.
- Services perform transaction rollback if any error occurs, not events. Note though that if an event is implemented by a simple-method, since by default simple-methods are executed inside a transaction unless the simple-method is flagged to not use a transaction, an error will also rollback the event.
...
How to change the default messages
The messages that come in different pages in OFBiz are configured using several configuration files. The best parts of message display framework under OFBiz are as follows:
- It is totally internationalized.
- Actual text messages are stored in configuration files only. This configuration files are written in XML using property key value approach. The actual files like FTL files, service definition files which use these text messages refers to the property key and locale (optional) only to display the message in the output page.
- You can hide the message by just clicking on it. No reloading is required.
The main components of the message display framework in OFBiz are
- messages.ftl: under ofbiz/framework/common/webcommon/includes folder. It is responsible for displaying error and event message in a specific div on the top of the content area.
- CommonUiLabels.xml: under ofbiz/framework/common/config folder. This is a property key value configuration file for storing common UI label elements including error / event headers and messages.
- CommonErrorUiLabels.xml: under ofbiz/framework/common/config folder. This is a property key value configuration file for storing common error message elements.
Beside these two configuration files there are at least one property key value configuration file under the config directory of the respective element for almost all elements like accounting, manufacturing, service, minilang etc. under the applications and framework directories. e.g. AccountingErrorUiLabels.xml, MiniLangErrorUiLabels.xml, ServiceErrorUiLabels.xml
One important thing to notice here is that all UI labels in OFBiz are displayed in the same manner using the property key value XML configuration files available under the config directory. In some cases there are no separate error configuration files but the error messages are included in the UI label configuration file itself. e.g. in case of marketing component related error messages are included in the MarketingUiLabels.xml under ofbiz/applications/marketing/config folder.
How to change a specific error message
- First identify the module in which the message is coming.
- If it is a common message then it would be in CommonUiLabels.xml or in CommonErrorUiLabels.xml
- If it is a module specific message then look into the configuration files under the config folder of that component.
- Identity the key and change the value in English language. If you presently want to change the English message only, then there is no need to do to anything else. However, if you want to update the internationalization part also then you need to do the following step for each language.
- Now using a specific translation program like Google Language Tools, translate the English sentence into a specific language and copy paste that in the value for that specific language.
- After the change is over you need to restart the server for the changes to take effect. You can also clear in the cache named UtilPropertiesBundleCache the resource associated to the message you've just modified. Go to Webtools -> Cache maintenance and search for UtilPropertiesBundleCache.
The same procedure can be followed for changing the UI label elements.
A tip from Amitava Neogi
...
Note on creating a view-entity using entity or view-entity from other components
If you need to use an entity or view-entity from other components to construct a view-entity, be cautious on how the sequence of the components are loaded. This is because the view-entity will be loaded when you start OFBiz, and if the component entity xml is loaded AFTER your component, your view-entity would not be able to pick up the relevant information from the other component.
Therefore it is important to make sure that if you're using entities from other component, make sure they are loaded BEFORE your component.
...
When and when not restarting
This is a big, and often not enough known OFBiz great feature.
Most of the time you don't need to restart when you change things in dev mode (dev mode depends on the content of cache.properties file, see here how to set it).
It's easier to name the main cases (I'll not get into details) where you need to restart:
- Containers and alike configurations changes (this one seems obvious, changes related to the embedded application server - Tomcat - needs a restart)
- Java changes (compilation)
- DB definitions changes (entity, field, etc.)
If the caches are on (ie not on dev mode), it's the same (you don't need to recompile) but you need to clear the caches. See at ...webtools/control/FindUtilCache You might even clear only the cache where things changed (production performance).
...
Beware of HTTP ETag
The ETag header is causing an issue with browser cache not being updated when the server has been updated. Actually a weak ETag, see http://en.wikipedia.org/wiki/HTTP_ETag
Seems like tomcat’s DefaultServlet will only serve weak ETag’s even though tomcat7+ does have code for strong ETag but is never used and there is no documentation on how to set it
A possible solution is to remove If-None-Match request header and ETag response header in apache http server
RequestHeader unset If-None-Match
Header unset ETag
How to measure SQL queries durations
If a query takes more than 150 ms its duration is shown in log. To change that look for:
Debug.logTiming("Ran query in "
in GenericDAO.java