HotWax Media is pleased to announce our sponsorship of ApacheCon US 2013, running February 26 – 28, at the Hilton Portland and Executive Towers in Portland, Oregon, and produced by the Open Bastion (http://theopenbastion.com).
As the official conference, training, and expo series of the Apache Software Foundation (ASF), ApacheCon attracts individual engineers, companies, and open source enthusiasts of all stripes from countries around the world. This year’s ApacheCon US sponsors include Adobe, Citrix, HP, HotWax Media, IBM, RedHat, and other technology companies representing many facets of web application software development.
HotWax Media plays a very active role in the Apache Open for Business (OFBiz) project, and our regular sponsorship and participation in the ApacheCon events is primarily in support of that role. We are proud of our community involvement with the ASF and OFBiz, and ApacheCon is the perfect opportunity for open source community participants to put a face with a name!
This year’s theme is “Open Source Community Leadership Drives Enterprise-Grade Innovation.” Presentations will be professionally-directed, focusing on demonstrating real-world solutions to specific challenges. The experience also includes a Business Panel discussion, numerous tutorial sessions, and other community events such as the BarCamp and the Hackathon.
If you are interested in attending but have not yet registered, drop us a line!
E-commerce for Outdoor Retail Companies: Outdoor Retailer Summer Market 2012
Along with hundreds of other businesses located in Salt Lake City and impacted by the upcoming Outdoor Retailer Summer Market, HotWax Media is actively engaged in our pre-race warm-up. The semi-annual influx of outdoor folks, along with all of the planned activities and products they bring with them, spells client meetings, industry parties, outdoor gear ogling, and an otherwise dense itinerary of walking trips back and forth between our office and the Salt Palace Convention Center.
View of Salt Palace Convention Center from HotWax Media office.
The Outdoor Retailer shows tend to be a real hoot. With Summer Market this year running from August 2 – 5, the show is the largest outdoor sports industry gathering in the world, bringing together over 1000 brands, 21,000 attendees, and buyers from Afghanistan to Arkansas and many places in between. The show generates over $40M in direct economic impact for the state of Utah each year.
Over the years, HotWax Media has had the pleasure of working with dozens of premier outdoor retail companies including Scarpa, Black Diamond, and about 60 more of the coolest brands we know. This year, our focus is e-commerce for outdoor retail companies. We have spent the last few years paying special attention to the outdoor retail space, and in particular their needs related to e-commerce. The result is an amazing e-commerce platform targeted specifically for outdoor retailers, offering a host of industry-specific features. These include the ability to link dealer web sites to product detail pages based on available inventory and other preferences, a native pro-purchase program, video product reviews, a dealer locator, integration with existing ERP such as NetSuite, and much more.
For an example of the platform in action, take a look at Scarpa’s website. We couldn’t ask for a more credible brand as a client showcase – we’re psyched to be working with them!
SCARPA’s e-commerce website
To learn more about our outdoor retail e-commerce software, browse our website or contact us today. If you are an outdoor retailer, we think you’ll like what you see. And if we don’t talk with you again first, we’ll see you at OR!
OfBiz Invoice Processing Workflow Explained
In this issue we’ll discuss Invoice statuses and the Invoice processing workflow supported in the Apache Ofbiz Accounting application. Like other business documents/objects in Ofbiz, Invoices are an important part of the broader Ofbiz system, and changes to its status have direct impact on General Ledger (GL), billing accounts, payments and other accounting functions. Of all statuses, the ‘Ready’ and ‘Paid’ status are unique in that they trigger GL transactions.
As you read this article please keep one very important thing in mind about Ofbiz, it’s designed and built to be fully customizable. Like most other workflows in Ofbiz, OOTB workflow for Invoice processing is very flexible and should be easy to use for most enterprises. If your business uses different statuses (and processing workflow), don’t worry, customizing workflow is very easy.
Now coming back to the Invoice status.
In-Processes: When an Invoice is created it’s always in ‘In-Process’ status. A user can add/edit invoice items and update other invoice attributes like billing party or due date, without impacting any other part of system. This is comparable to a ‘Work-In-Progress’ or ‘Draft’ status you might have used in other workflows.
Approved: Move an Invoice to ‘Approved’ status when you are done preparing (discuss and review), and the Invoice is ready to be finalized. Once in ‘Approved’ status an Invoice cannot be edited. In the event you need to make any updates to an Invoice, it needs to be moved to the ‘In-Processes’ status.
Sent: There’s little flexibility after an invoice is sent. An Invoice can be moved to ‘Sent’ status from ‘In-Processes’ or ‘Approved’ status. Given the flexibility, use of this status in Invoice processing workflow is open for interpretation. It can be used to support the “Sent for Approval” or “Sent to Customer” step in workflow. An Invoice in ‘In-Process’ status can be moved to “Sent” status to support the “Sent for Approval” step in workflow. Alternatively, we can Approve the invoice and then move it to ‘Sent’ status, marking it as “Sent to Customer.”
Ready: An Approved invoice can be moved to Ready status and is a very important step in workflow. Moving an Invoice into Ready status triggers the process of posting the Invoice to GL. What happens on the GL side of the system is governed by Organizations Accounting Preferences and the GL setup.
Paid: Somewhere between creating an Invoice and moving it into ready status, an organization may receive payment (for AR invoices) or send payment (for AP invoices). Once Payment is received (or sent) and applied to the Invoice, and the total amount of payment applications covers the Invoice grand total, the Invoice can then to be moved into Paid status. Moving the Invoice to Paid status triggers GL transactions. A valid status change after the Ready status is ‘Paid’, ‘Write Off’ or ‘Cancel’.
Write Off: If an accounting manager sets the invoice status as ‘Write Off’, then the Invoice becomes non-collectible in the system.
Canceled: An Invoice in ‘Ready’ status can canceled. Any Invoice cancellation event triggers the reversal of the related GL transaction entries and the Payment application, though the Invoice will remain in the system as non-editable.
- Anil
Anil Patel is Chief Development Officer at HotWax Media as well as an OFBiz project committer, PMC member, and active community contributor. He also studies karate! Anil will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
Types Of Invoices in OFBiz
An invoice is a commercial document issued by seller to buyer that enlists the summary of the transaction i.e. quantity, unit price, total of complete purchase, item descriptions, settlement terms, dates, etc. This Ofbiz component supports various Invoice(s) for Accounts payable and Accounts receivable. Let’s find out what are those invoice(s) types are.
Let’s start with AR component. AR supports Sales Invoice(s), Purchase return Invoice(s) and Interest Invoices(s).
1) Sales Invoice(s): The Sales Invoice is where everything comes together. A customer is chosen from the database, or entered as a new customer. Merchandise its detailed by entering non-inventory items or selecting merchandise from inventory. Each Sales invoice may also have a memo attached (e.g., for delivery instructions or other particulars). Once an Invoice is paid it will Debit Accounts Receivable.
2) Purchase Return Invoice(s): In the event of a purchase return, goods are removed from the warehouse to return the goods to the supplier. These will be created for mapping the entries.
3) Interest Invoice(s): Invoices are used to charge clients for overdue invoices.
On the other side of this accounting function, the Ofbiz AP Component supports purchase Invoice(s), customer return Invoice(s), payroll and commission invoice(s).
4) Purchase Invoice(s) : When an invoice is received from one of your regular suppliers, this should be entered in the Ofbiz System as a purchase invoice. Once an Invoice is paid it will Credit Accounts Payable.
5) Customer Return Invoice(s): The reasons a customer may decide to return an item are numerous, and it can be possible only on condition that the terms between our Company and the Customers are discussed, and the return is allowed.
6) Payroll Invoice(s): It could be referred to as ‘The Sum’ total of all compensation that a business must pay to its employees for a set period of time, or by a given date. It is a major expense for most businesses and is almost always deductible as such.
7) Commission Invoice(s): A Commission Invoice is a form of payment to an agent for services rendered.
In the next tutorial I will walk you through various Invoice statuses.
-Anil
Anil Patel is Chief Development Officer at HotWax Media as well as an OFBiz project committer, PMC member, and active community contributor. He also studies karate! Anil will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial – Turning Products On or Off
There are a number of reasons that a product or product variant (size, color, etc) may need to be removed from the front end of the site, but we don’t want to remove the product from the system entirely. This could range from availability, inventory, or seasonal nature of products, or even more specific reasons to your business. Luckily, OfBiz makes this process very simple, and allows us to set very specific introduction and discontinuation dated on products, right down to the individual variants of the products. In this OFBiz tutorial we will walk you through this process to show you how it is done.
To be able to set these introduction and discontinuation dates, the user must be at least a Catalog Manager in the system, and we should already have products set up in the system.
Execution Steps
Go to “Catalog” component and click on “Products” tab.
Fill in details in search fields on “Find” page and click on “Find” button.
System would display the list of existing products based on search inputs.
Click on any of the “Product Id” from the list of various products displayed on Find page.
Product Detail will be displayed on “Edit Product” page.
Click on “Dates” tab.
Enter the “Introduction Date” to enable the product display or to turn on the product.
Enter the “Sales Discontinuation Thru Date” to discontinue and turn of the product display on the ecommerce storefront.
Click on “Update Product” button.
Expected Outcome
If the “Introduction Date” is a future date then product display will be turned off till the date specified.
If “Introduction Date” is not specified or it is a past date then product display will be turned on for the store front.
The changes will get reflected on Edit Product page.
Product will be displayed or removed from storefront.
–Chris Gaughan—
Chris Gaughan is an OfBiz Designer specializing in Client Training and Support for HotWax Media.
OFBiz Tutorial – Price Rules
In this OFBiz tutorial we will be focusing on the Price Rules tab. The Price Rules tab in the catalog manager allows one to create very complex pricing structures based on basic price data and variables such as the customer, product, or quantity involved. For example, it would be possible to specify quantity discounts, special discounts for a particular group of products, for a particular group of customers, or pricing based on average cost rather than list pricing if certain conditions are met.
Price rules are a series of rules which help determine the prices of products. Each rule is a series of conditions and actions. When Open for Business needs a price for a product, such as in an order entry or ecommerce application, it will search through all price rules and use the applicable ones to generate the price. With this OFBiz tutorial, we will go over how to add a price rule, and also how to edit an existing price rule.
To Create or edit price rules, the user must be a catalog manager or administrator in the system.
Add Price Rule
Prerequisite Data
Following data should be modeled properly :
Product Price Rule
Product Price Type
Product Price Condition
Product Price Action
Price rules will only be run if an item has a List Price associated with it.
Execution Steps
Go to “Catalog” component and click on “Price Rules” tab.
"Price Rules" is one of the options under the "Catalog" application menu
Click on “New” tab.
Fill in price rule name in “Name” field in “Add Price Rule” section.
Use a descriptive name when creating price rules for easy management later on
Click on “Add” button.
Added price rule will get displayed in “Global Price Rules” section.
Click on “Edit” button to edit the rule.
Fill in following information on “Global Price Rule” page :
This is a rule that will take 10% off any product that is over $10.00. It is crucial to fill out all the options for the price rule to ensure the rule covers only the products you want it to. If the conditions field is left blank, the rule will apply to everything on the site.
Rule Details :
Rule Name
From Date
Thru Date
Sale Price (Specify if the new price will be sales price or not (Yes/No))
Rule Conditions :
New (Select any one of the following from drop down)
Product (Select to add price rules on Product)
Product Category (Select to add price rules on Product Category)
Product Catalog (Select to add price rules on Product Catalog)
Product Feature (Select to add price rules on Product Feature)
Website (Select to add price rules on Website)
Quantity (Select to add price rules on Quantity)
List Price (Select to add price rules on List Price)
Party (Select to add price rules on Party)
Party Group (Select to add price rules on Party Group (Organization))
Party Group Members (Select to add price rules on Party Group Member)
Party Classification (Select to add price rules on Party Classification)
Role Type (Select to add price rules on Role Type)
Currency Uom Id (Select to add price rules on Currency)
Operator (Select any one of the following from drop down)
Is
Is Not
Is Less Then
Is Less Then or Equal To
Is Greater Then
Is Greater Then or Equal To
Fill in information in last text box (like if condition is on “Product” then fill in “Product Id”, if on “Party” then fill in “Party Id”)
Click on “Create” button.
More then one condition can be added in to the price rule. Fill in above mentioned information again to create more conditions.
Rule Actions :
New (Select any one of the following action from drop down)
Flat Amount Modify (This action modifies the price by a flat amount)
Flat Amount Override (This action overrides the flat amount)
Percent of Average Cost (This action takes the assigned percentage times of the established Average Cost. For example, if you wanted to have 100 percent margin over the Average Cost, enter 200 for the value.)
Percent of Default Price (This action takes the assigned percentage times of the established Default Price.)
Percent of List Price (This action assigns a percent against the established List Price.)
Percent of Margin (This refers to List Price – Average Cost. Some companies like to do margin based pricing and not just list or cost based pricing this makes such possible.)
Promo Amount Override (This action use the ‘Promotional Price’ for this item as fixed amount, overriding all other price actions, this is not an adjustment of any existing price but rather a replacement of that price.)
Wholesale Price Override (This action takes charge only on the Wholesale Price, whatever that might be.)
Fill in information in text box (like if action is “Flat Amount Override” then fill in override amount or fill in percent if action is “Percent of List Price”)
Click on “Create” button.
More then one action can be added to price rule.
Expected Outcome
Price Rule will added and displayed on “Price Rules” page and “Find Price Rules” page.
Price Rule will be applied on the added condition.
Edit Price Rule
Prerequisite Data
Following data should be modeled properly :
Product Price Rule
Product Price Type
Product Price Condition
Product Price Action
Price rule should exist in system.
Execution Steps
Go to “Catalog” component and click on “Price Rules” tab.
"Price Rules" is one of the options under the "Catalog" application menu
Select the price rule by clicking on “Price Rule Id” in “Global Rules” section or by clicking “Edit” button.
Update the existing details on “Price Rule” page.
This is a rule that will take 10% off any product that is over $10.00. It is crucial to fill out all the options for the price rule to ensure the rule covers only the products you want it to. If the conditions feild is left blank, the rule will apply to everything on the site.
Expected Outcome
Selected price rule information will be updated.
—Chris Gaughan—
Chris Gaughan is an OfBiz Designer specializing in Client Training and Support for HotWax Media.
OFBiz Tutorial – Managing Security Groups
This OFBiz tutorial is to show you how to manage your different security groups, since just about every business using the OfBiz platform will have a need to set up different security groups within the system. This allows users to be assigned to specific security groups which can only access the areas of the back-end that are pertinent to their jobs.
To create or edit security groups, the user must be an administrator within the system.
Create New Security Group
Prerequisite Data
None
Execution Steps
Go to “Party” component from the “Applications” Menu.
"Party" will be under the "Applications" Menu
From the “Party Manager” Menu click on “Security” tab.
"Security" is under the "Party Manager" Menu
Security Group Lists will be displayed.
Click on “New Security Group” button.
Fill in following information in “Edit Security Group” form :
Security Group Id ( Enter unique Id for creating new security group )
Description ( Enter description about the security group so that it can be easily distinguishable )
An easily identifiable name and description are very helpful for later management of security groups.
Click on “Update” button.
Expected Outcome
Added “Security Group” details will be displayed on “Security Group Lists” page.
SAMPLE is now an option to edit in the list of security groups
Assign Permissions to Security Group
Prerequisite Data
Security Permissions should exists in system.
Security Group should exist in system.
Execution Steps
Go to “Party” component from the “Applications” Menu.
"Party" will be under the "Applications" Menu
From the “Party Manager” Menu click on “Security” tab.
"Security" is under the "Party Manager" Menu
Security Group Lists will be displayed.
Select a security group by clicking on “Security Group Id” button.
We will use the "SAMPLE" id that was created in the last section of the tutorial
Click on “Permissions” tab.
Select permission Id from drop down in “Add Permission(Listed) to Security Group” section.
There are a number of permissions that can be set up and assigned to security groups
Permission can be added manually by filling in “Permission Id” in “Add Permission (manually) to Security Group” section.
Click on “Add” button.
Expected Outcome
Added permission will be displayed in “Edit Security Group Permissions” section with following details :
Permission Id
Remove
You can click the "Remove" button on this screen if you need to remove permissions
Add User(s) to Security Group
Prerequisite Data
Security Group should exist in system.
User Login(Users) should exist in system.
Execution Steps
Go to “Party” component from the “Applications” Menu.
"Party" will be under the "Applications" Menu
From the “Party Manager” Menu click on “Security” tab.
"Security" is under the "Party Manager" Menu
Security Group Lists will be displayed.
Select a security group by clicking on “Security Group Id” button.
We will use the "SAMPLE" id that was created in the first section of the tutorial
Click on “User Logins” tab.
Fill in following information in “Add User Login to Security Group” form :
User Login Id
From Date
Note: a "Thru Date" is usually not set unless the user will only have temporary access to the security group
Click on “Add” button.
Expected Outcome
Added user login details will be displayed on “Userlogins for Security Group” page with following details :
User Login Id
From Date
Thru Date (If exist)
Party ( Party associated with user login )
Remove
Click on “Remove” button to remove user login from Security Group.
Update
Click on “Remove” button to update user login for Security Group.
—Chris Gaughan—
Chris Gaughan is an OfBiz Designer specializing in Client Training and Support for HotWax Media.
OFBiz Tutorials – Looking Up Orders
Your OfBiz site is functioning, orders are rolling through and everything is gravy, but occasionally an order needs to be found for a whole plethora of reasons. Luckily, there are a few different ways for an administrator or customer service representative to search for that order, from which point they can make the necessary adjustments (covered in other OFBiz tutorials). To start, lets make sure that:
• The user has at lease the role of a Customer Service Representative or Administrator.
• Order(s) have been entered and exist in the system
From here, there are two basic ways to search for an order, so we can find almost any order no matter the information we have.
Lookup Orders using Find Order
Choose “Customer Service” from “Applications Menu”.
Customer Service is under the Applcations Menu
Select “Orders” from Customer Service Menu.
Orders is under Customer Service Menu
Fill in following search criteria in the “Find Order” screen:
OrderId
Customer Party Id
Customer First Name
Customer Last Name
Customer Phone Number
Customer Email Address
Order Date Filter
From Date
Thru Date
Any or All feilds can be filled, depending on available inforation
Click on the “Find” button.
Expected Outcome
Order(s) that match the search criteria will be listed in the Search Results.
All Matching Orders will be displayed. From here, you can click on an order ID and make changes.
Lookup Orders using Advanced Search
Choose “Customer Service” from “Applications Menu”.
Customer Service is under the Applcations Menu
Select “Orders” from Customer Service Menu.
Orders is under Customer Service Menu
Click on the “Advanced Search” button at the bottom of the “Find Order” screen.
Fill in any or all of the following search criteria in the “Find Order” screen:
OrderId
External Id
Customer PO# (Purchase Order Number for which sales order is placed)
Product Id
Inventory Item Id
Customer Party Id
Customer First Name
Customer Last Name
Ship To Zip Code
Customer Phone Number
Customer Email Address
Role Type (Role type associated with the order)
Party Id (Party Id of the party associated with the order)
User Login Id
Billing Account
Created By
Sales Channel
Product Store
Status
Shipping Method
Viewed (If order is reviewed by the CSR)
Date Filter
From Date
Thru Date
Filter on Inventory problem (Select this check for filtering order by Inventory Problem)
Ship To Country with include and exclude option
There are many more options than displayed here... if you can't find it with this screen, it probably isn't there
Click on the “Find” button.
Expected Outcome
Order(s) that match the search criteria will be listed in the Search Results.
All Matching Orders will be displayed. From here, you can click on an order ID and make changes.
—Ruppert—
Tim Ruppert is Chief Operating Officer at HotWax Media, an OFBiz service provider, as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisers in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial: Charts of Accounts
A sometime misunderstood concept in OFBiz accounting is the account class of an account; this OFBiz Tutorial will provide quick notes to avoid errors.
During the setup of a Chart of Accounts in OFBiz, it is important to assign the proper account class to each of the accounts; in fact the account class determines:
1) if the account carries a debit or credit balance
2) the financial report in which the account is included.
The complete list of classes that you can assign to an account is described by the account class tree in OFBiz:
Asset (longterm, current, cash, inventory), expense (cash, interest, cost of goods sold, sales general administrative, non cash, depreciation, amortization, inventory adjustment) and distribution (dividend, return of capital) accounts each follow the same set of debit/credit rules. Debits increase these accounts and credits decrease these accounts. All these accounts carry a debit balance except contra revenue.
Liability (current, longterm), revenue and equity (retained earnings, owners equity) accounts follow opposite rules: credits increase liabilities, revenues, and equity, while debits decrease these accounts. All these accounts carry a credit balance except contra asset.
All the accounts belonging to the following classes are included in the Balance Sheet:
* all asset and contra asset classes
* all liability classes
* all equity classes
All the accounts belonging to the following classes are included in the Income Statement:
* all revenue and contra revenue classes
* all expense classes
* all income classes
All the accounts belonging to the cash equivalent class are included in the Cash Flow Statement.
- Jacopo
Jacopo Cappellato is VP of Technology at HotWax Media and has been involved with the OFBiz project since 2003. He is an OFBiz Project Committer and a member of both the OFBiz Project Management Committee and the Apache Software Foundation.
OFBiz Tutorials: Manage Suppliers for a Product
To continue on the various applications of the OFBiz Catalog Manager, today we will dive into the world of managing Manufacturers and Suppliers of specific products.
Many times there are more than one supplier for a product, so we will learn how to create a new supplier as a preferred or alternate supplier. Once that supplier has been set up and is available in the Catalog Manger, we can then associate the product or products with the supplier.
Create Supplier(s)
Let’s first talk about prerequisite for managing this part of the catalog:
The user must at least have the role of catalog manager. There are other roles that they can have that encompass catalog management, but they must have the ability to go here and manage this content.
The product(s) should already exist in the system.
Now that we know the requirements, we can begin creating a new supplier:
Go to “Catalog” component and click on “Products” tab.
Fill in the search fields on “Find” Form to search existing products in system.
Click on the “Find” button and the system will display a list of existing products based on search inputs.
Click on “Product Id” displayed as search list on Products Page.
Product details will be displayed on the “Edit Product” page.
Click on “Suppliers” tab.
Click on “Create New Supplier” button in Add Supplier section.
Fill in the following details in “Create New Supplier” form:
Group Name
Employees
Office Site Name
Address 1
Address 2
City
State
Zip/Postal Code
Country
Country Code
Area Code
Phone Number
Ext
Email
Click on the “Save” button.
As a result of this, the supplier’s profile will get displayed on the “Product and Catalog Manager” Page.
Associate Supplier with the Product
Now that we have the supplier entered in, we can associate the supplier with the product(s).
To review, there are a few prerequisites to accomplish this:
The user must at least have the role of catalog manager. There are other roles that they can have that encompass catalog management, but they must have the ability to go here and manage this content.
The product(s) should already exist in the system.
The Supplier(s) should already exist in the system.
If the above prerequisites have been met, we can associate the Supplier(s) to the product with the following steps:
Go to the “Catalog” component and click on the “Products” tab.
Fill in the search fields on “Find” Form to search existing products in system.
Click on the “Find” button and system will display the list of existing products based on search inputs.
Click on “Product Id” displayed as search list on Products Page.
Product details will be displayed on the “Edit Product” page.
Click on “Suppliers” tab.
Fill in the following details in “Add Supplier” form:
Supplier Preferred Order
Supplier
Supplier’s Product Name
Supplier’s Prod Id
Available From Date
Expected Delivery Time in Days
Min Order Quantity
Last Price
Drop Ship (Select this check box only when supplier allows drop shipment for that particular product).
Click on “Add Supplier” button.
At this point, the Added Supplier will get displayed on the Suppliers page.
Edit Supplier(s)
The last portion of managing the Supplier(s) for a product is being able to edit the Supplier details:
The prerequisites for this task are:
The user has the role of at least Catalog Manager
At least one Supplier has been associated with the product.
If these have been met, lets edit the Supplier details.
Go to “Catalog” component and click on the “Products” tab.
Enter values in the search fields on “Find” Form to search existing products in system.
Click on the “Find” button and the system will display the list of existing products based on search inputs.
Click on the “Product Id” displayed as a search list on Products Page.
Product details will be displayed on the “Edit Product” page.
Click on the “Suppliers” tab.
Click on “Edit” link to edit the supplier on Supplier page.
Update existing supplier details and use the “Add Supplier” button to save the changes.
Use the “Remove” button to remove existing suppliers.
The expected outcome of this is that all the changes will be reflected on the “Supplier” page.
Stay in the know about OFBiz- More OFBiz tutorials to come in the not too distant future – stay tuned!
Tim Ruppert is Chief Operating Officer at HotWax Media, an OFBiz service provider, as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisers in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial: Assign GlAccount to Organization
Building off my last OFBiz tutorial, I will demonstrate how to Assign GlAccount to Internal Organization. Its an act of defining the Chart Of Accounts (CoA) for given internal organization. The same GlAccount can be assigned to one or more then one internal organizations. For example, the global CoA may contain 100 different GlAccounts but only 20 need to be used for your specific business. This means you need to only create assignments for GlAccounts you actively want to use.
Go to the “Accounting Manager” application and click on the “ Organization Gl Settings ” Menu.
List of avialable Internal Organization will be displayed. To manage Internal Organization accounting setup, click on Setup button. On the next screen select Chart of Accounts tab.
To assign GlAccount, select GlAccount from drop down and just click on create assignment tab.
The bottom part of screen shows all GlAccounts assigned to the internal organization.
Stay tuned, for upcoming Ofbiz tutorials to learn how you can use open source ERP for managing your business.
- Anil
Anil Patel is Chief Development Officer at HotWax Media as well as an OFBiz project committer, PMC member, and active community contributor. He also studies karate! Anil will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
2010 Sign Off From HotWax Media
As we reach the end of 2010 I find myself spending a little bit of extra time reflecting on the past 12 months, and wanted to share some thoughts.
First of all, we’re extremely lucky to have an incredible staff of people positioned all around the world who work passionately day and night, quite literally. It’s these inspired individuals who consistently generate quality enterprise ecommerce business solutions that ensure HotWax Media will always deliver on the assurances we make. To every one of you who came up with an innovative solution to a problem we were facing, worked through the night to hit a deadline, set your alarm for 3AM to get up for a conference call with someone on the other side of the world, or just put your heart into delivering the best, highest quality work you could, I thank you. I am proud of the dedication and continuous improvement we represent together as a team.
We work hard to deliver top shelf solutions for our customers, and HotWax Media is fortunate to have been involved with so many great companies, in so many exceptional projects this past year. On behalf of everyone in the company I would like to say thank you to the many outstanding organizations and extraordinary people we’ve worked with this year. From Scarpa North America and Black Diamond Equipment to Anytime Costumes, ALX, TWP, High West, Champion, and others (you know who you are), we appreciate the opportunity to work with you and your organizations. The great personal relationships we forge through our business associations are a tremendous incentive to keep our partnerships not only professional, but also enjoyable for both sides. It’s all about the bottom line, and we continue to have a great time getting there.
As we look forward, I’m thrilled to think about everything HotWax Media has on the horizon for 2011. In a matter of days we’ll launch a full ecommerce web store called PrepareWise.com, which features Wise Foods food storage products, and there are similar projects lined up and in development through 2011. We have another large product deployment as well during the first week in January, and the work load looks to be hot and heavy throughout the year. When one enjoys what he does — and we do — it’s great to be busy and in demand. For that I am very thankful.
Our commitment is to continue to deliver the best enterprise ecommerce solutions available today at prices that make a preacher want to kick out a stained glass window. That’s what we do, and I think most anyone we’ve encountered along the way can confirm the fact that we love doing it.
I wish you all health and happiness going into the tweens. Happy New Year, and here’s to an amazing, fulfilling, prosperous 2011!
Mike Bates is CEO at HotWax Media and will join other HotWax Media employees and advisers in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial: Associating Product with Multiple Categories
Building off of other OFBiz catalog manager tutorials that have been posted earlier, today we will look into how you can associate a product with multiple categories. This will be broken down into two sections: adding a product into a category, and then updating the product category association.
Add Product to a Category
Let’s first talk about prerequisite for managing this part of the catalog:
The user must at least have the role of catalog manager. There are other roles that they can have that encompass catalog management, but they must have the ability to go here and manage this content.
The data must be setup so that the product’s association type is modeled correctly in the system. Basically what this is saying is that some association types, while they may look like they would fit in here, will not have the product show up correctly on the front end if you do not do this properly.
Now that we know that – let’s discuss associating a product with a category.
Go to the “Catalog” component and click on the “Advanced Search” Button within “Search Products”.
Fill in the search values on the “Find” screen and click on the “Find” button.
A list of products will be displayed based on the search criterion.
Click on any of the products and the “Edit Product” page of the selected product will get displayed.
Click on the “Categories” tab.
Fill in the following details in the “Add Category for this Product” form :
Category
Select “Category” from look up which contains following information :
Product category Type Id
Primary Parent Category Id
Category Name
Description
Show In Select
From Date
To Date
Comments
Sequence Number
Quantity
Click on the “Add” button after entering the information.
At this point the added “Category” will be displayed in “Categories” section with the following details:
Category
From Date
To Date
Comments
Sequence Number
Quantity
Update Product Category Association
Now that you can add product to a category, let’s discuss how you can edit this information in OFBiz. The prerequisites are exactly the same as for adding product to a category except to edit it, you need to have the product associated with a category.
Here are the steps for updating the product category association:
Go to the “Catalog” component and click on the “Advanced Search” Button within “Search Products”.
Fill in the search values on the “Find” screen and click on the “Find” button.
A list of the products will be displayed based on the search criterion.
Click on any of products and the “Edit Product” page of the selected product will get displayed.
Click on the “Categories” tab.
Following details will be displayed in “Categories” section of added category:
Category
From Date
To Date
Comments
Sequence Number
Quantity
Update existing category details.
Click on the “Update” button to save the details.
Use the “Delete” button to delete the category association – if necessary.
Now your updated category details will be displayed on the “Categories” section of “Category Members” page.
More OFBiz tutorials to come in the not too distant future – stay tuned!
Tim Ruppert is Chief Operating Officer at HotWax Media, an OFBiz service provider, as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisers in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial: Adding GlAccount to Chart of Accounts
Today we will be diving into how one can add GLAccount to Chart of Accounts (CoA) in OFBiz using UI tools. Before you try the steps listed in this OFBiz tutorial, make sure you have a user account with Account Manager role assigned to it.
Go to the “Accounting Manager” application and click on the “Global GL Settings ” menu and then select “Chart of Accounts”, Existing GLAccount list will be shown.
A user can add a New GLAccount to CoA by clicking on the Navigate Accounts tab. The screen shows CoA in a tree structure.
The bottom part of the screen has a form for adding and editing GLAccount.
Fill in the required information for the new GLAccount, click on the “Add” button to add the GLAccount to your CoA. The new GlAccount will be added in Chart of Accounts, you can view it in the CoA tree.
Moving towards the Next Step which is editing GLAccount, Select GLAccount from CoA tree, GLAccount will be available for editing in edit form below the tree. Make necessary changes and save.
Stay tuned with the OFBiz tutorial to get more examples for your own Business Domain.
-Anil.
Anil Patel is Chief Development Officer at HotWax Media as well as an OFBiz project committer, PMC member, and active community contributor. He also studies karate! Anil will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
Ofbiz Accounting: Setup Chart Of Accounts
In this OFBiz tutorial I will walk through the process of setting up OFBiz accounting. It starts with building your Chart of Accounts (CoA). As you might already know, OFBiz comes with sample CoA. In case you find it overwhelming, I have listed below a simpler version of a CoA that will get you started.
<entity-engine-xml>
<glAccount glAccountId="1220" accountName="AR Merchant Account Visa M/C" parentGlAccountId="1200" accountCode="AR Merchant Account Visa M/C" glAccountClassId="CURRENT_ASSET" glAccountTypeId="MRCH_STLMNT_ACCOUNT" postedBalance="0.0"/>
<glAccount glAccountId="1230" accountName="AR Paypal" parentGlAccountId="1200" accountCode="AR Paypal" glAccountClassId="CURRENT_ASSET" glAccountTypeId="MRCH_STLMNT_ACCOUNT" postedBalance="0.0"/>
<glAccount glAccountId="1240" accountName="AR Bank Checks" parentGlAccountId="1200" accountCode="AR Bank Checks" glAccountClassId="CURRENT_ASSET" glAccountTypeId="MRCH_STLMNT_ACCOUNT" postedBalance="0.0"/>
<glAccount glAccountId="1250" accountName="AR Google Checkout" parentGlAccountId="1200" accountCode="AR Google Checkout" glAccountClassId="CURRENT_ASSET" glAccountTypeId="MRCH_STLMNT_ACCOUNT" postedBalance="0.0"/>
<glAccount glAccountId="1260" accountName="AR American Express" parentGlAccountId="1200" accountCode="AR American Express" glAccountClassId="CURRENT_ASSET" glAccountTypeId="MRCH_STLMNT_ACCOUNT" postedBalance="0.0"/>
<glAccount glAccountId="1270" accountName="AR Discover" parentGlAccountId="1200" accountCode="AR Discover" glAccountClassId="CURRENT_ASSET" glAccountTypeId="MRCH_STLMNT_ACCOUNT" postedBalance="0.0"/>
</entity-engine-xml>
This simple list of GL Accounts will get you started, but you will obviously need to put together a plan with your accountant or otherwise make the final decision for yourself on the GL Accounts that are best suited for your own business. In my next post, I’ll walk you through the process of assigning GL Accounts to the business entity and thereafter how to setup GL Account defaults to enable automatic GL posting of Payments, Invoices, Inventory and related activities. Good luck.
- Anil
Anil Patel is Chief Development Officer at HotWax Media as well as an OFBiz project committer, PMC member, and active community contributor. He also studies karate! Anil will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
Accounting for OFBiz eCommerce
After a long wait and a lot of hard work, I am pleased to finally be able to say that the Accounting application in Apache OFBiz is ready for prime time! By working with internal experts (including Jacopo Cappellato) along with client experts, we have recently launched an enterprise e-commerce system that is using the OFBiz Accounting application more extensively than any of the systems we have previously implemented.
It is no surprise that the mantras of entrepreneurs everywhere often center on revenue generation, and rarely on the underlying accounting thereof! Keeping accurate financial records of all business activities is, nevertheless, essential, and the OFBiz Accounting application has many features designed to help support that critical need for sound financial management.
In an effort to make the OFBiz Accounting application as easy to use as possible for a variety of businesses both small and large, Hotwax Media created additional tools allowing for user export of general ledger account transaction data in the Quickbooks IIF format, as well as the ability to receive payments in A/R batches. (There is a widely accepted perception that Quickbooks is very easy to use. I don’t necessarily agree This integration, nevertheless, means users can easily export data of their choice out of OFBiz Accounting and import that data into Quickbooks. We created this integration based on customer demand. I would not have guessed it, but they told us loudly and clearly that accountants love to play with numbers in Quickbooks; well, we aim to please!
Over next little bit I’ll share more information with some concrete examples that you can use for setting up your own OFBiz Accounting system.
- Anil
Anil Patel is Chief Development Officer at HotWax Media as well as an OFBiz project committer, PMC member, and active community contributor. He also studies karate! Anil will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial: Managing Cross Sell Products in OFBiz
Building off of other OFBiz catalog manager tutorials that Pranay and Vikas built earlier this year, today I will be diving into how you can manage cross sell information in OFBiz. We’ll break this up into two separate sections: Adding Cross Sell Products and Editing Cross Sell Products once they are added.
Add Cross Sell Product(s)
Let’s first talk about prerequisite for managing this part of the catalog:
The user must at least have the role of catalog manager. There are other roles that they can have that encompass catalog management, but they must have the ability to go here and manage this content.
The data must be setup so that the product’s association type is modeled correctly in the system. Basically what this is saying is that some association types, while they may look like they would fit in here, will not have the product show up correctly on the front end if you do not do this properly.
Now that we know that – let’s discuss adding cross sell product associations to your products.
Go to the “Catalog” component and click on the “Advanced Search” Button within “Search Products”.
Fill in the search values on the “Find” screen and click on the “Find” button.
A list of products will be displayed based on the search criterion.
Click on any of the products and the “Edit Product” page of the selected product will get displayed.
Click on the “Associations” tab.
Fill in the following details in the “Add Association” form :
Product IdProduct Id ToAssociation Type Id (Select Association Type as ‘Complementary Or Cross Sell’)From DateSequence NumberReasonInstructionQuantity
Click on the “Create” button after entering the information.
Then you’ve got your association taken care of, and you will see it displayed on the “Associations from this Product to” section of your product management page:
If your front end supports it, you will see your cross sell items on the front end of your website in the “Recommended Products” section of your product detail or shopping cart pages.
Edit Cross Sell Product(s)
Now that you can add cross sell products to your product associations, let’s discuss how you can edit this information in OFBiz. The prerequisites are exactly the same as for adding cross sells into the system except to edit it, you need to already have created the cross sell product association .
Here are the steps for editing cross sell product associations:
Go to the “Catalog” component and click on the “Advanced Search” Button within “Search Products”.
Fill in the search values on the “Find” screen and click on the “Find” button.
A list of the products will be displayed based on the search criterion.
Click on any of products and the “Edit Product” page of the selected product will get displayed.
Click on the “Associations” tab.
On the “Associations” page, click on the “Edit” button next to the complementary product in the “Associations from this Product to” section.
Update the following details in “Add Association” form:
Thru DateSequence NumberReasonInstructionQuantity
Click on the “Update” button to save the details.
Use the “Delete” button to delete the associated cross sell product – if necessary.
Now you’ve got your association tuned (or deleted) depending on what you needed to do in your system. The changes will be reflected on the “Associations from this Product to” section of Associations page and will also be reflected on your front end in the “Recommended Products” section of your product detail page or shopping cart pages.
More OFBiz tutorials to come in the not too distant future – stay tuned!
Tim Ruppert is Chief Operating Officer at HotWax Media, an OFBiz service provider, as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisers in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
Verified Agile Workflows and Processes
October 4, 2010
Now that we’ve gone through the process of explaining the differences between standard Agile development methodologies and our custom workflow management system called Verified Agile, let’s dig into the different steps that we go through in order to be successful in this environment.
To kick off a project’s first iteration, we dig in on the requirements and create a number of Epics that encompass the entire set of information in contained in the requirements documentation. If you are not familiar with an Epic it is simply a high level story used for capturing requirements that are often too complex or too large to estimate right away and will need to be detailed and broken down for estimation, planning and eventually implementation. Once the first Epic is fully fleshed out, and the stories are defined, estimated and prioritized, we can start the process of planning and working through the stories in the next iteration.
As a side note, we do not try to get all Epics defined in one batch – that’s a bit too much like a waterfall process – it’s as iterative as the rest of the process and results in being able to put a working end to end system in front of the customer as early as possible.
As the stories are derived from the Epics and are ready for scheduling in the current iteration, we break down our stories into subtasks that can be easily assigned to different members of the team. The Verified Agile process has the following steps once you’ve reached the scheduled story level:
1. Analysis2. Acceptance Test Creation3. Design4. Development5. Technical Review6. Business Review7. Client Review
The steps take you through the process of understanding the story and ensuring that each and every base is covered. Here is a bit more information on each of the subtask types:
Analysis:
This is an optional step that is there to bridge the gap that sometime exists between the story creation and the ability to build the acceptance test. If the Epic breakdown is done very thoroughly, or the stories are of a lower complexity level, you almost never need this subtask.
Acceptance Test Creation:
The foundation of a test-driven development environment. Here at HotWax Media, we build these before development in order to ensure that we are capture all of the nuances found in the story before we start development.
Design:
The other optional step that depends upon the complexity of the task. Because we are focused on building enterprise application in Apache’s Open for Business, often times the description of the story and the acceptance test is all that we need to get started on development. For more complex stories, we always perform this step to ensure that the code that is going to be written is following our best practices.
Development:
Self explanatory – where the implementation is executed.
Technical Review:
The first line of internal verification – did the implementation of this story match design in addition to our best practices? These reviews are done by a team lead or expert reviewer which greatly increases the quality of our deliverables.
Business Review:
The second line of internal verification – does the workflow implemented match the acceptance test and business rules that were provided to us? These review are done by a business analysts, technical project manager or account manager before it is put in front of the client.
Client Review:
The most import verification out there – does our output match the expectations of the customer? If not, we start back at the beginning and go through all of the steps until the customer is satisfied.
Hopefully this overview of HotWax Media’s Workflows and Processes gives you insight into how we would approach your project and the steps that we put into place to ensure it’s success. Next post I will go into more detail about how this all works in our tools and how that makes us prepared to guide your project to completion.
Tim Ruppert is Chief Operating Officer at HotWax Media, an OFBiz service provider, as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisers in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
Google Instant: Implications for E-Commerce Search
Last week Google rolled out their new “Google Instant” search platform to web users in the US, UK, France, Italy, Germany, Spain, and Russia. The launch represents another step in Google’s efforts to provide a more dynamic, predictive search environment. Google Instant updates, in real-time, the search results displayed on the page with each additional typed character entered by the user. Instead of requiring the user to click “Search” or press “Enter” after typing their full phrase or choosing from the list of popular search terms, the results are instantly displayed on the page below and update dynamically with each additional character typed. Google instant also incorporates local information, which will mean some variation in the real-time results displayed depending on the location of the search user.
The change promises to make a typical web search via google much less tedious to the user, and more of an exploratory endeavor. As Tom Krazit describes in his review for CNET;
“Instead of search as an outcome, Google is trying to get people to think of search as a process in which you constantly refine your query without actually ‘searching,’ or hitting the button to produce a concrete result.”
Google has been quick to point out via its Webmaster’s Blog that Google Instant has not altered the search ranking process, and could have the effect of increasing the overall number of search impressions because of the relative ease of obtaining a search result in the new platform.
User Distraction and other Potential Impacts
Google Instant may have the impact of distracting potential customers who would otherwise be entering a full search query. As the search user begins typing an extensive phrase, they will be displayed a host of search results during the process which are likely to draw their attention away before ever completing the full query. The more extensive the originally intended phrase, the more of a potential impact this distraction factor may have for the site whose visibility is geared for that exact phrase. (Never mind the fact that I already have way too many tabs open!)
This will present a new challenge for small sites or those running their own search optimization, because click-through and impression rates are likely to favor the top few positions in the paid and organic search results. It is also likely to benefit sites which have a lock on more generic terms. (This is due to the fact that page 2 seems infinitely farther away when you are in mid-search scrolling down the page to look at results.)
Google Instant may also generate a new wave of competitive efforts to optimize for search results based on single letters or other otherwise nonsensical phrases, purely because of their appearance sooner in any given search attempt. The introduction of this “time component” to what has previously been primarily a competition over vertical ranking, may become a big factor for optimization experts. (Think optimizing for ‘boo’ — is that user looking for a Halloween costume** or a book on Amazon?) These earlier results, though less optimized for the originally intended search phrase, could draw customers away from e-commerce sites whose competitors optimize more effectively for the time factor introduced by Google Instant.
The bottom line at this point is that enterprise e-commerce professionals would be wise to keep a close eye on their sites’ search performance and analytics in coming weeks. Be ready to identify and take advantage of opportunities found through testing Google’s auto-complete suggestions, and begin optimizing for more general phrases.
Of course, once you get potential customers to your site, you still have to convert them! Contact HotWax Media today to learn more about how we can help you build an enterprise e-commerce site that is feature rich on the front and back ends, and makes it simple and enjoyable for site visitors to make a purchase.
** If you are looking for a Halloween costume, skip Google Instant, visit the online leaders at www.anytimecostumes.com, and use coupon code HOTWAX for a 15% discount!
Mike Bates is CEO at HotWax Media and will join other HotWax Media employees and advisers in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
Verified Agile Explained
-Verified Agile Explained
The workflows that make up a verified agile process are not that different from the standard set you find in an OOTB agile implementations – with the twist being that technology now allows us to take our implementations to a merit-based, global team instead of being limited by proximity. In my experience, it is always better to follow the agile doctrine strictly, and have each of your people and your customer sitting in the same room focused on the same topic. In this age of constant connectivity and a flattened world, that just isn’t the way that people live their lives. So here at HotWax Media, we’ve made accommodations to give both out customers and employees what they want: the additional flexibility to be where they need to, but not have their project skip a beat!
Agile’s proximity dogma is _the_ problem that geographically disparate teams have been battling with for years – but we are just now arriving at an era where our technical innovation, practice and patience have allowed us to reap the benefits of agile development methodologies across the globe. In order to be able to offer our services to people all around the world, and still provide the level of quality and responsiveness that we’ve come to expect as professionals, we have added both additional processes and tools to agile workflows that ensure that we are on track and let us know exactly when we stray.
In my next sets of posts, I will start by digging into the details that define our verified agile workflows and processes as well as showing you how leveraging different nodes of a collaboration platform can make life easier on you and your customers.
In a continuation of my posts about Ecommerce ERP and our Verified Agile Process, managing your project to completion the way that HotWax Media does, I am going to dig into exactly what we mean by Verified Agile Process.
The workflows that make up a verified agile process are not that different from the standard set you find in a standard agile implementations – with the twist being that technology now allows us to take our implementations to a merit-based, global team instead of being limited by proximity. In my experience, it is always better to follow the agile doctrine strictly, and have each of your people and your customer sitting in the same room focused on the same topic. In this age of constant connectivity and a flattened world, that just isn’t the way that people live their lives. So here at HotWax Media, we’ve made accommodations to give both our customers and employees what they want: the additional flexibility to be where they need to, but not have their project skip a beat!
Agile’s proximity dogma is THE problem that geographically disparate teams have been battling with for years – but we are just now arriving at an era where our technical innovation, practice and patience have allowed us to reap the benefits of agile development methodologies across the globe. In order to be able to offer our services to people all around the world, and still provide the level of quality and responsiveness that we’ve come to expect as professionals, we have added both additional processes and tools to agile workflows that ensure that we are on track and let us know exactly when we stray.
In my next sets of posts, I will start by digging into the details that define our verified agile workflows and processes as well as showing you how leveraging different nodes of a collaboration platform can make life easier on you and your customers.
-Tim
Tim Ruppert is Chief Operating Officer at HotWax Media, an OFBiz service provider, as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
Enterprise E-commerce and SEO / PageRank
September 1, 2010
HotWax Media is the leading provider of enterprise e-commerce websites running on Apache OFBiz. We build enterprise e-commerce systems for a variety of different types and sizes of businesses, from online costume retailers to mesh materials and cutting service providers. Our enterprise e-commerce systems offer all the bells and whistles: completely custom front end designs, great merchandising features (cross-sell and up-sell, feature-driven navigation, robust pricing and promotion creation, multi-channel sales, etc.), custom shopping cart and checkout, shipping integrations with FedEx, UPS, and USPS, inventory management (receiving, stock management), order management and customer service, and much more. When it comes to robust e-commerce features, the Apache OFBiz framework combined with our unparalleled enterprise ecommerce expertise at configuring, customizing and extending OFBiz features means that our clients can have just about any e-commerce feature that they can dream up.
But a successful e-commerce enterprise requires much more than a whiz-bang system.
Perhaps more important than the site design and features is the marketing strategy that drives your online sales efforts. Let’s assume that you have a product line that makes sense — you manufacture or purchase your high-quality products at wholesale with plenty of margin to run a profitable business given reasonable sales volume. You have a great enterprise e-commerce site with all the great design and site features you wanted. Now what?
SEO (search engine optimization) is the crucial ingredient in making your online sales efforts bear fruit. Simply put, the best product in the world will not sell online if your customers cannot find you.
Online marketing is a dynamic field full of smart, ambitious professionals. Some are wildly successful on your behalf, while others will take your money for nothing. Some are hard working and forthright, and others are shysters. Ask any online business leader and they will agree: there are many aspects for a business to consider as it markets itself online and some are much more straight forward than others.
Good page content? Check. Good file names, alt tags, page titles, meta tags? Check. Site map and robots.txt file? Check. Now how to measure performance while still having time to run your business?
For SMB owners, dollars generally represent the most meaningful method for measuring progress, of course, but there are other useful indicators that can help along the way. A great place to start is Google’s PageRank.
In their paper The Anatomy of a Large-Scale Hypertextual Web Search Engine, Sergey Brin and Lawrence Page describe PageRank as “a model of user behavior.” They elaborate as follows: “We assume there is a “random surfer” who is given a web page at random and keeps clicking on links, never hitting “back” but eventually gets bored and starts on another random page. The probability that the random surfer visits a page is its PageRank.” They go on to state that “…a page can (also) have a high PageRank if there are many pages that point to it, or if there are some pages that point to it and have a high PageRank. Intuitively, pages that are well cited from many places around the web are worth looking at.”
For SMB owners, the bottom line is that a well known page (quantified by random visits and pointers from other well known web pages) will have a higher page rank. This page, in turn, will return more prominently in search engine results than lesser known pages with similar content. Step 1, then, is to create pages with higher PageRanks than those of your competition!
How does one go about measuring and boosting PageRank?
Measuring PageRank is relatively easy. There are toolbars and websites readily available that will tell you the PageRank for any given URL. For example, PR Checker gives you a web page for checking PageRank, and Google Toolbar runs right along with your browser.
Boosting PageRank takes more work, and happens by getting other pages with high PageRanks to link to your page. (For example, you can submit your site to directories like Yahoo!, and list your products on sites like Amazon.) There are many tactics and techniques to be explored, but we will not cover them in detail here. As with the rest of your online marketing strategy, boosting PageRank takes time and consistent effort. It requires good planning up front, and ongoing work to maintain and improve. But if you master the basics and keep working at it, you will see results.
HotWax Media offers online marketing packages for enterprise e-commerce businesses. Contact HotWax Media today to learn more!
Mike Bates is CEO at HotWax Media and will join other HotWax Media employees and advisers in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
E-Commerce and Digital Media Delivery: Interpreting the Market Signals of Piracy
August 16,2010
Since the early days of Napster‘s popularity and subsequent demise as a piracy medium, we have been treated to the public spectacle of the awkward “cat and mouse” battle between owners of intellectual property and the “pirates” who live to steal it. It seems that with each new advance in technology for content delivery and file sharing, a new wave of legal efforts and public relations campaigns arise to counter its use as a method of unauthorized sharing of media. And then another previously unapologetic heavy metal thrasher first insists that we eff the man, then complains about digital piracy, and finally pirates his own music.
In some cases, it is this very battle that seems to be driving innovation in methods of digital content transfer and delivery. The protective mechanisms of legal enforcement and civil liability, at least in theory, offer a safety net to the media industry, which would otherwise likely be more actively involved in driving these innovations in content delivery themselves. Potential consumers regularly face a choice between what is to them an inefficient, old-school method of obtaining their digital content (and the high price point involved therewith), or some new and innovative, highly efficient, yet criminal alternative. For every consumer who takes the step of pirating the content, furthermore, there are likely several with similar desires who simply do the most honorable thing and choose not to buy the content or illicitly download it.
In other words, not every digital content pirate is a black hat hacker looking for the thrill of putting one over on the big media industry, or a criminal at heart who simply wants to get a product without paying. Many are simply acting on a desire to obtain the content through a more efficient medium that is not offered legitimately; and indications are that many of these people would be willing to pay for the content, delivered efficiently, if they were able to do so.
In other cases, there is an unwillingness to pay the prices demanded but not a general unwillingness to pay for content. Digital content delivery affords manufactures significant savings in production costs, and yet even some of the most innovative channels for content purchase and delivery often price the digitally-delivered product the same as an off-the-shelf retail packaged copy. One striking example of this is IGN‘s Direct2Drive service for computer games. To add to the problem, these services are often still slower methods of content delivery than a highly-populated, free pirate torrent download through BitTorrent.
Jerry Kirkpatrick, professor of international business and marketing at Cal State Polytechnic has illustrated this in his article, The Market Function of Piracy
“Message to the innovative marketer? Either drop the price of the new product or produce a cheaper version — or be the first to exploit a new technology, something the movie and recording industries chose not to do. Many, including these two industries, would rather sue than practice good marketing.”
Another striking illustration of this is piracy of television series. For many consumers, the desire to download the pirated media is driven primarily by a desire to view the content in the soonest format available because it is an episodic series that they are actively following. It is not at all an indication of unwillingness to use a legitimate channel, were it available and even modestly priced, instead of piracy. (A la carte cable channels on demand, anyone?) Often ill-timed release dates and regional conflicts delays delivery through Itunes or other legitimate channels and fuels this demand.
While these considerations may or may not justify the willful violation of a copyright (read: justify? they do not), or the consequent deprivation of monetary benefit to the creator of digital content (read: innovate or die), downloads of pirated products are a very real indicator of market demand. Consumers are indicating a demand either for a lower price point or a better method of content delivery, both of which are often only available through digital piracy. Manufacturers and marketers, as well as enterprise e-commerce professionals working on new strategies and business models would be well-advised to heed these market signals… as savvy ones traditionally have.
Speaking of savvy, it is only fitting to end with a mention of Radiohead’s 2007 album In Rainbows. They offered the album via their website as a pay-what-you-like download, and the album subsequently made them more money online than all of their previous albums combined. Wired featured a great interview of Thom Yorke by David Byrne at the end of 2007 discussing the topic. Yet it should come as no surprise to anyone interested in the digital piracy space that even the In Rainbows download story is not as simple today as it may have appeared in 2007. The awkward battle continues.
Mike Bates is CEO at HotWax Media and will join other HotWax Media employees and advisers in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
Project Management at HotWax: An Overview of our Verified Agile Process
Project Management at HotWax: An Overview of our Verified Agile Process
The next set of posts that I’m going to dive into revolve around managing your project to completion and the way that HotWax Media structures projects to maximize your success. We call this process Verified Agile. As you can tell from it’s name it derives directly from Agile roots, but solves two issues that have routinely plagued companies trying to switch to this methodology: the proximity (everyone, including the client must be in the same physical location) and the lack of confidence in something that seems so dynamic!
We will discuss what problems we are trying to solve for our clients, how tightly integrated and vital clients are to the process and the tools that we use and how we use them to make this process run more smoothly.
The next set of posts that I’m going to dive into revolve around managing your project to completion and the way that HotWax Media structures projects to maximize your success. We call this process Verified Agile. As you can tell from it’s name it derives directly from Agile roots, but solves two issues that have routinely plagued companies trying to switch to this methodology: the proximity (everyone, including the client must be in the same physical location) and the lack of confidence in something that seems so dynamic!
We will discuss what problems we are trying to solve for our clients, how tightly integrated and vital clients are to the process and the tools that we use and how we use them to make this process run more smoothly. Looking forward to digging in and showing you how we do it.
-Tim
Tim Ruppert is Chief Operating Officer at HotWax Media, an OFBiz service provider, as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial: Quick Updates For CMS Pages In OFBiz
In my earlier posts we saw how can we setup different static pages for a site developed in OFBiz.
Now we will see how your client or a developer can directly make changes to the static pages. For this we use Content Manger application.
The following are easy steps which can be communicated to clients once the static content data setup is completed by the development team and the site is live. Later these changes can be easily managed by client.
Log into backend managment app :https://localhost:8443/content/control/main
Select Content from the menu
In the search options put in the appropriate search criteria and click on the Find button eg. STORE_POLICIES. Results will show the list of contents matching the search criteria
Click on the Page name under the Data Resource ID Column to edit. (in this case STORE_POLICIES)
Click the TEXT or HTML link in the top to view/edit the Text/Html text based on skills to update them one is text editor and other one is html text editor
Edit the text and press the Update button and the page will update the text on the site.
This was one of the process that can be used to update static page contents on the site without requiring any changes in code base. So now whenever it comes to updating text on static pages when the site is live, these changes can be done easily with Content Manger application.
If you want to get more details related to OOTB OFBiz processes contact HotWax Media today.
–
Pranay
Pranay Pandey is Manager, Enterprise Software Development at HotWax Media (OFBiz Service Provider) and has been involved with the OFBiz project since 2007. He contributes actively to OFBiz, and also trains HotWax Media developers in OFBiz techniques and best practices.
OFBiz Tutorial:Use Dependent Selects to Manage Country-State Select Boxes
Javascript components for managing Dependent Selects is starting to find use in ecommerce applications we are developing. It all started with need for updating contents of State field, on change of Country in postal address forms.
More then a year ago we started using Ajax for updating State select box options on change of Country select box value. It was a step forward but I wasn’t satisfied. Recently I had time to build a Dependent Select javascript component that takes the process of managing dependent selects boxes to the next level. Please read my blog post, OFBiz Tutorial – Dependent Selects for Prototype, to know more about it. If you are wondering about a scenario from real world, Here you go.
Below is the piece of code from the Freemarker template for the Checkout page in OFBiz ecommerce application. It renders Country and State select boxes with their options.
$('checkoutPanel').select('.dependentSelectMaster').reverse().each( function (elt) {
new Dependent( $$( '.'+elt.title ).first() , elt );
})
Where ‘checkoutPanel’ is Id of wrapper div that encloses checkout html form. Apply ‘dependentSelectMaster’ class to select boxes that have dependent slave elements, making them the master. Slave select box is related to its master using title and class attribute of elements, A select box is slave if it has a class applied to it that is equal to title of master select box.
The javascript code snippet traverses DOM tree looking for master select boxes. Using title attribute of master select it finds all the slaves and creates Dependent select relationship between them. Its all clean and simple.
Needless to say, you’ll need to include Prototype.js and DependentSelect.js in your webpage. I hope you will find this short OFBiz tutorial useful.
- Anil
Anil Patel is Chief Development Officer at HotWax Media as well as an OFBiz project committer, PMC member, and active community contributor. He also studies karate! Anil will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
Pricing Enterprise E-commerce Services
The enterprise e-commerce space is broadly varied, and the boundaries constantly shifting. Features and capabilities only available to huge players just 10 years ago are now more affordable and available to SMBs around the world.
Sometimes just using the term ‘enterprise e-commerce,’ however, can be difficult or misleading. Is enterprise e-commerce the right term to use for a company with 10,000 SKUs, doing a few million dollars a year in online sales? In the event that they manage their suppliers, inventory, warehouse, and fulfillment using an integrated system, for example, I would say yes — this counts as ‘enterprise e-commerce.’ Although clearly no Amazon or Zappos, these companies and their systems take it far beyond the simple eBay auction or basic storefront.
At HotWax Media, we provide enterprise e-commerce consulting services. Our core services are based around Apache OFBiz, but we regularly find ourselves integrating with 3rd party systems like NetSuite, Endicia, and many others. One day it could be SAP with multiple users, and the next day it could be QuickBooks piloted by the business owner herself. The very nature of an enterprise e-commerce system suggests that the consulting services can be quite different from one client to the next, and we have certainly found this to be true. We can find ourselves building systems that are similar in fundamental intent for companies whose revenues are separated by two orders of magnitude.
So the question comes up, what is the right way to go about pricing these services? Constructive Cost Model? (http://en.wikipedia.org/wiki/COCOMO) Probably not. Simple menu of services with some attention to psychology? (http://bit.ly/NLo3V) That’s better because it is more easily understood by the client, but it is not always easy to do on our end.
In fact, when doing unique service projects, you might say that with a fixed price, someone always loses. (http://bit.ly/9E0bbP) Either the vendor pads the cost to cover any surprises, and he wins, or the vendor fails to anticipate (and build in money to cover) the surprises, and he loses. The only thing for certain is that those surprises will come up, and someone will have to pay for them.
The next option is straight hourly work. This should be great for the vendor, but can lead to problems of its own in terms of project and cost management. When vendors are working on a straight hourly arrangement, they have less incentive to plan. While the idea of paying the vendor for his time is fair and honest, hourly projects (that lack planning) can end up costing more than the customer originally planned, and the projects can look expensive in hindsight. When the project is complete, lacking adequate planning, the tendency is to look back and say “All they wanted was X and it cost them Y!?” The problem is that the curvy, flexible path made possible by the hourly arrangement is overlooked in that simple analysis. By the way, this happens all the time with contractors, attorneys, and everyone else who offers services for an hourly rate; it’s not just software developers.
So this brings me to my method of choice for pricing projects: fixed team project planning and pricing. This approach can allow for the best of both worlds. In practice this ends up looking a lot like phased pricing, except that the cost does not vary month to month (except by mutual agreement). Rather, the dedicated team comes at a predictable expense and works off of a well formed project plan. (The creation of the plan is paid work as well, and can be more or less detailed depending on the size of the project and the client’s preference.) Then, the flexibility that real life requires comes in the form of more or less work being completed in each month (or phase).
So we can say, “We have a list of 10 items. We can be very confident that we will complete 5 of them, somewhat confident that we will complete 7 of them, and only slightly confident that we will complete all 10 of them.” At the end of each month, we reassess our plan and make adjustments based team velocity and client priority, leveraging the things we have learned while working on the implementation.
In conclusion: we do a lot of deals each year, and our approach to pricing varies a bit job to job. But whenever possible, we like this fixed team approach. It gives the client and provider both a fair deal, and encourages all parties to plan responsibly. We encourage you to try it out; if you would like us to help you with your enterprise e-commerce project using our fixed team approach, give us a call today!
Mike Bates is CEO at HotWax Media and will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial-Using CMS for Static Web Pages
In my last post regarding usage of CMS for Front End application we saw how to setup simple static content page using contentId in OFBiz screen definition. You just need to setup the content data and controller entry to make it work.
Now we will see how to setup CMS driven static page for a website. Following four steps are going to be the magic:
WebSite Publish Point Setup
Decorator Content Data Setup
Static Content Data Setup
CMS request in Controller
Assumption: A component is already setup; here the name of the component is “cmsdemo” . If you have not done that already please go through my last post OFBiz tutorial on CMS usage for front end application.
Setting up Website Publish Point
Its easy to setup Website publish point in data. Below is an example of how to do this in the content data file, in this case the name of the file is CmsDemoData.xml:
<context-param>
<param-name>webSiteId</param-name>
<param-value>CmsWebSite</param-value>
<description>A unique ID used to look up the WebSite entity</description>
</context-param>
Setting CMS Site Main Decorator
Content Data
Content data setup refers to the decorator screen for static pages:
The DecoratedContent.ftl that you included in your cms-main-decorator, shown above, needs to be created at a given location by the same name with only the code as shown below, which is setup by the cms event and rendered:
Setup the content data line like the code below, which will use section-sub-content pattern and will use the decorator content that we created in an earlier step. Here I have given an example of how you can setup a privacy policy page for your site.
You are done. Just load the data file which you created in CMS site data. Hit the url:http://localhost:8080/cmsdemo/control/cms/root/privacyPage which is based on ContentAssoc record we created earlier for privacy page:
In the resultant screen you will see following page as per your data setup done:
This way you can add in as many pages as you want in a site which are static in nature and let your client feel good when it comes to make any changes in content and they can just go in to Content Manager and can update the content easily without any code modification activity at any point of time.
–
Pranay
Pranay Pandey is Manager, Enterprise Software Development at HotWax Media (OFBiz Service Provider) and has been involved with the OFBiz project since 2007. He contributes actively to OFBiz, and also trains HotWax Media developers in OFBiz techniques and best practices.
Prototype Tutorial – Auto FAQs with Prototype JS
Here at HotWax Media, we build a lot of enterprise eCommerce websites. One common element in most eCommerce websites is a place to list Facts and Questions about the site, its products and its policies (FAQs). I don’t know about you, but I hate coding FAQ pages. The redundant process of having to write out the summary table at the top with the list of questions, and then re-write those same questions all over again below with the answers to the questions just drives me nuts. Not to mention that this redundant writing and re-writing of code almost always gets messed up a few months down the road when your very well meaning client attempts to add some new questions and answers to the list and unintentionally breaks the Table of Contents by not adding the proper ID/anchor relationship to each link.
Time to stop the insanity. Today I am going to show you how a quick Prototype JS script can automatically generate your FAQ summary links for you by parsing the DOM for the appropriate links. Let’s get started.
First off, we need our list of questions, in standard Definition List format:
<dl id="faqs">
<dt><a class="question">What is this?</a></dt>
<dd>This is standard definition list markup</dd>
<dt><a class="question">What is the purpose of this example?</a></dt>
<dd>To show you how easy it is to generate your FAQ link summary with a little bit of javascript</dd>
<dt><a class="question">Who should I contact for all of my enterprise eCommerce needs?</a></dt>
<dd>HotWax Media, of course.</dd>
</dl>
In the above list, each question lives inside an anchor tag with a class name of “question”. There is also an unordered list above the questions with an ID of “questions”. This is important for the next step. Now, as they say on MTV Cribs, “This is where the magic happens”.
document.observe('dom:loaded',function(){
$$('a.question').each(function(ele){var id = ele.innerHTML.unescapeHTML().gsub(/[^w- ]/,'').gsub(/[s-]+/,'-').toLowerCase();
ele.writeAttribute({id: id});var link =new Element('a',{href:'#'+id})
.update(ele.innerHTML)
.observe('click',function(event){
event.stop();
Effect.ScrollTo(ele);});
$('questions').insert(new Element('li').insert(link));});});
Let’s break down the code above. First, using the $$ shortcut method in Prototype, we loop through each “question”, read the innerHTML of the tag, strip out the whitespace between each word, and replace the spaces with dashes. This string for each link is given a variable name of “id”.
Then we assign this variable back to the link and write it in to the link as an ID attribute.
Next, we create a new link element for each “question”, giving each href the “id” variable, prepended by a # sign.
Finally, we go to our unordered list and create a list item for each new link, and then insert that link inside of it.
Now, when the page is rendered, our questions markup will look like this:
<ul id="questions">
<li><a href="#what-is-this">What is this?</a></li>
<li><a href="#what-is-the-purpose-of-this-example">What is the purpose of this example?</a></li>
<li><a href="#who-should-i-contact-for-all-of-my-ofbiz-needs">Who should I contact for all of my OFBiz needs?</a></li>
</ul>
<dl id="faqs">
<dt><a id="what-is-this" class="question">What is this?</a></dt>
<dd>This is standard definition list markup</dd>
<dt><a id="what-is-the-purpose-of-this-example" class="question">What is the purpose of this example?</a></dt>
<dd>To show you how easy it is to generate your FAQ link summary with a little bit of javascript</dd>
<dt><a id="who-should-i-contact-for-all-of-my-ofbiz-needs" class="question">Who should I contact for all of my OFBiz needs?</a></dt>
<dd>HotWax Media, of course.</dd>
</dl>
Now, we just add a little CSS to style our FAQs, and we are all done.
/***********************************************
FAQs
***********************************************/#questions{margin:0}#questions li {padding:005px;}#questions li a {color:#333}#questions li a:hover {color:#000}#faqs dt {margin:30px00;}#faqs dt a {color:#333;font-size:15px}#faqs dd {border-bottom:1pxsolid#ddd;margin:0;padding:030px30px0;position:relative;}#faqs dd span {position:absolute;bottom:0;right:0;color:#ccc;}#faqs dd span a {font-weight:normal;font-size:11px;}
That’s it folks. Combine this with the Scriptaculous Effect.ScrollTo function to eliminate the jerky page jump and you a have beautiful, seamless user experience that anyone can appreciate. Checkout out the finished product in action.
- Ryan
Ryan Foster is a designer and OFBiz developer for HotWax Media.
OFBiz Tutorial- How To Use ECA’s To Extend Service Permission
So far we have seen how to assign security permission to a user which will let the user access a particular application. The level of access to an application will depend on the permission(s) assigned to the user. You may want to allow the user to just view an application or maybe you want to allow them other possible permission options like creating new records, updating the existing records or deleting exiting records in a particular application.
You can also assign an admin permission to a user. This gives the user full access to an application so that the user can View, Create, Update and Delete records in a particular application.
Assigning a permission is not restricted to just one application, you can allow the user to access more then one application by assigning permissions related to other apps.
There are certain cases when a user has admin permission for an application but the user is not allowed to perform certain operation in the application. For example, if you want to view a product lookup screen in the “Asset Maint” application then you would need the permission of the Catalog application. The simplest option is to give the user all the required permissions. The downside of this approach is that this will also allow the user access to the Catalog application.
So in this case if you want the user to have access only to the “Asset Maint” app then you can do this by defining ECA (Event Condition Access) rules which will extend the permission of the other applications while still not allowing the user to access these application(s) other than “Asset Maint.”
The rule can be defined in a file under the sevicedef folder in the component directory tree as following.
This also requires the entry of this file in ofbiz-component.xml where secas.xml is the name of the above file.
Whenever the user tries to perform any catalog related operation in the “Asset Maint” application, the catalogPermissionCheck service will run first. We know that the user does not have any explicit permission to the Catalog application hence the service will return hasPermission flag as false. Every permission service implements a generic service interface and hasPermission is one of the boolean attibute that is returned by the permission service. If it is false it means that the user does not have sufficient permission.
Since we want to override the permission we define a permission service in the “Asset Maint” component. This service will check whether the user has permission to access the “Asset Maint” component or not instead of checking for Catalog permission. If the service returns a true for the hasPermission flag (which it will if the user has “Asset Maint” permissions) it means the user can access the catalog related screens in “Asset Maint.”
The code for the permission service will look like this: (Click to expand image.)
This way without explicitly assigning the catalog permissions the user will still be able to access the product lookup screen in the “Asset Maint” application.
Similar you can add more rules to the ECA file to override the OFBiz user permissions of other applications in the “Asset Maint” application.
- Vikas
Vikas Mayur is a dynamic OFBiz developer working for HotWax Media as a Director of Software Development in India. He works in web based application and ERP software using OFBiz, which is a top level project of Apache Software Foundation.
Leveraging Strategic Partnerships: CustomWare
Since I got rambling on Atlassian tools in my last post and decided not to include Customware, we’re going to focus this post on how Contegix put us in touch with another organization that continues to make a positive impact on HotWax Media.
In the early days of working with our Atlassian tools, we began to understand the power and potential of the applications at our fingertips, but didn’t have enough expertise or time to invest in getting the most out of it. Yeah, we wrote a couple of JIRA plugins (to add timesheet capability and enhance reporting of work efforts for billing, but we were tiptoeing around modeling all of our processes in the application because it was not clear how to make it happen – that’s when we decided to enlist help from the experts!
I immediately went to the Atlassian site to find out how they handle their support services and I have to admit that I was shocked to see that Atlassian does not offer any professional services support their products at all. Instead of falling into the common pitfall of trying to run both a product company and a services company, and often not doing it well, they opted to focus on their product and build a network of professional service providers that would handle their growing community of users. I went to their network and just picked the company that looked like the closest match to our organization.
To make a long story short and not to name names, we had a really strange experience with that provider and went back to Contegix to discuss who might be a better fit for HotWax Media. Contegix informed us that they havepartnered with Customware, on Australian based company, to provide their Atlassian professional services and put me in contact with Robert Castaneda, the Founder and CEO of Customware, to see if there was indeed a fit.
Robert and I decided to meet at ApacheCon US 2009, in Oakland, just as he was formalizing his new office in the Bay area. We got down to business quickly – I explained our current conundrum (problems with our home grown JIRA plugins after a big upgrade), the new Greenhopper plugin I was excited about using, our development processes, some and the challenge of modeling our workflow in the Atlassian tools. With Robert’s experience and understanding of both these tools and running a successful service organization – he was able to understand the problems we were facing and provided us with a solution from which to start our modeling effort. We started right in making modifications to our plugins and discussing folding in JIRA’s Agile views (see Greenhopper) into our world in the appropriate ways.
In the subsequent months, Customware has continued to refine our custom JIRA plugins while HotWax has concentrated on iterating on our process workflow to refine it into something that will exceed the expectations of our customers. One word to describe working with this group: effortless – they simply provide high quality advice based on years of experience and back it up by delivering. We couldn’t be more pleased with the support and look forward to every possible opportunity to work with Customware.
Contegix brought our two companies together, helping us to benefit from partnering with like minded organizations dedicated to improving the quality of service that customers expect. This ends my series on partnerships, but provides us a great bridge to my next set of discussions around our development workflow and utilizing our Atlassian tools to make transparency with your customer a way of life.
Since I got rambling on Atlassian tools in my last post and decided not to include Customware, we’re going to focus this post on how Contegix put us in touch with another organization that continues to make a positive impact on HotWax Media.
In the early days of working with our Atlassian tools, we began to understand the power and potential of the applications at our fingertips, but didn’t have enough expertise or time to invest in getting the most out of it. Yeah, we wrote a couple of JIRA plugins (to add timesheet capability and enhance reporting of work efforts for billing, but we were tiptoeing around modeling all of our processes in the application because it was not clear how to make it happen – that’s when we decided to enlist help from the experts!
I immediately went to the Atlassian site to find out how they handle their support services and I have to admit that I was shocked to see that Atlassian does not offer any professional services support their products at all. Instead of falling into the common pitfall of trying to run both a product company and a services company, and often not doing it well, they opted to focus on their product and build a network of professional service providers that would handle their growing community of users. I went to their network and just picked the company that looked like the closest match to our organization.
To make a long story short and not to name names, we had a really strange experience with that provider and went back to Contegix to discuss who might be a better fit for HotWax Media. Contegix informed us that they have partnered with Customware, on Australian based company, to provide their Atlassian professional services and put me in contact with Robert Castaneda, the Founder and CEO of Customware, to see if there was indeed a fit.
Robert and I decided to meet at ApacheCon US 2009, in Oakland, just as he was formalizing his new office in the Bay area. We got down to business quickly – I explained our current conundrum (problems with our home grown JIRA plugins after a big upgrade), the new Greenhopper plugin I was excited about using, our development processes, some and the challenge of modeling our workflow in the Atlassian tools. With Robert’s experience and understanding of both these tools and running a successful service organization – he was able to understand the problems we were facing and provided us with a solution from which to start our modeling effort. We started right in making modifications to our plugins and discussing folding in JIRA’s Agile views (see Greenhopper) into our world in the appropriate ways.
In the subsequent months, Customware has continued to refine our custom JIRA plugins while HotWax has concentrated on iterating on our process workflow to refine it into something that will exceed the expectations of our customers. One word to describe working with this group: effortless – they simply provide high quality advice based on years of experience and back it up by delivering. We couldn’t be more pleased with the support and look forward to every possible opportunity to work with Customware.
Contegix brought our two companies together, helping us to benefit from partnering with like minded organizations dedicated to improving the quality of service that customers expect. This ends my series on partnerships, but provides us a great bridge to my next set of discussions around our development workflow and utilizing our Atlassian tools to make transparency with your customer a way of life.
-Tim
Tim Ruppert is Chief Operating Officer at HotWax Media, an OFBiz service provider, as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
HotWax Media's Solutions to Project Management Challenges
Contegix – Partners: Atlassian
In business, like in life, forging partnerships is never an easy thing to do. As we’ve discussed in previous posts, our partnership with Contegix has made a profound impact on the companies with which we work and how we provide the greatest impact to our customers.
After working with rudimentary collaboration tools – read: not integrated – we went out and purchased a suite of tools that were supposed to solve many of our project management and company workflow challenges. After working with this software package (no need to name names) for a year and spending countless hours working with their professional services team and our business team, we were unable to make this software even close to the worth the investment. We learned from our mistakes and took this one to Contegix!
When we did our original research into the project management space, one of the contenders was the Atlassian suite of tools – but just didn’t measure up to the potential promised from the other tool. In the time between doing our initial evaluation, and the when the competition failed to live up to it’s promise, the Atlassian tools surged forward – and Contegix backed them as their solution to our problems we were facing.
From protecting access to applications and source code to managing documents and documentation – from showing SVN changesets to performing code review – from project management to development workflows – Atlassian has delivered an extensible set of applications that we can build a solid foundation on for our customers and internal teams alike. Preparing for our next set of posts, the tools we are using at this moment are:
1. Crowd – centralized single sign on – permissions and access – easily pluggable to a variety of applications
2. Confluence – document management and collaboration
3. FishEye – real time reporting of source code repository changes
4. Crucible – code and document review
5. JIRA – project management and tracking
In this post, I had planned on going into detail about our Atlassian support partner, Customware, but we’ll save that for next post.
In business, like in life, forging partnerships is never an easy thing to do. As we’ve discussed in previous posts, our partnership with Contegix has made a profound impact on the companies with which we work and how we provide the greatest impact to our customers. Most of you who follow this blog know by now that HotWax Media specializes in OFBiz development. However, these project management tools can be used no matter what platform you choose to develop in.
After working with rudimentary collaboration tools – read: not integrated – we went out and purchased a suite of tools that were supposed to solve many of our project management and company workflow challenges. After working with this software package (no need to name names) for a year and spending countless hours working with their professional services team and our business team, we were unable to make this software even close to the worth the investment. We learned from our mistakes and took this one to Contegix!
When we did our original research into the project management space, one of the contenders was the Atlassian suite of tools – but just didn’t measure up to the potential promised from the other tool. In the time between doing our initial evaluation, and the when the competition failed to live up to it’s promise, the Atlassian tools surged forward – and Contegix backed them as their solution to our problems we were facing.
From protecting access to applications and source code to managing documents and documentation – from showing SVN changesets to performing code review – from project management to development workflows – Atlassian has delivered an extensible set of applications that we can build a solid foundation on for our customers and internal teams alike. Preparing for our next set of posts, the tools we are using at this moment are:
Crowd – centralized single sign on – permissions and access – easily pluggable to a variety of applications
Confluence – document management and collaboration
FishEye – real time reporting of source code repository changes
Crucible – code and document review
JIRA – project management and tracking
In this post, I had planned on going into detail about our Atlassian support partner, Customware, but we’ll save that for next post.
-Tim
Tim Ruppert is Chief Operating Officer at HotWax Media, an OFBiz service provider, as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
eCommerce Software Market Musing
B2C Partners estimates the size of the total US market for online retail software last year to be $415 million. (http://bit.ly/NSzsg)) That seems too small to me.
B2C Partners uses the following method for arriving at their estimate:
$ 166 billion online revenue (2008)
A. x 3% of revenue for development & technology
B. x 50% of dev/tech for site improvement (v. support)
C. x 50% of eCommerce platforms third party (v. in-house)
D. x 33.3% of Year 1 costs on software (v. services to deploy)
(I have added the A. – D. line labels for ease of reference.)
Let’s start with A. — the percentage of revenue spent on software development and technology. According to B2C Partner’s very respectable sources (SORO Report 2007, Forrester Research and Shop.org) the range is actually 3% – 5%, and I suppose using 5% would have a large impact. In fact, it pushes that $415 million dollar market size up to over $690 million, which I like better.
Moving on to B., apart from the difficulty that sometimes comes with distinguishing between improvements and support, I do not see any big problems there.
When we get to C. and D., however, things start to get interesting. At HotWax Media we have an enterprise software services business that specializes in Apache OFBiz, which is a suite of open source enterprise e-commerce and ERP applications. As we have worked with a variety of businesses on many different types of projects over the years, we have found that some customers think of Apache OFBiz as a 3rd party platform, while others think of OFBiz as the root of their own in-house platform. Both concepts can work out great, and it generally depends on the client’s internal technology staffing as to whether the client’s behaviors are more inline with a traditional 3rd party platform project, or more what we would expect with a traditional in-house platform project. We regularly see projects that blur the line.
As OFBiz implementation experts, I suspect that this would have the effect of making the market relatively larger from our perspective (given that we could theoretically count revenue from the 50% who implement a 3rd party platform as well as the other 50% who use an “in-house” system). Great, we’ll take that extra $2 billion dollars in market opportunity!
Then there is the question of line D., which divides the software spend by 1/3 to differentiate between the cost of licensing versus services to deploy. Apache OFBiz is free and open source, so our service engagement customers do not need to think about it this way (nor do they need to sacrifice 1/3 of their year 1 budget on licensing fees). So for HotWax Media’s enterprise software implementation services business, we can really leave line D. out of the equation, since there are no licensing fees.
So when we add in the extra $2 billion to cover the 3rd party versus in-house distinction, and we refrain from pulling out the 33.3% to represent licensing fees, using the 5% of revenue number mentioned above, our enterprise e-commerce and ERP online retail software services market size is actually well north of $4 billion. (And that’s just in retail.) Quite a big difference from $415 million estimate with which we began.
I see a 3-part moral of the story:
1. a system has an advantage if it offers the client the options of in-house development or 3rd party reliance;
2. software that does not require a licensing fee can present a huge opportunity for increased returns on project investment; and
3. vendors that are well positioned to deliver implementation services on open source enterprise systems have a lot of budget to go out and win if they can make the case effectively to online retail business owners and corporate CIOs!
Author’s note: I realize that over the course of the post I have transitioned from “online retail software” market size to “online retail software services” market size, but I hope the transition was instructive in some ways, especially as it relates to the potential value in using open source software to reduce or eliminate licensing fees.
Mike Bates is CEO at HotWax Media and will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial: How to Setup User Permissions
In OFBiz, every application has a base permission (except a few like ecommerce, ofbizwebsite etc.) and users should have at least base OFBiz permission view or base permission admin to login in the application. Sometime base permission may consist of more then one permission and in that case both are required to login/access the application.
The base permission is defined in the ofbiz-component.xml file of each component. If the base permission consists of more then one permission then they are separated by a comma.
Below is a code snippet taken from Asset Maint component ofbiz-component file.
We will now learn how to setup permissions for a new user to gain access to a back-end application while using an Asset Maint component as an example throughout the tutorial.
Just a note that we will not focus on the internal details of this component and we will only visit a couple of screens to see whether we have setup correct permission levels for the user or not.
Step by Step Guide
Lets first create a new user in the system. Login to the party manager application with username: admin and password: ofbiz and click on Create New link located at the top of the main screen.
The screen will provide a variety of options to choose from. Click on Create New Person.
Enter the required fields and save the form.
This will take you to the user profile screen.
Our next step is to create a user login for the new user. Click on Create New link on User Name(s) screen in the right column on the profile page.
Enter the details as below and save the form.
User Login Id: joe.will
Current Password: ofbiz
Current Password Verify: ofbiz
Now coming back to the profile screen you will see that the new user login has appeared under the User Name(s) screen in the right column on the profile page.
Now click on the Security Group link. This will present you with a screen where you can add a security group to the user account. Security Group is basically a set of permissions where permissions are classified as VIEW, CREATE, UPDATE and DELETE. An admin security group contains all of these permissions. Select Asset Maint Admin group from the drop-down list. The From Date field is optional and if user does not enter it then the application will use the system’s current timestamp for this field. Thru Date is also optional but if specified then the security group will be valid for the user till the thru date has passed. You can also assign multiple security groups at the same time to the user. Save this form.
Now you have granted sufficient permission to the user to access the Asset Maint application.
Note: The admin user is available only if demo data is installed. If only seed data is installed then you have to create the admin user explicitly through the command line with an ant target defined in the build file which is present at the root of the project. Run command create-admin-user-login from the terminal and follow onscreen instructions to complete this wizard.
Testing User’s Permissions
Logout from the party manager application and then you can login to the Asset Maint application with the new user. The user should be able to login in to this application without any issues and this signifies that the user has permission to VIEW this application.
Lets try to check whether the user has permission to perform CREATE operation in the application. Go to the Fixed Assets tab and click on New Fixed Asset link. Fill in the basic details as shown in the screenshot and click on update button. The user should be able to create new fixed asset record. This signifies that user has permission to perform create operation in the application.
Similar you can check whether the user has UPDATE or DELETE permissions by updating or removing the fixed asset record.
Lets try to login into any other application (for example catalog) with the same user to check whether the system permits the user to access an application other than Asset Maint. As it would be obvious from the screenshot below that the security permissions assigned to the user is just enough to login and access Asset Maint application and not any other application.
Similar you can try to login into any other application with the same user and you will see the same result.
So far we have learned the basics of security permission in OFBiz and how we can assign these permissions to the user.
Hope you will enjoy this!
- Vikas
Vikas Mayur is a dynamic OFBiz developer working for HotWax Media as a Director of Software Development in India. He works in web based application and ERP software using OFBiz, which is a top level project of Apache Software Foundation.
OFBiz Tutorial – Dependent Selects for Prototype
In my first OFBiz Tutorial, I will show you how to make dependent select boxes using Prototype.
Building a web UI that lives up to the expectations of contemporary web designers is a challenge that every web developer faces. One that has remained a pain for a while is Dependent Select boxes. jQuery has a nice UI plugin that serves the purpose, but I cannot use it because I am married to Prototype javascript framework. I finally decided to implement one using Prototype. Dependent Select by Sliver, a UI plugin for jQuery is nice and simple, so I decided to base my component on the same concept.
Here it is, Dependent class allows you to link two select boxes in a parent child relationship. Any two select boxes can be linked. All you need to do is
Parent select box options should have unique value of title attribute.
On child select box, class attribute of options should be set to title of their parent.
In javascript Create new Dependent object by passing child and parent select boxes.
Here is sample code. (Copied from Dependent Select by Silver website)
My goal was to build a dependent select box that will work in complex enterprise application scenarios. A nonstandard case is when the value of a parent select box value is change by background code. It gets even more complex when select boxes are disabled. Good news is, our Dependent class is smart enough to deal with these use scenarios.
In the process of solving these problems I learned about an interesting feature in Prototype, it has a AOP like ability. We can modify behavior of existing code by wraping function inside of a custom wrapper function. A Prototype function wrap is applied to the setValue function on Element to handle the background select value changes and disabled select box value change.
I have enjoyed building and using this new component. Download the component from its home on the web. I hope you will be able to find some interesting applications for it as well.
- Anil
Anil Patel is Chief Development Officer at HotWax Media as well as an OFBiz project committer, PMC member, and active community contributor. He also studies karate! Anil will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial – How to setup the OFBiz Catalog Manager
The OFBiz catalog manager is a powerful tool that provides various features like catalog and product management, promotion and price rules management.
In this tutorial we will learn how to setup a catalog and categories in OFBiz.
Terms
Before going further lets understand the basic terms.
Categories are a grouping of products to be presented to the user on an eCommerce storefront. A category can have other sub categories or products. A category can have a name, long description and an image. OFBiz supports a number of category types with each category type has its own business rules.
In this tutorial we will use a “Catalog” category type which represents a category with standard products.
Catalog – A catalog is a collection of products that are grouped in categories.
Hierarchy
In this tutorial we will first setup a catalog with a browse root category and a promotion category at level 1. The browse root category will have two more sub-categories underneath it.
The hierarchy of the catalog and categories will look like
We will not go beyond categories at this stage. The products are shown just for a complete understanding of the catalog, categories and products hierarchy. From the example it is evident that catalogs stays at the top level of the hierarchy and products at the bottom of the hierarchy. A catalog can essentially have as many categories as you would like. Similarly there can be sub-categories to the main categories.
Later in the tutorial we will give an overview of a side deep category widget and we will see how it helps to drill down across the categories.
Step by step guide
To create a catalog, go to the catalog administration main page (which is basically a main page of the catalog manager application) and click on the “Create New Catalog” link on this page.
In the Catalog form enter “Catalog Id”, “Catalog Name” and set “Use Quick Add” to “N”. Normally if a catalog Id is not entered, OFBiz will generate a unique sequence automatically.
As mentioned in the beginning of the tutorial that OFBiz supports a number of different category types. “Quick Add” is a special type of a category and it is basically used to add all the products to the cart at once. Use “Quick Add” field to “N” if you do not want to use the special quick add categories.
Now click on the Update button.
Wow, you have created your first catalog!
The new catalog will appear under the Browse Catalogs screen widget in the left bar of the screen.
We will now setup the categories under the HWM Catalog.
To create a category go back to the main page and click on “Create New Category” link on this page. On the edit category screen enter the following fields
Category Id – If not entered then a unique sequence is auto generated by OFBiz.
Category Name – Name of the category and is displayed on your eCommerce application.
Category type – Select Catalog (as discussed above)
Click on Update button and this will create your first category.
Now lets add this category to the catalog as shown in the hierarchy section above. Select the type as “Browse Root” and enter the from date and click on “Add” button. This will add Browse Root category (Name of the category) to the HWM Catalog (Name of the catalog).
Browse Root is parent of all browse categories. You have one Browse Root and multiple browse sub-categories. The important thing about the Browse Root (Only) catalog category type is that this category is not shown to the customer on the eCommerce site. Only sub-categories are shown.
Similarly add two categories namely: HWM_HATS (Hats) and HWM_TOPS (Tops). Also set Primary Parent Category to Browse Root Category. This will signify that Browse Root category is the primary parent of both the categories but this will not setup the parent/child associations.
You need to explicitly set up the child categories (HWM_HATS and HWM_TOPS) to the parent category (HWM_BR_CAT) through Rollup tab as shown below.
Similarly you can set up the promotion category (not as a sub-category to the Browse Root, please refer the hierarchy diagram above). The only important point to remember is you have to select “Promotions (One)” catalog category type while adding this category to the catalog.
The side deep category is a very important widget present in the left navigation bar (Highlighted in red) and will show all the categories under the Browse Root category.
So far we have covered the basics of catalog manager. I hope you will enjoy this tutorial.
Just a brief note on the upcoming tutorial, we will go through following items
Product Store and how easily you can configure your product store
How to add catalog to the product store
How to create products
How to group the products in different categories
Vikas Mayur is a dynamic OFBiz developer working for HotWax Media as a Director of Software Development in India. He works in web based application and ERP software using OFBiz, which is a top level project of Apache Software Foundation.
Contegix – OFBiz Management
Last post, we spent time going through the history of getting started with Contegix (Managed Hosting ) and the many areas that they have helped us to scale and handle complicated infrastructure requests. Now, let’s spend a little time talking about how Contegix and HotWax manage OFBiz installations.
As I mentioned in my previous post, we found Contegix because of their reputation in the Java community for providing the highest quality Java application support and deployment around. This translated directly into their management and support of the OFBiz community and specifically the deployment and management of production applications built upon the Apache Open for Business platform. In short, they have killed it and made our ability to deliver the highest quality development and production support possible.
Here’s a quick breakdown of how we manage installation together and how it might benefit your business:
1. It all starts with infrastructure support
Contegix knows infrastructure, so just about anything that you’ll bring to the table, they have implemented in a system for someone. We have brought to them some truly strange setups and they haven’t blinked – in fact – to the contrary – they’ve improved upon the architecture that’s being brought to the table and owned it as if this was a development project that they were taking on. That’s one of the best things about them – many of the first people in the company were actually developers – which makes the way they look at your solutions that much more on point to what you are delivering.
2. Deployment matters
Through the years of contributing to OFBiz we have gone through many cycles from using a vendor branch per customer, to using only the trunk with patches to custom pieces of the code, to working directly off of releases, to using a single vendor branch for all customers, etc – I am sure this will continue to change as we develop software. Another big bullet to focus on is that Contegix manages ALL of our staging and production deployments – with very little input from us.
For those of you who have been doing this for a while, and more importantly those of you who have managed processes around deployments and everything that’s involved there – this must just sound too good to be true.
Well it is … except that it is true We simply provide them with URLs to the branch, trunk, version, etc of OFBiz – and our components – and they not only maintain the files necessary to run the framework (entity-engine configuration, ofbiz-containers, etc), but they do this across the variety of deployment styles and individual instances that were put in place along the way. They work directly with our engineers to understand when our custom patches might impact their patches as well as being proactive about getting together with our team about changes that they’d like to see in the way we’re providing them information.
All I can say is that it doesn’t get any better than letting the people who understand the servers take care of that – and allowing our people to focus on the customer specific aspects of our software.
3. Expert, knowledgeable 24 x 7 support
Not that this is a given these days in the age of automation, but if you look, you should have no problem finding a host out there who might be able to answer the phone or reboot your broken server, but what happens when something really goes wrong? What happens when your database crashes and the guy sleeping on the phone has to wait until 8 AM and the Linux technician comes in? Contegix employs experienced developers who know the tools they use (and the tools you use) better than just about anyone you possibly could employ. Add in the fact that they are monitoring your application all the time and can preempt your customers from noticing any glitches in the system, and you know that you’ve found your partner.
Next up is finding out about our partnerships that we forged thru our partnership with Contegix: Atlassian tools and Customware support.
Tim Ruppert is Chief Operating Officer at HotWax Media as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial – How to fulfill a sales order that has more than one ship group
In our last OFBiz tutorial by Jacopo we learned how to place a sales order comprising of multiple ship groups. Lets carry on with this OFBiz development tutorial and learn how to fulfill a sales order containing more than one ship group which is yet another interesting feature present OOTB.
The items in the ship group may differ from the previous tutorial and is not important though but in general the tutorial will present you with a step by step guide to fulfill a sales order.
Lets get started assuming that you have a very basic knowledge of warehouse.
The first step is to select a warehouse.
Select a warehouse from the drop-down and click on the submit button. Go to Picking tab to see the orders for picking.
The screen displays a list of orders that are in approved status. An order may require stock move prior to picking. There are a total of 4 grouping methods available OOTB to group the orders for picking namely: Group by Shipping Method, Group by Warehouse Area, Group by Number of Order Items and Zero grouping.
Lets just stick to zero grouping method i.e. when no grouping method is selected. From the screen below (part of the above screen) we find that order is not ready for picking yet and needs a stock move.
Stock move is moving inventory from a bulk location to a primary/pick location where a picker can actually pick the inventory items.
You cannot create a picklist until and unless order is ready for picking. Lets do the required stock move first.
Once we complete the stock move, the screen will show that no other stock move is required.
Lets go back to the picking screen and see whether the order is now ready for picking or not.
Now the order is ready for picking (see the second column) and we can create the picklist as well. After creating the picklist, we need to pick the order. This can be done through Manage Picklist screen.
Once the order is picked, change the status from the drop-down to Picked.
The order picking is now complete. Lets move further and learn how to pack the order. Click on Packing tab. On the packing screen, enter the order ID (left most) and the ship group ID (Right most) in the input box. The ship group though defaults to 00001 and you may only need to change it if you are packing the order for a different ship group other then 00001.
Click on Pack Order button. This will show the items that need to be packed for ship group 00001.
Click on Pack Item button. This will pack all the items in a single package and will show the number of package and items in these packages.
Click on Complete button. This will complete the packing of order for ship group 00001. A shipment and an invoice will be generated.
Now lets try to print the shipping label that can be affixed on this package. For this click on the shipment ID link and then go to Route Segments tab.
Click on Confirm Shipment with UPS button to confirm the shipment with UPS. Once the shipment is confirmed, a new button “Accept UPS Shipment Confirmation” will appear on the screen.
Click this button and the shipping label will be received from the UPS.
The shipping label can be viewed from View Label Image button and once printed can be affixed on each package.
You can now perform the same steps to pack items for ship group 00002. Once the order is packed for both ship groups the status of order will change to Completed.
This accomplishes the fulfillment of the order.
Vikas Mayur is a dynamic OFBiz developer working for HotWax Media as a Director of Software Development in India. He works in web based application and ERP software using OFBiz, which is a top level project of Apache Software Foundation.
OFBiz Tutorial – Order Entry and Ship Groups
A robust enterprise eCommerce system needs to handle manual order entries that are sometimes complex. In this OFBiz Tutorial we will go over how this works in OFBiz.
Example:
An order clerk has to place a sales order on behalf of a customer (order received by fax, by mail, by phone etc..); the order contains several items and the customer asks that the order is shipped with two (or more) shipments with different delivery dates and/or to different postal addresses and/or with different shipment methods or shipping instructions; the customer clearly specify the items to be assigned to each shipment.
How can you do this in OFBiz?
The order clerk can easily place an order like this by defining multiple ship groups: ship groups represent a way to group into different sets the items of an order and each ship group has its own shipping options, delivery dates, shipment address. Ship groups are created during order checkout.
For example, let’s suppose that the order clerk has to place an order for 10 units of the product with id WG-1111 and 5 units of the product with id GZ-1000.
The customer needs immediately 5 units of WG-1111 and prefers to pay for the quickest shipment method available, while all the 5 units of GZ-1000 and the remaining 5 units of WG-1111 (together with some promotional items) can wait and so they will be shipped using a cheaper and slower shipping method later.
Let’s do this step by step.
The first part is easy because it is exactly like placing a standard order:
go to the order entry screen and enter the customer id
add to the cart 10 units of WG-1111 and 5 units of GZ-1000 (don’t worry about the ship groups now, you will do this at checkout); if you are running the standard OFBiz demo you will also get some promotional items
now we are ready for the checkout and we click on the “Finalize Order” button;
the first checkout screen let us select the shipment address and this is where we add the second ship group that we need by clicking on the “New Ship Group” button:
the page will reload with two ship group sections; set the shipment address for each of them and click on the “Continue” button
in the next screen you will have the ability to move the items from one ship group to the other; initially all the items will be in the first ship group and the second one will be empty
using the drop down boxes and the quantity field near each item you can move the items to the second ship group
now click on the “Continue” button, the next screen will let you set the shipment method and options for each ship group; just make sure you select the proper method for each group;
The next steps are exactly the same as a standard order, so complete the checkout and confirm the order.
The exercise is now complete!
If you visit the order detail screen you will notice that there are now two boxes for the shipment information (one for each group):
You can now fulfill the order as usual and the only difference is that you will create two different shipments (one for each ship group): when the shipment is created from the ship group, OFBiz will create a shipment containing the items assigned to that ship group only.
- Jacopo
Jacopo Cappellato is VP of Technology at HotWax Media and has been involved with the OFBiz project since 2003. He is an OFBiz Project Committer and a member of both the OFBiz Project Management Committee and the Apache Software Foundation.
Enterprise E-Commerce and ERP: Common Questions Series Part 2
For HotWax Media an Apache OFBiz development firm, 2010 is delivering a great batch of new open source e-commerce and ERP projects. Whether from existing clients looking to invest in system enhancements or new clients ready to invest after a cautious 2009, HotWax Media is seeing a good deal of activity in the form of active projects and a healthy sales pipeline.
Along with a boost in free cash flow, this activity continues to generate great input from clients, which fits in nicely with my ongoing series discussing common questions related to open source e-commerce and ERP projects.
Enterprise eCommerce and ERP projects can have a lot of moving pieces. As businesses grow, old systems can limit potential. It can be painful for businesses to identify these limitations and understand the impact they are having on current profitability and future growth. At HotWax Media, it is our mission help our clients understand these problems, and then to make the problems go away.
Let’s dive into the next round of common questions and talk about answers. The answers here are meant to be relatively short and sweet. If you are looking for additional detail or are more interested in learning how HotWax Media can help you optimize your e-commerce and ERP for your business, contact us without delay!
The first questions pertains to both existing and new businesses who want to take a measured approach:
1. Can we do this in phases?
Yes. HotWax Media implements e-commerce and ERP systems using Apache OFBiz. OFBiz consists of a complete set of individual ERP applications, including a robust e-commerce system. The data model in OFBiz, furthermore, allows HotWax Media to account for just about anything that is going on in a given legacy system, and integrate where needed in order to facilitate a phased approach.
For example, if your business is running on NetSuite, but you want a better e-commerce solution, phase 1 of your project can consist of an affordable, powerful B2C e-commerce site upgrade that is completely integrated with your NetSuite back end. In subsequent phases, you can replace NetSuite completely — at your own pace, in discrete, manageable steps.
The second question usually comes from clients who have been burned in the past by irresponsible promises from proprietary software vendors:
2. Can we customize the system (without blowing our budget)?
Yes. As I mentioned above, HotWax Media implements ERP systems using Apache OFBiz. OFBiz is meant to be customized. As part of a standard OFBiz ERP implementation, HotWax Media works with clients to understand the nuances of their business requirements and workflows, and then implements a system that accommodates those specific needs.
It amazes me to hear from clients, as I have repeatedly, that they paid for an expensive proprietary ERP system only to learn later that it could not do what they needed it to do. And by the way, they do not own the system, and they are on the hook to pay recurring licensing fees in order to keep using it. Never mind the principle of it all — strategically, that sucks.
The nature of open source software in general, and of Apache OFBiz specifically, is to be transparent and customizable. My general statement to clients is, “If we can define a consistent set of requirements together, we can absolutely make OFBiz meet those requirements.”
The final question applies to everyone:
3. How many different companies will we need to work with in order to implement our system?
One. HotWax Media. We offer a complete set of e-commerce and ERP implementation services, ranging from business analysis through graphic design and UI to development and testing. We provide the project management and collaboration tools to accommodate all aspects of the project, and we will even handle hardware, infrastructure and hosting in partnership with our colleagues at Contegix.
Keeping your project under one roof improves quality and saves money. It’s that simple.
Feel free to let us know if you have other common questions you would like to see addressed in this series, or contact us today to learn more about how HotWax Media can help you build and grow your e-commerce business.
View my previous post where I covered other commonly asked questioned about Enterprise E-Commerce and ERP deployment or expansion.
- Mike
Mike Bates is CEO at HotWax Media and will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
The HotWax Media Way: An Apache "OFBiz Service Provider" Partnering with Contegix for Beyond Managed Hosting and Infrastructure Support
Today we’ll be digging in a bit more deeply on the topic of Contegix’s role in simplifying our business and making hosting and infrastructure first class. As I mentioned in my previous post, the relationship between HotWax and Contegix (www.contegix.com) was forged while we researched migrating our clients’ custom Java applications from a dedicated host (your own server – but you manage the system administration) to a managed hosting provider (this is what Contegix provides for us).
As Apache OFBiz developers, the opportunity to offload some of the administration and monitoring of these applications seemed like a great option for a small company trying to service more and more customers – while maintaining an emphasis on quality of service. After all, at our core we are OFBiz Service Providers as opposed to infrastructure providers. So finding the best infrastructure experts and partnering with them gives us the best of both worlds — we focus on OFBiz applications, Contegix focuses on infrastructure, and our shared clients win!
The topics that differentiate Contegix from other providers are exactly what made this such an easy decision for us: passionate customer service, expert engineers, instantaneous response time, 24×7 support, 100% Network uptime SLA, attention to detail, etc. After the successful migration of our customers, we carefully looked at each of our applications to see where we could increase our ROI by utilizing more of Contegix’s resources instead of growing these system administration capabilities in house.
Over the past few years, HotWax Media has grown considerably and we have leaned heavily on our relationship with Contegix to help define how all of these disparate applications will work together. We have modeled our application choices based upon how they run their business – knowing that leveraging our partners proven workflows can only provide a greater synergy between our two companies and make us an even more efficient team. These days they manage everything from mail, chat and calendars (with the Zimbra groupware platform) to our global phone system, from single sign on (for all of our applications) to our business to business VPNs, from project management and collaboration software, to staging servers and a large number of production OFBiz installations. They scale with us and we look forward to finding new and creative ways to work together to provide the highest quality service possible.
The next post in this series will focus on the specifics of OFBiz deployment management with a continued emphasis on our partnership with Contegix.
- Tim
Tim Ruppert is Chief Operating Officer at HotWax Media as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial – Using CMS for Front End Application Static Pages – Part-1
In this post we will demonstrate OFBiz Content Management System usage for front end application static pages through simple content data setup and using it in a screen. This gives clients the flexibility to change the text to be shown on a static page when ever they want, without asking for any code change.
Take the example of an OFBiz e-commerce storefront web site. Often times, clients will wish to include “static” pages like About Us, FAQ, and so on. We want to empower the client to update this copy him/herself, without needing to request help from a programmer. The following example gives us a simple look at how that is done.
All the details given here are supported by the out-of-the-box (OOTB) OFBiz CMS implementation.
In this exercise we will:
see the basic concept of DataResource and Content record.
setup content data to embed FTL markup.
setup a content driven screen and use it show the static content setup in data.
• Assumption: a component is already setup; here we using the name “cmsdemo” for component.
DataResource and Content records
Let’s suppose that we want to define content (that we will include in a screen) for the text “This is the text that will appear on screen.”.
Data Resource of type ELECTRONIC_TEXT
First of all we have to define a DataResource representing this text. This gives you greater flexibility because you can store long texts in the textData field. If you want to embed FTL markup (directives etc…) that needs to be processed before the rendering you can achieve this using the dataTemplateTypeId attribute, in this way all the Freemarker instructions in the text will be executed before rendering the screen. Following data needs to be setup in a data file:
<dataResource dataResourceId="DS_EXAMPLE" dataResourceTypeId="ELECTRONIC_TEXT" dataTemplateTypeId="FTL"/>
<electronicText dataResourceId="DS_EXAMPLE">
<textData><![CDATA[
<h1>CMS DEMO</h1>
<h2>This is the text that will appear on screen.</h2>
]]></textData>
</electronicText>
Content
Now we have to create a Content record that is associated to the DataResource. No matter what type of data resource you have choosen, the Content record is the same like:
When the request [https://localhost:8443/cmsdemo/control/main] is served you will see the following page that will show up the contents that you have setup in data:
This was a very basic example of OFBiz CMS capability. We will expand on the details and demonstrate more OFBiz CMS functionality in upcoming posts. If you need help with OFBiz CMS in the mean time, contact HotWax Media today!
- Pranay
Pranay Pandey is Manager, Enterprise Software Development at HotWax Media (OFBiz Service Provider) and has been involved with the OFBiz project since 2007. He contributes actively to OFBiz, and also trains HotWax Media developers in OFBiz techniques and best practices.
The HotWax Media Way: Infrastructure and Tools to Support OFBiz Open Source eCommerce and ERP Development
In my first set of posts, I had the opportunity to describe a bit about what has been going on at HotWax Media – with a focus on our involvement in the OFBiz development community and the impact it made during 2009. While I’m looking forward to getting back to discussing what HotWax will be championing in OFBiz in 2010, I’d like to take a break from OFBiz and tell you a bit about HotWax Media and what makes us and our process different from the other options out there.
To kick things off, I’d like to discuss something near and dear to my heart – the partnerships that we make and the people we choose to make them with. Over the past few years, we have made decisions that have provided us with the ability to focus on running our business and serving our customers instead of trying to become the masters of all things in all spaces. Focus, in other words.
For many years, along with the help of a choice system administrator or two, I spent a chunk of time, every day, maintaining and upgrading our IT infrastructure. As we merged companies and grew our staff of OFBiz developers, this became increasingly difficult for me to manage – all the while wishing I was spending more time with our customers. At that time, we had migrated all of our customers’ hosted solutions over to Contegix, and one of the companies we merged with was using them to run their organization already – so it seemed like a natural fit. The rest is history! Contegix has simplified our business by making hosting and infrastructure first class and very easy.
While I will spend more time focusing on the intricacies of our partnership with Contegix in subsequent posts, by becoming our source for infrastructure decision making, and by modeling processes that we respect and appreciate, Contegix has helped us to acquire partnerships that have made additional efficiency gains. They brought their other partners to the table in order to help us focus and realize the potential of our business. From working with the Atlassian collaboration to helping us maximize that software by bringing in the experts on integration and collaboration at CustomWare, we have been able to refine our processes to reflect the level of quality all customers deserve.
Stay tuned to the next set of posts to learn more about the our processes, our partners, and how they work together to provide solutions for our customers. Here are the high level points to take away:
1. Contegix – Beyond Managed Hosting and Infrastructure Support.
2. Atlassian - Amazing Efficiency Tools.
3. CustomWare - Integration and Collaboration Solutions.
4. Our Process – Agile Development Processes Honed to Work in a Distributed, Multi-Cultural, Development Environment.
- Tim
Tim Ruppert is Chief Operating Officer at HotWax Media as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial – Implementing a Product PDF export
In this post we will perform similar steps in order to create a PDF version of the “Product List” screen.
PDF exports are supported out of the box by the OFBiz widgets.
In this excercise we will:
add to the product list screen a link, close to the CSV export link we have created in our last post, that will generate the PDF export
add to the controller.xml file the request and view entries for the new PDF export screen
implement the new screen definition for the PDF export screen; the screen will reuse the same form used by html screen but with a different decorator (more suited for PDF output)
Adding a link element
We have already learned how to create a link in a screen. We add it after the “CSV Export” link:
The entries are very similar to the ones we have implemented in a previous post for the product list screen. There are just a couple of things to notice:
as usual, the request-map uri must match with the target of the link element in the screen (“ProductListPDF”)
in the view-map, the type is now “screenfop” (instead of “screen”) because we have to invoke the “fop screen renderer” to generate a PDF output
in the view-map we have also set the content-type to “application/pdf” as useful metadata information for the browser
Screen definition for PDF export screens
There isn’t anything special in a screen definition for a PDF export; the screen is defined in the same way of a normal screen, except for a couple of details:
the screen definition is mostly identical to the “product list screen” except for the decorator element: we are now using the FoReportDecorator that is one of the screen decorators available out of the box in OFBiz (it renders simple PDF reports with a page-of-pages footer, logo etc.)
in particular, the entity-condition element is the same and it is used to select the list of products for the export
the form that is included is the same of the “product list screen”: we will not have to re-implement it because the widget renderer will take care of rendering it into the proper output (PDF or CSV or html)
as we already did for the CSV screen, the “set” field operation, where we set “viewSize” to “10000″, is an easy way to “disable” pagination; we actually define the top limit of our product export to 10000 records here, but of course we can use a different value
there is an additional set operation here (for “pageLayoutName”), to set the PDF layout to landscape
Conclusion
The exercise is complete and we can test the product PDF by clicking the “PDF Export” link (there is no need to restart OFBiz).
Implementing the PDF report ended up being very similar to implementing the CSV export (or HTML screen): in OFBiz the same patterns, tools and languages can be reused to dramatically improve productivity.
- Jacopo
Jacopo Cappellato is VP of Technology at HotWax Media and has been involved with the OFBiz project since 2003. He is an OFBiz Project Committer and a member of both the OFBiz Project Management Committee and the Apache Software Foundation.
Enterprise E-Commerce and ERP: Common Questions Series Part 1
2010 is off to a great start at HotWax Media. We are working with a steady stream of clients who are interested in enterprise eCommerce and ERP. The main client pain points we encounter are 1. a growing business outpaces an old system, or 2. business processes are more sophisticated than a limited e-commerce systems will support. At HotWax Media, it is our mission to make these pain points go away for our clients.
As we continue with our mission and the new year delivers a resurgence of tangible, budget-backed interest in enterprise e-commerce/ERP and OFBiz, I thought it would be useful to start building a list of some common questions our prospective clients face as they make their e-commerce/ERP purchase decisions. I plan to add to this list from time to time with subsequent blog posts. For now, we will begin with the following three common questions we have heard from sales prospects over the last month.
The answers here are meant to be relatively short and sweet. If you are looking for additional detail or are more generally interested in learning how HotWax Media can help you create or enhance your e-commerce/ERP system, contact us without delay!
1. What are my options related to product organization and display?
The first example today is related to product taxonomy and product content options. In this case, the sales prospect needed the ability to create quite a few categories, sub-categories, sub-sub-categories, and so on. She also needed the ability to deliver personalized content at each of these hierarchical levels based on user type. A competitor she had been speaking with was unable to support these requirements, so we were glad to be able to talk her down out of the tree (pun intended). The bottom line is that with OFBiz, you can create a product organization tree that has as many branches as you need to get the job done. There is no system-imposed limit to the number of categories you can create and use to organize and display your products in an OFBiz e-commerce storefront built by the OFBiz experts here at HotWax Media. Furthermore, you can deliver personalized content at any step along the way assuming you know who your user is (i.e. he has logged in or been somehow otherwise identified by the system). While you can personalize any product content at any step along the way, this capability requirement is especially common in B2B environments.
2. Can my system automate sales tax, payment processing, and shipping?
The short answer related to sales tax, payment processing, and shipping: No problem. A HotWax Media/OFBiz solution will empower you to handle sales tax, payment processing, and shipping however it will best suit your business. Sales tax is typically handled by 3rd party tax tables which provide sales tax requirement details all the way down to that specific split zip code you were wondering about in San Jose – no problem. Payment processing will generally be handled by one of the many integrations available out-of-the-box with OFBiz (PayFlow Pro, Authorize.net, Chase Orbital, etc.). In the event that you have a special requirement to use a different payment processor, the expert OFBiz developers at HotWax Media can implement a new payment processor integration in no time. Finally, with HotWax Media and OFBiz you will find a rich variety of shipping options from which to choose. These include integrations with USPS, FedEx, UPS, DHL, and many other shipping companies. The integrations also let you rely solely on automated quotes from the shipping companies, manual overrides, or a combination. With relative ease, you can control every aspect of your shipping revenue/expense related to your enterprise e-commerce storefront.
3. Can we do inventory management in this system?
Yes indeed, as a full-featured open source ERP framework, OFBiz offers great inventory management features that support everything from ATP/QOH-driven product display to inventory moves and re-order points. If your business is growing, you may already have and wish to integrate with an existing inventory management system. OFBiz makes that as easy as possible using XML-RPC, SOAP, or most any other common protocol designed for that type of synchronization. If you do not already have an inventory management system or are looking to replace the one you have, then you are in a great position to leverage the fully featured inventory management in OFBiz as part of an architecture that will already be integrated with your e-commerce storefront. Bonus!
Feel free to let us know if you have other common questions you would like to see addressed in this series, or contact us today to learn more about how HotWax Media can help you build and grow your e-commerce business.
Mike Bates is CEO at HotWax Media and will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial – Implementing a Product CSV export
At the end of the last post in our OFBiz tutorial series we have completed the final version of a simple product list screen completely based on OFBiz widgets.
Our next goal, the subject of this post, is to provide a CSV (Comma Separated Value) export of the same list of products; we will do this by reusing as much as possible the artifacts already implemented for the html screen.
A CSV file is a widely used simple format for the exchange of data between different software systems; for example, Microsoft Excel can easily import a CSV file into a spreadsheet. From a technical point of view a CSV file is a plain text file where each line represents a row from a list of homogeneous data, and the fields are separated by the comma character.
CSV exports are supported out of the box by the OFBiz widgets.
In this excercise we will:
add to the product list screen a link that will generate the CSV export
add to the controller.xml file the request and view entries for the new CSV export screen
implement the new screen definition for the CSV export screen; the screen will reuse the same form used by html screen
Adding a link element
We will add a link from the product list screen to invoke the product CSV export screen. The definition of a link element in a screen is easy:
the “container” element is not mandatory but we have used it in order to create an invisible region of the screen for the links (we will add a new link in our next post, for PDF exports)
the link element is defined in the same way we have defined the link field in the product list form in our last post
The entries are very similar to the ones we have implemented in a previous post for the product list screen. There are just a couple of things to notice:
the request-map uri must match with the target of the link element in the screen (“ProductListExport”)
in the view-map, the type is now “screencsv” (instead of “screen”) because we have to invoke the “csv screen renderer”
in the view-map we have also set the content-type to “text/csv” as useful metadata information for the browser
Screen definition for CSV export screens
There isn’t anything special in a screen definition for a CSV export; the screen is defined in the same way of a normal screen, except for a couple of details:
the screen definition is mostly identical to the “product list screen”
in particular, the entity-condition element is the same and it is used to select the list of products for the export
the form that is included is the same of the “product list screen”: we will not have to re-implement it because the widget renderer will take care of rendering it into the proper output (CSV or html)
the “set” field operation, where we set “viewSize” to “10000″, is an easy way to “disable” pagination; we actually define the top limit of our product export to 10000 records here, but of course we can use a different value
Conclusion
The exercise is complete and we can test the product export by clicking the “CSV Export” link (there is no need to restart OFBiz).
Implementing the CSV export ended up being a trivial task because, thanks to the OFBiz widgets, we have reused most of the work we did for the html screen.
In the next tutorial post we will perform similar steps to implement the PDF version of the same screen.
- Jacopo
Jacopo Cappellato is VP of Technology at HotWax Media and has been involved with the OFBiz project since 2003. He is an OFBiz Project Committer and a member of both the OFBiz Project Management Committee and the Apache Software Foundation.
HotWax Media and OFBiz – 2009 Contributions – Part 4
For the final chapter in our series highlighting the contributions of HotWax Media to Apache’s Open For Business (OFBiz) in 2009, we will focus on the OFBiz integrations related components:
Shipping Integrations
Multi Channel Sales Integrations
Payment Processing Integrations
Shipping
During 2009, the available shipping integrations in OFBiz got a boost from some much needed power users — clients with real-world business needs driving development efforts is always the best scenario for an open source project! We focused on enhancing the integrations by implementing new aspects of UPS standard web services, UPS World Ship, USPS standard web services, FedEx and Endicia.
Added UPS integration support for sending Shipment Return Label email to customer. This option will be available on order detail screen and as well on the return screen when order is in the “Completed” status and the return is in the “Accepted” status.
Added functionality for getting online shipping charges from UPS if an order is in the “Approved” status with associated shipment in the “Picked” status and it has been hold due to an overage in the shipping charges from the Weight Package only screen.
UPS integration enhancement for supporting shipping quote based on dimensions.
Built a custom component for integrating OFBiz with existing UPS World Ship terminals.
Added support for USPS international rate estimates and label printing.
Built a custom component for integrating OFBiz with the Endicia services to provide additional features that were not supported in standard USPS web services.
Built a custom component for integrating OFBiz with the new FedEx web services to provide additional features that were not supported by the version of the FedEx SDK that was currently utilized.
Multi Channel Sales
Over the past 10 years, possible sales channels have increased from catalogs and brick and mortar stores to include standard ecommerce, public marketplaces, and shopping comparison sites. HotWax Media has played an active role in expanding the different multi-channel integrations that are offered to OFBiz users. Here is a list of integration improvements to eBay, Google Base and Amazon:
Added multiple store support to eBay and provided sample data to document how it works.
As part of adding multi-store support to the eBay integration, improved the Category Association management by adding a new ProdCatalogCategoryType “PCCT_EBAY_ROOT” and adding a worker method in the CatalogWorker class to fetch the top level eBay categoryId.
Implemented new services available in eBay – GetOrders and GetMyeBaySelling to allow single transaction (one per import) as well as multi transaction (multiple per import) support.
Added a new screen to optimize the import orders and transactions workflow.
Create support for eBay configuration from the new entity EbayConfig. Provided the GUI support to update configuration values.
Added a new entity, EbayShippingMethod, to support custom shipping methods from eBay. Also provided GUI support and included demo data for reference and documentation.
Fixed the Google Base product feed – it was broken when we started working on it.
Provide entity support for Google Base configuration.
Updated eBay and Google Base customer error messaging.
Added multiple store support to Google Base and provided sample data to document how it works.
Built a custom component for integrating Amazon web services for: a) Sending product information (feeds for product, price, relationship, image, inventory) to Amazon; b)Sending order adjustment and fulfillment information to Amazon; c) Retrieving order information from Amazon.
Payment Processing
OFBiz flexibly integrates with a growing number of different payment processors. 2009 saw a number of new Payment Gateway options become available, and HotWax was able to provide updated or new integrations to many of these services.
Implemented Chase Bank’s “Orbital Payment Gateway” – supported features are credit card authorization, capture, authorize and capture, release, and refund.
Provided entity support for the configuration settings of Orbital Gateway – since this was created after the community switched to maintaining this in entities – property file configuration is not supported at this time.
Analyzed the Google Checkout integration that was started in the OFBiz trunk – found it to be insufficient. Provided a new implementation utilizing the updated Google Checkout SDK.
Users can now create and order using Google Checkout – including the checking of existing customer information.
Added support in OFBiz for fulfillment of orders created from inside Google Checkout.
Added additional shipment, order state change, and other notifications into the Google Checkout integration.
Provided seed & demo data so that user can test Google Checkout with merchant and seller accounts.
Because this integration was stared when property files were used in OFBiz, we maintained backward compatibility to allow existing users to use property files for configuration settings in Google Checkout.
Provided entity support for the configuration settings of Google Checkout per the current OFBiz standard.
Added support to Google Checkout to support Google shipping methods in OFBiz.
Added GUI support for GoogleCheckout entities to easily handle configuration settings. The name of entities are: GoogleCoConfiguration & GoogleCoShippingMethod.
Provided documentation for the community to show how Google Checkout works.
Made a number of improvements to the standard PayPal IPN integration.
Implemented PayPal Express Checkout (both the Payflow Pro and standard PayPal account versions) allowing for order payments and refunds using a PayPal account.
Provided entity support for the configuration settings of PayPal Express Checkout.
Upgraded PayPal’s PayFlow Pro from version 2 to version 4 – helping the community to stay up to date while the existing implementation was deprecated and taken out of production in September of 2009.
What’s Next?
Spending our 2010 helping take the Apache Open For Business project to the next level of usability, flexibility, testability, and accountability.
Contact us today to learn how HotWax Media can help you achieve your business goals using Apache Open For Business.
- Tim
Tim Ruppert is Chief Operating Officer at HotWax Media as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
This post is part of a 4 part series. Please find the other posts in this series here:
How Does OFBiz Meet the More Basic Needs of a Small to Mid-Sized E-Commerce Operation?
In this day and age, almost everyone is familiar with e-commerce storefronts. But relatively few are privy to the back-end: What does it look like for a business to manage a product catalog, fulfill orders, and provide service and support to customers? Is there a single online app that does all of that?
Maybe the business simply receives a system email with the order details, and pick, pack, and ship are paper-driven. For the lowest-volume sales and simplest supply chain, this can work. In fact, it’s how many e-commerce businesses get their start. But when orders pour in, businesses find it hard to survive without automated customer, order, inventory, and fulfillment management capabilities.
Small to mid-sized businesses can turn to OFBiz for a basic, out-of-the box suite of of apps to manage e-commerce. But figuring out exactly which features to implement is a challenge, especially for OFBiz and open-source newcomers.
With 16 mature applications and 8700 database objects and counting, OFBiz may overwhelm stakeholders seeking support for their customer service and warehouse operations. The vast and generic flexibility of the OFBiz framework presents potential end-users with literally thousands of options from which to choose, and all out-of-the-box.
HotWax Media’s business is to help clients cut to core functionality with a concise OFBiz solution, and over the years, we’ve developed a good sense of what most e-commerce customers want. In this series, we’ll clear a path through OFBiz’s complexity to the most straightforward out-of-the-box implementation for small or mid-sized businesses. Each post will map back to the following Must Haves.
Eleven E-Commerce Management Must Haves
Control the type, relevance, and amount of product information on the storefront
Know when inventory is low and order goods from suppliers with ease
Receive products into the warehouse by way of the original purchase order
Track product inventory quantities and warehouse locations real-time
Queue up orders for picking and get them all set for packing
Pack orders and ship them out the door
Make returns easy on Customer Service
Edit an in-flight order or put it on hold
Keep track of customers’ purchases, returns, and account information
Offer gift cards, special offers, and discounts
Have an easy way to update website content
- Laurian
Laurian Escalanti is a Senior Business Analyst based in Salt Lake City, Utah. She works directly with clients’ subject matter experts, process owners, and end users to define and document business requirements, from e-commerce, purchasing, order management, manufacturing, fulfillment, and accounting, to UI design, third-party integrations, SEO, and site analytics.
OFBiz Tutorial – Enhancing the Product list screen
As you become an expert OFBiz developer, you will certainly need to know all about the OFBiz Form Widget! Here at HotWax Media we use the Form Widget regularly, whether as part of a front end e-commerce shopping cart or as part of a back-end ERP administration screen (for example OFBiz screens to handle order management, warehouse management, and inventory management as part of your integrated online retail OFBiz system).
In this post we will explore some of the features offered by the form widget, the layer in the OFBiz framework that enables the implementation of list based user interface elements. We will do this by continuing the exercise we started in our earlier “OFBiz Tutorial” posts. Specifically, this exercise is based on the “hwm” component we have setup in OFBiz Tutorial – Custom Components In OFBiz and on the custom “product list” screen we have built in OFBiz Tutorial – Building A Simple Product List Screen Here is the form widget definition for the list of products that we have created in the last post:
The auto-fields element was all we needed to retrieve the fields defined in the “Product” entity (entity-name) and render them as “display” fields (default-field-type). The goal of this post is to fine tune the list definition, in order to render only a subset of the fields and also to render them in a richer way; specifically:
we want to render the “product id” field as a link to the “product detail screen” in the OFBiz “Catalog” application
instead of displaying the id in the “product type id” field, we want to display the description associated to that id
we are only interested in the following fields from the “Product” entity: “product id” (as a link), “product type id” (as a description), “internal name”, “description”
we want to add two computed fields containing the “quantity on hand” and “available to promise” quantity of the items in inventory
Defining links
In order to transform the “product id” field into a link, we will simply add the field definition right after the “auto-fields” element; in this way, the explicit field type (link) will override the field type defined by the “default-field-type” attribute; here is the updated field definition:
When you refresh the screen you will immediately see the new form definition in action. Here are some details about the new field definition:
the attribute widget-style=”buttontext” sets the style for the field by using one of the many styles available in OFBiz (and defined in a shared CSS stylesheet; you can of course define and use your own styles)
the “description” attribute in the “hyperlink” element defines the text rendered as hyperlink; we have used the ${} notation to insert the “productId” variable
the “target” attribute in the “hyperlink” element defines the url for the hyperlink; this url is defined in the controller.xml file of the corresponding “catalog” web application (defined in the applications/product component); since the link, from the “hwm” application, points to a different application we use the target-type=”inter-app” attribute
the “description” attribute in the “hyperlink” element defines the text rendered as hyperlink; we have used the ${} notation to insert there the “productId” variable
the “parameter” element is needed because the EditProduct url requires that a productId parameter is passed to it
Performing lookups to different entities
Instead of displaying the id for the product type, as stored in the Product.productTypeId field, we prefer to display the description associated to that type; for example, instead of “FINISHED_GOOD” we want “Finished Good”. The description is not stored in the Product entity, it is instead in the ProductType entity: we have to use the Product.productTypeId field to perform a table lookup in the ProductType entity (Product.productTypeId = ProductType.productTypeId), and use the content of the ProductType.description field when the form is rendered. The form widget has built-in support for this, the “display-entity” element:
When you refresh the screen you will immediately see the new form definition in action. Here are some details about the new field definition:
the “entity-name” defines the entity to lookup
this is all we have to specify here, because, if not specified, OFBiz assumes that the name of the field (name=”productTypeId”) is the same in both entities and assumes that a “description” field is available in the referenced entity; if the id and description fields in the referenced entity have different names, you can specify them by adding the “description” and “key-field-name” attributes to the “display-entity” element
Displaying just the fields we need
We now realize that we don’t need most of the fields of the “Product” entity; for this reason it is easier to remove the “auto-fields” element and simply add the field definition for the two more fields we want to display (“internal name” and “description”). Here is the new form definition:
This is the most interesting part of this exercise. We want to add two additional fields to the list: one with the count of units physically in the warehouse for the product, and one with the units available in warehouse for sales (i.e. units not reserved by sales orders). This information is not stored in the Product or other entities, and computing the units is not an easy task, because, in order to enable multi warehouse support, material tracking and quality control, the OFBiz data model for inventory is rather complex. However there is a standard service (a reusable business logic) specifically designed to count inventory: the “getProductInventoryAvailable” service. In its simplest form the service takes as input a productId and returns as output a map containing two fields, “quantityOnHandTotal” and “availableToPromiseTotal”; this is exactly what we need. But we have to call this service for each record in the list, get the result from the service and use it to populate the two new columns. Again, the form widget assists us with built-in support for service calls, using the “row-actions” and “service” elements:
all the actions inside the “row-actions” section are executed before each row is rendered; this tag is similar to the “actions” tag that we have used in a previous post, with the only difference that “actions” is executed once before the list is rendered, while “row-actions” is executed before each and every row in the list; a form definition can also contain both action elements
the “service” action is a convenient way to invoke a service: the service name is specified with the “service-name” attribute, the “field-map” elements are used to pass the input parameters to the service, the “result-map” attribute defines the name of the output map
We can now add the two new computed fields in the following way:
the “entry-name” attribute is used to explicitly specify the source of the content: the service result map that we have named “inventoryAvailableMap”, and the “quantityOnHandTotal” and “availableToPromiseTotal” fields.
Conclusion
Here is the final result of our programming efforts:
Our form is now completed and in the next post we will reuse it to build a CSV (Comma Separated Value) export.
- Jacopo
Jacopo Cappellato is VP of Technology at HotWax Media and has been involved with the OFBiz project since 2003. He is an OFBiz Project Committer and a member of both the OFBiz Project Management Committee and the Apache Software Foundation.
HotWax Media and OFBiz – 2009 OFBiz Contributions – Part 3
For the third volume in our series highlighting the contributions of HotWax Media to Apache Open For Business (OFBiz) in 2009, we will focus on OFBiz ERP-related components. Specifically, we will review our OFBiz development contributions to:
Accounting
Manufacturing and Facility Management
Accounting
The Accounting Manager (along with the A/R and A/P applications) in OFBiz have come a long way recently. HotWax Media is proud of our recent contributions to OFBiz Accounting, which include the following:
Added the generation of a PDF for the AcctgTrans and related AcctgTransEntry.
Allow the user to void a payment.
Fixed Accounting invoice section the InvoiceSubBar Menu.
Added the ability to receive payments in A/R batches.
Fixed the Commission Invoice to show correct price and quantity.
Added a screen under Accounts Payable -> Invoice, which will search for a purchase invoice within a given date range.
Added JUnit test cases for the Accounts Receivable -> Batch Payments.
Added JUnit test cases for the Accounting -> Void Payment and Cancel Invoice services.
Added JUnit test case for the Accounts Payable services which create payment groups for given invoices.
Created a new screen under the Accounting -> Report tab to show comparative income statements. Added the functionality for generating CSV and PDF from this same form.
Added the ability to cancel a reconciliation.
Created a new accounting screen to associate GL Accounts to “Cost Centers”.
Added the ability to create sales tax entries on an invoice without an order.
Added a Deposit/Withdraw facility for user to deposit/withdraw payments in the Bank Account.
Added a deposit slip facility to the Bank Account/Fin Account so that user can make a logical group of Payments for bulk deposit/withdraw.
Added the ability for the user to create a new payment and directly associate to the current Bank Account.
Added the ability to add a facility to reconcile a Bank Account by creating a new GlReconciliation record and assign bank transaction to that reconciliation id.
Fixed numerous issues in the reconciliation of Gl Account.
Added a new field to the FinAccountTransaction entity – statusId, Created/Approved/Canceled.
Added a new field to GlReconciliation entity – statusId, Created/Reconciled.
In Accounts Payable -> Invoice -> Purchase Invoice – User can now issue a check payment for incoming invoices with a given bank account id.
In Account Payable -> Invoice -> Commission Run – Added a search for outgoing invoices which require a commission payment and ability to easily create commission invoices from there.
In Accounts Receivable -> Payment -> Batch Payment – Added a new feature by which user can create a group of payments that can be used for reconciliation.
Added/Updated most Accounting reports – Inventory Valuation, Income Statements, Comparative Income Statement, Transaction Total, Gl Account Trail Balance, Monthly Trial Balance, Cost Center, etc. Added ability to export each to CSV and PDF.
Added consolidated balance of its ROLLUP party for the aforementioned reports.
Prepared JUnit test cases to verify GL Account Balance updated after execution of various accounting business process.
Added support Hindi UiLables for Accounting and Party and Common component.
Improved Commission Invoice services and fixed issues in Commission Invoice screens
Manufacturing and Facility Management
HotWax Media also made some solid contributions to the OFBiz Manufacturing and Facility Management components in 2009. These OFBiz development contributions include:
Enhanced support for product costing algorithms: cost formula, manufacturing costs, standard and actual costs.
Implemented ability to define and import content for production runs.
Added a new fulfillment process by introducing Verify Pick and Weight Package Only screens.
Pick User can now select options for preparing a group on the basis of shipping method, warehouse area and number of order items – the group of orders is created according to selected options.
Added additional options on the picking screen to show detailed information for each order (shipping method, number of order items per order, etc).
What’s Next?
In the final chapter in our series (Part 4), I will discuss HotWax Media’s OFBiz development contributions in the area of integrations: shipping, multi channel sales and payment processors.
- Tim
Tim Ruppert is Chief Operating Officer at HotWax Media as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
This post is part of a 4 part series. Please find the other posts in this series here:
In Other News…. HotWax Media does more than just OFBiz
HotWax Media has extensive expertise and a unique focus on Apache OFBiz. You can see that throughout our web site, we are active in the OFBiz community, and we write about OFBiz regularly on this blog. But OFBiz is not all we do. I thought it was about time we gave some attention to the other things we do here at HotWax Media — let’s call them the non-OFBiz things. So, here we go. The only rule for today’s post: Whatever it is, it can’t include OFBiz.
We build amazing Flash microsites
Let’s begin with one of our most recent and most effective microsites: Black Diamond’s Fall 2010 Efficient Series Skis and Boots product launch microsite.
Working with the über-talented marketing/creative team at Black Diamond, we put together a highly effective microsite in support of Black Diamond’s Fall 2010 product line. Of course, the site features breathtaking imagery along with a whole bunch of the very latest in superb Black Diamond gear. There is also some thoughtful interaction design that becomes evident in the clean navigation, well-placed video, mouse-over product highlights, and 360-degree product spins from the good folks at 3DVO.
All things considered, this is the way you roll out a product line in style. The vehicle is useful, the information is rich, and the value is clear.
Over the past 3+ years, we have also built dozens of Flash microsites on behalf of Swarmbuilder / 3POINT5 — these include sites for Patagonia, GORE-TEX, Pearl Izumi, Leatherman, Thule, and literally dozens and dozens of other brands that you probably know and love. This intensive production work has given us great experience working directly with the marketing and creative teams at some world-class brands.
Some have strict style guides; in that case, we demonstrate our mastery of UI functionality and design by strictly adhering to those pre-established guidelines as we create new microsites. In other words, for these companies, we color inside the lines, and our technical design skills are fantastic. Other companies have less established branding guidelines; for those companies, we show creativity and leadership by creating strong, innovative designs that can inform future branding efforts. In either case, and in all those cases that are somewhere in between, the common theme is that we enjoy gaining the experience points that come from working with such a wide variety of very talented folks. Also, it makes us proud that we are working for some of the absolute coolest outdoor companies in the world.
We offer complete creative services
HotWax Media has been doing design for more than 12 years now. Along the way we have instituted a process to back up the creative skills that go into corporate ID, print collateral, and web UIs. We have done numerous logos, business cards, letterheads, envelopes, brochures, post cards, t-shirts, hats, and…the list goes on. We have great relationships with local and national printers and can handle jobs of any size. Here are just a few examples of our more recent pieces:
We build good-looking, affordable CMS web sites
Alas, not every company wants or needs enterprise e-commerce. Some companies simply want to use the web to present information about their company! It’s a quaint idea, but hey, we like it too. Simple content management systems, like Joomla! and a whole bunch of others, make it quick, easy, and inexpensive to create a professional web site with content management capability. Often times these sites are appropriate for companies that sell services as opposed to products. These companies want to be able to easily control and update the information about their offerings, but they do not want to sell their services directly over the web. For these companies, the most important ideas are high-quality visual presentation and ease of use. On both counts, HotWax Media delivers.
We’ll stop here for now. This post has highlighted some of HotWax Media’s strengths that live outside of OFBiz-proper, and I hope it has been interesting. With all of that said, OFBiz remains our main focus in a big, big way. The Flash, creative, traditional web development, and other skills we have cultivated as a company over the last dozen years contribute directly to our ability to deliver the best OFBiz e-commerce and ERP systems in the world today, and that won’t change. But hey — we have a 12-year history and a broad range of skills to show for it, and that is definitely worth acknowledging.
Mike Bates is CEO at HotWax Media and will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
HotWax Media and OFBiz – 2009 OFBiz Contributions – Part 2
For the second installment in our series highlighting the contributions of HotWax Media to Apache’s Open For Business (OFBiz) in 2009, we will focus on the OFBiz eCommerce related components:
eCommerce
Order Management
Catalog and Inventory Management
Marketing
eCommerce
Over the past year, the eCommerce component in OFBiz has received some much needed focus on improving and updating the interfaces provided by the out of the box (OOTB) functionality in the system. They were littered with rigid tables, and inline styling that did not allow for the flexibility and configurability that we have come to expect in other pieces of software.
Here is a long list of functionality that has been added by HotWax Media to the OFBiz eCommerce application
Implemented Layered Navigation of Categories in eCommerce
Layered navigation in an eCommerce application allows the user to filter the product listing based on categories, features and price ranges.
The user can apply multiple filters to the given product listing.
The user can narrow or expand the search and try different filter combinations, so as to find the desired product.
Made improvements in the product review implementation.
Added support for adding additional image features for a product so the user can see different view of images.
Added sample data that contains a Sales Order and Purchase Order in completed status along with their Accounting entries for Shipment, Invoice and Payment.
Added user friendly URLs on breadcrumbs of eCommerce/order manager.
Implement contact us functionality for unregistered users.
Improvement in createShoppingListItem service – If the same item is added more than one time, increase the quantity instead of adding the same item as a new line item.
Implemented eCommerce product comparisons, allowing customers to compare any number of products by price, descriptions and features. This is configurable and overridable to support different comparisons quite easily.
Added tracking of products that are purchased together for future reporting.
Added a widget to display the tracking of productions purchased together by eCommerce customers.
Made configurable aspects of email services to provide “guaranteed” delivery for sales messaging.
Major overhaul of eCommerce component CSS.
Added comprehensive reset styling to eCommerce to allow designers to work from a blank slate for a more consistent cross-brower user experience.
Removed many unused IDs and classNames, consolidated heading and button styles. Compressed eCommerce CSS by removing whitespace and converting styles to shorthand. Resulted in 30% reduction in file size, overall file size reduced by 48%.
Created separated, consistent styles for all form elements. Moved form styling into separate forms.css file.
Major updates to eCommerce page markup
Cleanup up all sidebar screenlet views. Slimmed down and simplified box styling by removing extra <div> tags and added consistent heading tags.
Completely overhauled One Page Checkout. Removed table based layout from checkout steps and converted to semantic form structure. Result is a much more flexible and easily styled checkout process.
Began work on removing table based layout from all forms throughout eCommerce component.
Removed deprecated HTML elements and inline styles from eCommerce component markup. Result is much more easily category and product detail views.
Introduced BizznessTime theme to administration components, which became the default theme for OFBiz administration. In the process of implementing the new theming functionality we:
Added better reset values to CSS to allow for more consistent cross-browser user experience
Created consistent form, heading, and button styling across all administration components
Removed tons of unused/unnecessary CSS from administration components styling, reducing styling file size by 60%.
Enhanced survey implementation for testing scenarios of eCommerce application.
Order Management
As you’ll see from this list of enhancements, there have been plenty of places to update the Order Management system in OFBiz to be more user friendly and to have additional features available to users:
While placing purchase order, the orderId can be supplied explicitly by the user. If it is not supplied then it will be created automatically.
Added a new field for “cancelBackOrderDate” to be more consistent with other services like OrderItem(purchase order). Field is shown in order detail page and on Purchase order PDF if exists. Added the scheduled service as well.
Added the ability to add more then one product at a time to purchase order in order detail page with single add form.
While recording PO, when the unit price of the item is edited the new value automatically gets set as last price on supplier record.
After placing a purchase order, the user can now update the estimatedShipDate and estimatedDeliveryDate by editing order items in order detail page.
While waiting for the inventory to arrive, user can lower the priority on inventory allocation so that other orders can be fulfilled while they are waiting for sufficient inventory to fill the larger sales order. Order priority of order can also be be set from order detail page explicitly.
Introduced a new order return type, “Wait Replacement Reserved”. With this, when a return is accepted, a replacement order is immediately created in the “Held” status. When the original item return is received the “Held” replacement order(s) automatically sets the status to “Approved” to clear them for fulfillment.
After a return for refund, exchange orders can now can be created against original order.
Added new return type “Replace Immediately”. This could be used in a return process for which items are not expected to be returned or with items(s) that cost less then the shipping charges on the original order.
Added new filters on find order page – by country, shipping method, order viewed, payment gateway response (gatewayAvsResult / gatewayScoreResult).
Added an optional input field where user can specify an orderId while creating a purchase order.
Enabled audit for a few additional fields on the ReturnItem entity namely returnTypeId, returnReasonId, returnQuantity, receivedQuantity and returnPrice.
Added the feature to show or hide out of stock products on the front end of an eCommerce site. This new implementation is configurable through a new field showOutOfStockProducts (by default = Y) on ProductStore.
Enabled audit for a few additional fields on the OrderItem entity namely price and quantities.
Enabled audit for a few additional fields on the OrderItemShipGroup entity to archive changes in shipment method. This can be viewed through the “Order History” link under the screelet on the order detail page.
Added an option to add a new shipping address from the order detail page.
Added the feature to generate a pick sheet PDF for an order from the order detail page.
Added a new return type “Refund Immediately” which triggers refunds when return is accepted.
Added the ability to mark an order as viewed.
Product Store can now be configured to set the default store credit account type – either financial account or billing account.
Fixed major issues in the receive Purchase Order functionality.
Catalog and Inventory Management
Since the beginning of development of OFBiz, and definitely since the move to the Apache Software Foundation, the Catalog and Inventory component have been an established fixture in eCommerce usage. Minor things have changed and additional pieces have been integrated, but the interfaces and the capabilities have long endured large changes in other parts of the system while remaining relatively unchanged.
Over the past year, we have added a few modifications:
Promotions hooked up to shipping total adjustments – Now Shipping Total adjustments can be applied using simple promotions. Users can specify percentage discount on a specific shipping method – and can use this for free shipping if this is needed as well.
Improved ProductType Hierarchy for Marketing Packages – Creating a hierarchy was possible before these modifications, but the business logic specific to parent type was never applied to the sub types, thus making hierarchy useless. Once this change was made, we have seen usage of this feature ramp up significantly.
Enhanced the find inventory screen with “sell through” information.
Marketing
Much like the catalog on inventory components in OFBiz, the marketing component has long been one of the more stable pieces in the eCommerce landscape – providing OFBiz users with simple ways to track and report on different initiatives. Over the course of the year, we have added new reports to make it easier to track different information related to marketing initiatives.
From tracking purchases related to the tracking codes, to tracking email traffic (emails sent, bounced and opened), to tracking subscriptions made and canceled during a given time period – the data being collected has changed little, but the ability to to be able to leverage it in a meaningful way has been greatly enhanced.
What’s Next?
In my third volume in this series (Part 3), I will discuss our contributions in the area of ERP: accounting, manufacturing and facility management.
- Tim
Tim Ruppert is Chief Operating Officer at HotWax Media as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
This post is part of a 4 part series. Please find the other posts in this series here:
Apache Open For Business (OFBiz) offers an amazing amount of functionality across a wide variety of business processes. The scope of OFBiz, as with most ERP systems, is very broad — including e-commerce, inventory and order management, accounting, manufacturing, and much more. As you consider all of the ground covered by OFBiz, it follows that any given OFBiz system is likely to encounter other systems with which it needs to gracefully interact.
3rd party integrations can sometimes become very complex. For my post today, however, let’s consider a few simple example together: we will look at three types of integrations commonly used by online e-tailers running OFBiz direct-to-consumer e-commerce storefronts.
There are many ways that HotWax Media helps our customers drive traffic to their e-commerce sites, including various SEO (search engine optimization) and PPC (pay per click) tactics, but we will leave detailed discussions of those tactics for a separate post. For our example today, our story begins with a visitor arriving at the OFBiz e-commerce storefront.
Upon arriving at the merchant’s OFBiz e-commerce site, the visitor browses products. There are some really effective merchandising features available with OFBiz, including cross-sell, up-sell, layered navigation, promotions, and so forth. As our visitor navigates the site and finds the products she wants, she adds them to her shopping cart. Eventually, she has her cart loaded up and is ready to checkout.
Using OFBiz, HotWax Media creates completely custom checkout experiences for our customers. One-page checkout, split shipments, anonymous checkout, coupon codes — it’s all available through OFBiz. There are, however, additional 3rd party checkout options that are also available. So these will be our first examples of 3rd party integrations available with OFBiz.
OFBiz Payment/Checkout Integrations
Google Checkout and PayPal Express checkout are both available to OFBiz merchants.
The idea with these 3rd party checkout services (as with most concepts in online retail) is to boost conversion rates. This works well for users who already have established checkout preferences. For example, if our site visitor prefers PayPal Express, she simply selects that checkout option, enters her PayPal username and password, chooses her shipping method, and she is done. The benefit is that she may have saved a minute or two, and presumably she is comfortable with PayPal and confident in the quality of her purchase transaction.
OFBiz Shipping Integrations
We mentioned shipping, and this is our next example of 3rd party integration options.
Unless our merchant is exclusively selling digital products that are downloaded by the end user, he needs to offer shipping options in order to fulfill his orders. Using OFBiz, HotWax Media offers many integration options with 3rd party shipping services. The idea is to make this as simple as possible for the shopper by allowing her to see custom, real-time shipping costs (based on her shipping address) from a variety of carriers and allow her to select her preferred method.
Shipping integrations available with HotWax Media and OFBiz include the biggest names in shipping, such as FedEx, UPS, USPS, and DHL. We also offer more specialized integrations with Endicia (includes USPS support) and Oagis Shipping. (As of December 2009, Endicia (with USPS support), UPS WorldShip, and a more complete FedEx integration are currently not offered out-of-the-box with OFBiz, but are available through HotWax Media.) These 3rd party shipping integrations allow our online merchant to control rate display in the user’s shopping cart (using real time shipping rate quotes that the merchant can then adjust as needed — see screenshot above). Once the order is picked and packed, the merchant can automatically print shipping labels, email a tracking number and shipment confirmation to the customer, and more.
OFBiz Payment Gateway Integrations
Finally it is time to submit the order and process payment. Our visitor has her products in her cart, has selected her shipping method, and has entered her payment information. She clicks “Submit Order,” and this is where the payment gateway comes in.
Using OFBiz, HotWax Media offers integrations with a variety of 3rd party payment gateways. The industry leaders are PayPal, Authorize.net, and Orbital, so we generally recommend one of these. These integrations offer credit card processing along with fraud monitoring, scoring, order separation for manual review, and many other useful features for our online merchant. The order is submitted, the card is processed, and there you have it — e-commerce!
That was just a simple example of a very common e-commerce use case that makes use of a few 3rd party integrations. Of course, there are many other 3rd party integrations available using OFBiz, such as multi-channel sales (eBay, Amazon, etc.), single sign-on (Crowd), and integrations with other systems like Magento. I plan to address many of these in future posts. In the mean time, for a more complete list of 3rd party integrations available from HotWax Media / OFBiz, take a look at our 3rd Party OFBiz Integrations page.
Mike Bates is CEO at HotWax Media and will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
OFBiz Tutorial – Building A Simple Product List Screen
In this post we will create our first simple html screen to print on screen all the products in our system.
This exercise is based on the “hwm” component we have setup in the last blog post OFBiz Tutorial – Custom Components In OFBiz: all the code we will implement will be contained in the custom component.
Here are the steps required to build the new screen:
create a form definition for the list of products
create a screen definition to include the form in a page
create controller entries to associate the screen to a URL/address for the browser
create a menu item to reach the new screen by clicking a link in a menu
All the steps we will do doesn’t require to compile/build OFBiz and can be done while OFBiz is running; in this way you will be able to test the effects of your experiments immediately.
Form widget definition for the list of products
A form widget definition is an xml representation of a list or single form.
In OFBiz, the main entity (aka database table) for storing product related information is named “Product”.
Here is the code to define a form of “list” type, together with the code to retrieve all the records from the Product entity and display them in a list based format:
the type of this form is “list” because we want to render its content from a list in tabular format; the other main type for forms is “single” and it is used for rendering single forms (e.g. forms for data entry like “New Product”)
the commands under the “actions” section are executed just before the form is rendered; here we are using the “entity-condition” command to retrieve all the records from the “Product” entity sorted by “productId”
instead of specifying field by field all the fields to be rendered we have used the “auto-fields-entity” command; in this way all the fields from the Product entity are included as “display” (aka read only) fields
Screen widget definition for the list of products
A screen widget definition is an xml representation of a screen (page) in the application.
Here is the code to define a new screen that contains the form defined in the above step:
the action section of this screen is empty (we could safely remove the “actions” tags) because we have decided to run the data preparation (selection of all the records from the “Product” entity) in the form; both ways are fine: if the data retrieval logic is really tied to the form, it is a good idea to put it into the form’s action tag (reusing the same form in different screen will be just a matter of including the form in the screen definitions); if the data retrieval logic is dependent on the screen but you want to reuse the same form definition in more screens (for example one screen for different groups of products), then it is a good idea to implement it into the screen’s action tag, and then reuse the same form in all the screens; we will do this switch later in this post.
with the “decorator-screen” element we specify the name (“HwmCommonDecorator”) and location of a screen decorator: the screen decorator is used to decorate our screen with all the application menus, the header and footer that are shared by all the screens;
the screen specific content will go in the “body” section of the decorator, that is why we use the “decorator-section” element and add the screen specific content there; in this example, we have just added the form definition for the form created in the previous step
the path to the form widget definition is expressed in the format “component://<ofbiz component name>/<relative path to the form definition xml file>”; this format is widely used in ofbiz and it is useful because makes the system independent from the actual location of the ofbiz home folder and also enables the extension mechanism of OFBiz (we will talk about this in another post)
Controller entries – the url of our screen
Controller entries are needed to define the URL to reach the screen; for each screen you have to create two entries, a request-map and a view-map:
in the controller.xml file all the request-map entries must be listed before the view-map entries
the request-map defines the URL of the screen for the browser; the “uri” attribute (“ProductList”) is the last part of the URL; the “security” element tells OFBiz to publish the page using the https protocol (https=”true”) and to grant access only to authenticated users (auth=”true”) (and redirect to the user login screen if a user is not already logged in); the end result is that the complete URL for the page will be: http://localhost:8080/hwm/control/ProductList
the view-map entry associates the “response” value defined in the request-map to the screen definition we have created in the previous step
there are many good reasons for decoupling the request-map to the view-map and this will be clearer when we will talk about events associated to user activities (e.g. form submissions)
Testing our work
If you have followed all the steps above you are now ready to test your work; no need to compile or restart OFBiz, just enter the following URL in your browser: https://localhost:8080/hwm/control/ProductList
You should see a screen like this: (Click on image to zoom)
Things to consider:
all the fields of the Product entity have been automatically used as columns for the form list; the field names have been used to generate the column’s titles; all this happened because of the element “auto-fields-entity” we have used in the form definition
the framework has automatically decorated the form with pagination elements
all the records from the Product entity are shown, sorted by productId
A few simple experiments
Again, you can do all these changes without restarting OFBiz: just do them and reload the page after each and every change, this is a great way to explore the different options available.
The products are now sorted by productId in ascending order; if we want to sort them in descending order we just have to add the “-” symbol as a prefix of the field name in the “order-by” element of the “entity-condition”:
We can now add a label to the screen to explain that these are all the “finished products” in the system; in order to do this you will add a “label” element to the screen definition (see line 8):
the content of the “target” element must match the request-map name in the controller
Internationalization
In the last two paragraphs we have added two textual labels in English, one as a “label” element in the screen and the other as the “title” of the menu item. A better way of doing this, especially if you are interested in building internationalized applications that can be translated in many different languages, is to use the OFBiz i18n layer. In order to do this you have to add the following key in the component’s UiLabel file:
Moving the data preparation code from the form’s to the screen’s actions tag
We have mentioned before that the data preparation code can stay in the form’s actions section or in the screen’s actions section; in the first paragraph of this post we have implemented the code in the form; we now move it to the screen’s actions section:
The entity-condition code is exactly the same with the only difference that now we have specified the “list” attribute: this is important because it represents the name of the variable that will contain the list of products selected; this name must match the same list-name attribute in the form definition that is now:
The “actions” section in the form is now empty and can be safely removed.
Homework
Now that we have the data preparation code in the screen, we can more easily implement an additional screen, that reuses the same form definition to list all the products of type “raw material” (productTypeId=”RAW_MATERIAL”): the implementation of the new screen, new controller entries, menu item, ui labels is a useful exercise.
Next steps
In the next posts we will explore some of the features of form widgets (and we will enhance our product list form) and we will see how we can implement a PDF and CSV versions of the screen.
- Jacopo
Jacopo Cappellato is VP of Technology at HotWax Media and has been involved with the OFBiz project since 2003. He is an OFBiz Project Committer and a member of both the OFBiz Project Management Committee and the Apache Software Foundation.
HotWax Media and OFBiz – 2009 OFBiz Contributions – Part 1
For the first part of our series highlighting the contributions of HotWax Media to Apache’s Open For Business (OFBiz), we will focus on the following topics:
1. Rebranding the Project
2. Framework Enhancements
3. Platform Stability
– Reviewing Code
– Unit Testing
– Bug Fixing
Rebranding the Project
Following ApacheCon 2008, much of the focus was on steering the project towards greater usability and marketability to compete with the commercial eCommerce and ERP packages. The thoughts were that we may be an open source project, but there are ample amounts of creative people around the project in order to bring another level of professionalism to the product being developed.
Working with project partner Brainfood for art direction and branding collaboration, HotWax Media began the process of updating the presence and branding around all of OFBiz – starting with the design and branding of the OFBiz home page. Once the home page and brand identity were complete, HotWax Media proceeded to integrate this look and feel into other pieces of existing collateral (like the project Wiki) as well as developing new features to house the nightly releases and log files from the days OFBiz demo activity.
Framework Enhancements
While this does not represent all of the framework enhancements that we participated in over the past 11 months, this does give you some insight into the different areas where HotWax Media has made an impact:
1. Fixed UEL to support variable name modifiers for an object accessed via a key in a Map.
2. Added a utility method to common component, which can be used with any Type entity, to check if a type_1 is a sub type of type_2.
3. Secure URL’s fixes and encouraged the use of _index feature of freemarker templates.
4. Cleanup for component location (change from location=”org/ofbiz/……… to location=”component://party/script/org/ofbiz……)
5. Refactored widget rendering code to be template driven (easily extendable and customizable)
6. Created a new CSV output renderer for widgets.
7. Implemented database rollbacks for the testing framework allowing for repeated test runs without clearing and reseeding the database
8. Added XPath support to JUEL and MiniLang
9. Added support for child menu items to the Menu Widget
10. Added support for confirmation pop-ups in the Menu Widget
11. Improved performance of the EntityListIterator (which is used extensively throughout the system)
12. Added JSONServiceMultiEventHandler to enable AJAX form submission for multi-forms in OFBiz
13. Provide Hindi translations for multiple components
14. … etc …
Platform Stability – Reviewing Code, Unit Testing & Bug Fixing
So far in 2009, HotWax Media has contributed literally tens of thousands of hours to the Apache Open For Business project. Out of work, over 50% of the time has been spent in reviewing other contributions, cleaning up the unit testing framework, adding additional tests for better code coverage, writing business level review documents to document processes and providing bug fixes for functionality that is not working properly at the time.
This contribution alone has made massive improvements to the stability of the code and we look forward to duplicating, if not increasing, our contribution in this area in 2010.
What’s Next?
In my next installment of this series, I will discuss our contributions in the area of eCommerce: the frontend, backend, inventory and catalog management, and the marketing of your goods.
For the first part of our series highlighting the contributions of HotWax Media to Apache’s Open For Business (OFBiz) in 2009, we will focus on the following topics:
Rebranding the Project
Framework Enhancements
Platform Stability - Reviewing Code, Unit Testing and Bug Fixing
Rebranding the Project
Following ApacheCon 2008, much of the focus was on steering the project towards greater usability and marketability to compete with the commercial eCommerce and ERP packages. The thoughts were that we may be an open source project, but there are ample amounts of creative people around the project in order to bring another level of professionalism to the product being developed.
Working with project partner Brainfood for art direction and branding collaboration, HotWax Media began the process of updating the presence and branding around all of OFBiz – starting with the design and branding of the OFBiz home page. Once the home page and brand identity were complete, HotWax Media proceeded to integrate this look and feel into other pieces of existing collateral (like the project Wiki) as well as developing new features to house the nightly releases and log files from the days OFBiz demo activity.
Framework Enhancements
While this does not represent all of the framework enhancements that we participated in over the past 11 months, this does give you some insight into the different areas where HotWax Media has made an impact:
Fixed UEL to support variable name modifiers for an object accessed via a key in a Map.
Added a utility method to common component (which can be used with any Type entity, to check if a type_1 is a sub type of type_2).
Secure URL’s fixes and encouraged the use of _index feature of freemarker templates.
Cleanup for component location (change from location=”org/ofbiz/……… to location=”component://party/script/org/ofbiz……).
Refactored widget rendering code to be template driven (easily extendable and customizable).
Created a new CSV output renderer for widgets.
Implemented database rollbacks for the testing framework allowing for repeated test runs without clearing and reseeding the database.
Added XPath support to JUEL and MiniLang.
Added support for child menu items to the Menu Widget.
Added support for confirmation pop-ups in the Menu Widget.
Improved performance of the EntityListIterator (which is used extensively throughout the system).
Added JSONServiceMultiEventHandler to enable AJAX form submission for multi-forms.
Provide Hindi translations for multiple components.
… etc …
Platform Stability – Reviewing Code, Unit Testing & Bug Fixing
So far in 2009, HotWax Media has contributed literally tens of thousands of hours to the Apache Open For Business project. Out of this work, over 50% of the time has been spent in reviewing other contributions, cleaning up the unit testing framework, adding additional tests for better code coverage, writing business level review documents to document processes and providing bug fixes for functionality that is not working properly at the time.
This contribution alone has made massive improvements to the stability of the code and we look forward to duplicating, if not increasing, our contribution in this area in 2010.
What’s Next?
In my next installment of this series (Part 2), I will discuss our contributions in the area of eCommerce: the frontend, backend, inventory and catalog management, and the marketing of your goods.
- Tim
Tim Ruppert is Chief Operating Officer at HotWax Media as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
This post is part of a 4 part series. Please find the other posts in this series here:
This is the first of a series of posts that will introduce hands-on OFBiz development: each post will focus on a simple exercise that will unveil some of the powerful features of OFBiz.
In this post we will simply setup our sandbox environment: a custom component/application named “hwm” that is deployed in OFBiz and will contain our exercises.
OFBiz components
At its bare minimum, an OFBiz component is a folder, containing a special xml file, named “ofbiz-component.xml”, that describes the resources loaded and required by the component.
OFBiz itself is made up of components:
framework components: lower level components that provide the technical layer and tools to the application components; the features provided by these components are typically the ones provided by any other development framework (data layer, business logic layer, transaction handling, data source pools, etc…)
application components: they are generic ERP applications that can be used as they are or extended/customized (product, order, party, manufacturing, accounting etc…); application components have access to the services and tools provided by the framework components and to the services published by other application components
special purpose components: similar to the application components, the are special purpose applications like ecommerce, Google Base integration, eBay integration etc…
hot-deploy components: this folder is empty and it is where you can place your custom components; custom components have access to, and can extend/override, the resources published by all the other components
Prerequisites
JDK 1.6 is properly installed and the JAVA_HOME environment variable is correctly set; you can download Java from java.sun.com
an svn client is installed in your system (needed to checkout the latest OFBiz sources); you can freely download an svn client from tigris.org
Setting up the sandbox
These are the simple steps to download and build OFBiz and your custom component:
Download the OFBiz source files from the official OFBiz SVN Respository (this step can take some time and requires access to the Internet): “svn co http://svn.apache.org/repos/asf/ofbiz/trunk ofbiz”
go to the newly created folder: “cd ofbiz”
run the ant task to create a standard OFBiz component: “./ant create-component” (and answer the questions when prompted, see below for details)
build OFBiz and load the demo data: “./ant run-install”
run OFBiz: “./ant run”
In short, here are the commands you have to type in a shell:
svn co http://svn.apache.org/repos/asf/ofbiz/trunk ofbiz
cd ofbiz
./ant create-component
Component name: hwm
Component resource name: Hwm
Webapp name: hwm
Base permission: HWM
Confirm: Y
./ant run-install
./ant run
Now OFBiz and your custom applications are up and running; just point your browser to: http://localhost:8080/hwm
Login into the custom “hwm” application with username “admin” and password “ofbiz”.
More about the “create-component” script
Even if you can of course manually create an hot-deploy component, running the ant task “create-component” is the preferred way of starting with a new hot-deploy component because it is quick and generates a component layout that follows all the OFBiz best practices, enabling you to use and extend the existing OFBiz goodies:
entities (the data model)
services (business logic)
widgets (user interface elements like screens, forms, menus)
security (authentication and authorization)
localization
tools
etc…
The main advantage of using this development strategy is that all your custom code will be separated from the official OFBiz code, drastically simplifying the task of keeping your custom application updated with the new OFBiz versions. You will still be able to extend/override/customize specific OFBiz entities, services, screens and of course add new ones, just writing code into your custom component.
For the most curious of you, here are some details about the meaning of the questions asked by the “create-component” script:
component name: this is the name of the component (and also of the folder that will contain it, created in the hot-deploy folder); following OFBiz’s naming conventions, it should be a single word all lowercased (e.g. hwm)
component resource name: it will be used as a prefix for resources; you can just use the component name, possibly using an upper case character for the first character in the words (e.g. Hwm)
webapp name: this is the name and uri of the application in which the ui for the new component will be implemented; following OFBiz’s naming conventions, it should be a single word all lowercased (e.g. hwm)
base permission: this is the prefix for base security permissions; following OFBiz’s naming conventions, it should be a single word all uppercased (e.g. HWM)
Based on the answers provided, the script will setup a new component in the “hot-deploy” folder, with the following layout:
The layout of the custom component "hwm"
You may already recognize how the information collected from the user by the script has been used to generate the component.
Exploring the component layout
Now we have everything we need to start to practice with the development based on the OFBiz framework. In the upcoming posts we will use this component to perform some exercises that will help us to better understand how OFBiz works and how to use it to build powerful erp applications.
- Jacopo
Jacopo Cappellato is VP of Technology at HotWax Media and has been involved with the OFBiz project since 2003. He is an OFBiz Project Committer and a member of both the OFBiz Project Management Committee and the Apache Software Foundation.
HotWax Media and OFBiz – Introduction
Over the course of the past year, the Apache Open for Business Project (OFBiz) has made amazing progress in a number of areas: from re-branding itself to compete with commercial ERP products to adding new integrations to increase the flexibility of the system, from providing new and improved theme support to the front and back-end applications to stabilizing the framework upon which all of these applications have been built, from welcoming much needed business users to expanding the number of committers in the project – it’s been a busy year. Needless to say, throughout all of it, HotWax Media has been right there contributing to the advancement of the project.
This is the intro to a four-part series, where I will highlight the contributions and donations that have been made by HotWax Media to OFBiz, during 2009. The series breakdown looks like this:
1. The OFBiz Project – the framework, utilities, infrastructure, general applications and marketing of the project.
2. OFBiz Ecommerce – frontend, backend, order management, inventory and marketing of your goods.
3. OFBiz ERP – accounting, manufacturing, warehouses and facility management
4. OFBiz Integrations – payment processing, shipping, multi-channel sales and more.
Stay tuned!
- Tim
Tim Ruppert is Chief Operating Officer at HotWax Media as well as an OFBiz project committer and active community member. Tim will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.
This post is part of a 4 part series. Please find the other posts in this series here:
From time to time HotWax Media’s open source ERP (Apache OFBiz) business analysts and developers will use this blog to sound off on technical issues related to e-commerce, ERP, order management, accounting, user interfaces, and related topics. The following post is just such an example.
Warning: this is not for the technically faint of heart. If your eyes begin to glaze over, quickly hit the back button, take solace in the fact that HotWax Media makes it our business to handle all of your technical needs related to open source ERP, and contact us today.
The great debate of jQuery vs. Prototype has been raging for quite some some time now, withmany different voices offering their opinions on the matter. It does seem that JQuery has the current lead over the venerable Prototype. If you compare the amount of plugins offered up by JQuery to those that extend Prototype, it is clear JQuery appears to have much more community design and development support.
I would to offer some (somewhat biased) mediation on the debate and say “What’s the big deal? In the end, it’s still just javascript”. In other words, to completely butcher Shakespeare, “A rose by any other name, will still make a button submit an Ajax form”.
We javascript developers, and indeed web developers in general, tend to be a fickle bunch. We are always attracted to the latest new and shiny technology, hence all of the excitement and support for JQuery. However, you can pretty much do anything in Prototype that you can do with JQuery.
So, in an effort to show Prototype some love, I would like to show you, in the first of a multi-part series, how to take a cool JQuery trick and replicate (and sometimes improve) it with Prototype.
Soh Tanaka’s recent blog about about creating Smart Columns w/ CSS & JQuery has been getting a lot of play around the internet lately, so I thought we could start there. In this tutorial, I will demonstrate how to create “Smart Columns” using the Prototype Framework instead.
We’ll start by creating our external javascript file. Let’s call it smartcolumns.js. We will take an Object Oriented approach and use Prototype’s awesome Class.create() method to set up our functions.
Finally, let put it all together. Add your CSS and Javascript to your document. Again, we’ll will just use the original example’s markup for comparison, and we’ll load in Prototype using Google’s AJAX Libraries API for convenience.
<scriptsrc="http://www.google.com/jsapi"type="text/javascript"><!--mce:0--></script><scripttype="text/javascript"><!--mce:1--></script><scriptsrc="smartcolumns.js"type="text/javascript"><!--mce:2--></script><scripttype="text/javascript"><!--mce:3--></script><h1>Smart Columns w/ CSS & Prototype</h1><divclass="container"><ulid="columns"class="column"><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/technology/too-much-tweet/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/toomuch_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/technology/too-much-tweet/">Too Much Tweet</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/illustrations/berit-somme/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/somme_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/illustrations/berit-somme/">Berit Somme</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/light/jason-reynolds/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/jasonreynolds_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/light/jason-reynolds/">Jason Reynolds</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/illustrations/vanity-claire/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/vanityclaire_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/illustrations/vanity-claire/">Vanity Claire</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/design-firm/we-are-sofa/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/wearesofa_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/design-firm/we-are-sofa/">We Are Sofa</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/design-firm/outline-2-design/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/outline2design_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/design-firm/outline-2-design/">Outline 2 Design</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/blog/rocket-club/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/rocketclub_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/blog/rocket-club/">Rocket Club</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/portfolio/emotions/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/emotions_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/portfolio/emotions/">Emotions</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/ecommerce/sansa/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/sansa_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/ecommerce/sansa/">Sansa</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/design-firm/legwork-studio/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/legworkstudio_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/design-firm/legwork-studio/">Legwork Studio</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/community/moytoy/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/moytoy_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/community/moytoy/">Moytoy</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/design-firm/method-arts/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/methodarts_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/design-firm/method-arts/">Method Arts</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/ecommerce/479-popcorn/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/479popcorn_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/ecommerce/479-popcorn/">479 Popcorn</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li><liclass="column-block"><divclass="block"><ahref="http://www.designbombs.com/design-firm/mode-project/"><imgsrc="http://www.designbombs.com/wp-content/themes/DesignBombs/images/gallery/modeproject_thumb.gif"alt=""/></a><h2><ahref="http://www.designbombs.com/design-firm/mode-project/">Mode Project</a></h2>
Odio velit vulpes zelus elit euismod. Singularis abluo autem saepius tego quod letatio meus. Os, tamen, tincidunt facilisi laoreet consectetuer quis. Feugiat ille, indoles, turpis</div></li></ul></div>
That’s all there is to it folks. Take a look at the finished product and compare it to the original. Big thanks to Soh Tanaka for the inspiration to this tutorial.
If you have made it this far, you must be a ninja! HotWax Media offers training and support to get you and your team up and running on Apache OFBiz as quickly as possible, so contact us and let us know if we can support your open source e-commerce and ERP efforts!
- Ryan
Ryan Foster is a designer and OFBiz developer for HotWax Media.
OFBiz Tutorial – Introduction to OFBiz Widgets
OFBiz is a broadly-scoped, powerful tool for open source ERP and e-commerce. Whether your project is a simple e-commerce shopping cart or a complex ERP implementation that includes custom order management, multi-channel integrations, and accounting, ease-of-use for the developers implementing your system translates directly to your bottom line.
The following OFBiz tutorial is technical in nature. If you are a developer, enjoy! If you are a manager, suggest that your developers have a look. The OFBiz Widget goes a long way in saving you time — and money — in your open source e-commerce and ERP projects.
And remember: HotWax Media provides a complete set of OFBiz services, from business analysis through system design, UI design, and complete implementation. So feel free to contact us today and leave the heavy lifting to us!
The OFBiz Widget is one of the core components of the OFBiz framework, its main goal is the definition and rendering of the OFBiz user interfaces.
Each widget represents a reusable user interface element, that can be included and extended by different applications.
The widgets allow to define, using a simple xml language, user interfaces elements like screen, menus, forms, trees in a platform and output independent format; the widgets are also tightly integrated with other key components of the OFBiz framework, like the “content”, “service” and “entity” engines, so that data preparation logic programming is greatly simplified and consistent with the rest of the framework.
At runtime, when a widget is to be rendered, its widget definition (in xml) is passed to the proper widget renderer that transforms it in the right output format: an html document, a PDF document, a comma separated value file etc…
Various renderers are available in OFBiz including the html, pdf, xml, text and now the csv renderer. The html renderer is widely used to render each and every screen of the applications, the pdf renderer is used for PDF documents, bar codes and PDF email attachments, the xml renderer is used to generate Microsoft Excel compliant xml exports, the csv is for exporting comma separated values files.
In the past, each renderer was implemented by a complex set of Java classes and the output code was embedded in its methods; this layout had some relevant cons: the code was difficult to maintain and customize because html/xml/xsl-fo code was embedded in Java methods, building new renderers was a complex task.
As a consequence very few OFBiz committers were able to fix and enhance the widget code in the framework and the html layout of the output was not very good because web designers had a hard time dealing with the html code embedded in Java classes.
For these reasons, recently, all the complex, difficult to maintain and customize code of the renderers in OFBiz has been refactored by HotWax Media, by introducing the concept of a generic Macro Widget Renderer: a unified renderer that delegates the actual implementation of the output to a set of Freemarker macro calls. Now all the output depended code is in easy to modify/extend/customize Freemarker templates: web designers can edit the templates for a given output and see the results real time without the need to recompile or even restart the OFBiz instance. It is also incredibly easy to implement new special purpose renderers, to get new types of output/export for the widgets: in fact we expect that in the future the set of output formats available for the widgets will grow.
The CSV renderer is a good example of the new breed of lightweight renderers: it took few hours to implement and with it now virtually any widget form that represents tabular data can be exported in CSV format.
In short, here are the few steps we followed to implement the new CSV output:
add to framework/widget/config/widget.properties a new section for the renderer
implement the Freemarker macros for the new renderer by copying and modifying the ones of an existing renderer in framework/widget/templates: csvScreenMacroLibrary.ftl, csvFormMacroLibrary.ftl,csvMenuMacroLibrary.ftl, csvTreeMacroLibrary.ftl
add a new entry for the renderer in framework/common/webcommon/WEB-INF/common-controller.xml
<handler name=”screencsv” type=”view” class=”org.ofbiz.widget.screen.MacroScreenViewHandler”/>
After this you are ready to use the new renderer by associating, in a controller.xml file, the screen definition with the renderer:
In one of my next posts we will illustrate an example of how the same form can be used to render html code and csv data.
- Jacopo
Jacopo Cappellato is VP of Technology at HotWax Media and has been involved with the OFBiz project since 2003. He is an OFBiz Project Committer and a member of both the OFBiz Project Management Committee and the Apache Software Foundation.
We are psyched to kick off our company blog with a post about ApacheCon US 2009, running 2 – 6 November, 2009 in lovely Oakland, CA! The Apache Software Foundation (ASF) will be celebrating its 10th anniversary at this year’s ApacheCon — Happy Birthday, ASF!
HotWax Media was the Platinum Sponsor at last year’s ApacheCon US 2008, which took place in New Orleans. This year in Oakland, Microsoft and Thawte are filling the Platinum Sponsor role, while SourceForge joins us as a Gold Sponsor. (Other sponsors include hp, LinkedIn, and Sun – See a complete list here.) What’s that, you say? Microsoft is a Platinum Sponsor of the most respected open source software conference of the year? Believe it!
But the show is only made possible by the sponsors, it is not about the sponsors. Rather, the show is about the fantastic collaboration that takes place under the umbrella of the ASF. If you have an interest in open source software but have never attended an ApacheCon, I recommend you give it a try. Granted, the subject matter of presentations (and of general conversations) skews toward the technical side of the spectrum, but I really enjoy the individuals who attend, the casual and supportive atmosphere, and the quality of the ideas that are shared.
HotWax Media attends and provides sponsorship mainly due to our involvement with Apache Open For Business (OFBiz), which is a broadly scoped open source ERP framework that is maintained as a top-level project at the ASF. OFBiz offers great e-commerce features on the front end along with amazing capabilities on the backend for integrating and automating business systems. Users enjoy OFBiz for its ability to bring together features like supplier / inventory / order management, accounting, manufacturing, and more into one common business suite. OFBiz covers a lot of ground, to be sure, which is one of the reasons that OFBiz living under the ASF umbrella is so meaningful to me.
For a software project to be a top-level project at the ASF is the pinnacle of open source credibility. In a word, the ASF is about meritocracy. The ASF has setup a structure that promotes the best idea winning; this happens within the context of a hierarchy that is just enough to maintain order and integrity without squashing contribution. Put another way, the ASF focuses on making sure project administration is done properly, thereby freeing up ASF project participants to focus on what they do best. The result is a widely-distributed group of flexible, committed volunteers who turn out world class software.
HotWax Media’s business and our expertise with OFBiz go hand-in-hand with our participation in the ASF. We have numerous OFBiz Project Committers, Project Management Committee Members, and other active community members on staff, and we donate literally thousands of hours per year to the open source project in the form of volunteer maintenance and improvement activities. What is good for OFBiz, we often say, is good for HotWax Media. Whether building a custom order management system on OFBiz or developing a proprietary product that relies heavily of OFBiz, HotWax Media makes money in large part by maintaining a leadership role and top-tier expertise with OFBiz. So there we have it: a simple example of a for-profit business model that relies heavily on open source software.
There are literally dozens of Apache Projects, from OFBiz to the Apache Web Server, which serves over 1/2 of all web sites worldwide. The volunteers who build and maintain Apache software, and the brilliant minds who attend ApacheCon each year, are some of the most creative and talented software people anywhere. So as I consider our sponsorship again this year, it does makes me chuckle that we are on the same short list with Microsoft. Yet even in the face of the obvious conflict of interest that can be construed, it actually makes perfect sense to me that Microsoft is a Platinum Sponsor at ApacheCon. Any company that makes software development a central component of its business would be well served to become and stay involved with the ASF. When it comes to software, the ASF simply makes some of the best.
Mike Bates is CEO at HotWax Media and will join other HotWax Media employees and advisors in periodically posting thoughts here related to OFBiz, eCommerce, ERP, and related topics.