BLOG

NEXT STEPS

Archive for the ‘OFBiz eCommerce’ Category

The HotWax Media Way: Infrastructure and Tools to Support OFBiz Open Source eCommerce and ERP Development

Friday, March 5th, 2010

Tools OFBiz 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

Tuesday, February 23rd, 2010

In our last post of the tutorial series OFBiz Tutorial – Implementing a Product CSV export we have learned how to quickly implement a CSV export of a list of rows.

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:

  1. 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
  2. add to the controller.xml file the request and view entries for the new PDF export screen
  3. 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:

1
2
3
4
<container style="button-bar">
    <link target="ProductListExport" text="CSV Export" style="buttontext"/>
    <link target="ProductListPDF" text="PDF Export" style="buttontext"/>
</container>
  • the new link is inside of the same “container” element of the “CSV Export” link; we want the two links rendered close to each other
  • the link element is defined in the same way we have defined the other link

Controller entries for a PDF export screen

1
2
3
4
5
6
<request-map uri="ProductListPDF">  
    <security https="true" auth="true"/> 
    <response name="success" type="view" value="ProductListPDFScreen"/>
</request-map> 
... 
<view-map name="ProductListPDFScreen" type="screenfop" content-type="application/pdf" page="component://hwm/widget/HwmScreens.xml#ProductListPDF"/>

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<screen name="ProductListPDF">  
    <section>  
        <actions>  
            <set field="viewSize" value="10000"/>  
            <set field="pageLayoutName" value="main-page-landscape"/>  
            <entity-condition entity-name="Product" list="products">  
                <order-by field-name="productId"/>  
            </entity-condition>  
        </actions>  
        <widgets>  
            <decorator-screen name="FoReportDecorator" location="component://common/widget/CommonScreens.xml">  
                <decorator-section name="body">  
                    <container>  
                        <label text="Finished Products" style="h1"/>  
                    </container>  
                    <include-form name="ListProducts" location="component://hwm/widget/HwmForms.xml"/>  
                </decorator-section>  
            </decorator-screen>  
        </widgets>  
    </section> 
</screen>
  • 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.Jacopo Cappellato - OFBiz Developer - OFBiz Expert

Enterprise E-Commerce and ERP: Common Questions Series Part 1

Thursday, February 18th, 2010

hotwax-media-ofbiz-expert

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.
Mike Bates - OFBiz Expert

OFBiz Tutorial – Implementing a Product CSV export

Thursday, February 11th, 2010

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.

Here is the screen definition:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<screen name="ProductList">
    <section>
        <actions>
            <entity-condition entity-name="Product" list="products">
                <order-by field-name="productId"/>
            </entity-condition>
        </actions>
        <widgets>
            <decorator-screen name="HwmCommonDecorator" location="component://hwm/widget/CommonScreens.xml">
                <decorator-section name="body">
                    <label text="Finished Products" style="h1"/>
                    <include-form name="ListProducts" location="component://hwm/widget/HwmForms.xml"/>
                </decorator-section>
            </decorator-screen>
        </widgets>
    </section>
</screen>

and the form definition:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<form name="ListProducts" type="list" list-name="products">
    <row-actions>
        <service service-name="getProductInventoryAvailable" result-map="inventoryAvailableMap">
            <field-map field-name="productId" from-field="productId"/>
        </service>
    </row-actions>
    <field name="productId" widget-style="buttontext">
        <hyperlink target="/catalog/control/EditProduct" description="${productId}" target-type="inter-app">
            <parameter param-name="productId"/>
        </hyperlink>
    </field>
    <field name="productTypeId" title="Product Type">
        <display-entity entity-name="ProductType"/>
    </field>
    <field name="internalName"><display/></field>
    <field name="description"><display/></field>
    <field name="qoh" entry-name="inventoryAvailableMap.quantityOnHandTotal">
        <display/>
    </field>
    <field name="atp" entry-name="inventoryAvailableMap.availableToPromiseTotal">
        <display/>
    </field>
</form>

and the end result is this:
The final result

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:

  1. add to the product list screen a link that will generate the CSV export
  2. add to the controller.xml file the request and view entries for the new CSV export screen
  3. 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:

1
2
3
<container style="button-bar">
    <link target="ProductListExport" text="CSV Export" style="buttontext"/>
</container>
  • 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

Controller entries for a CSV export screen

1
2
3
4
5
6
<request-map uri="ProductListExport">
    <security https="true" auth="true"/>
    <response name="success" type="view" value="ProductListExportScreen"/>
</request-map>
...
<view-map name="ProductListExportScreen" type="screencsv" content-type="text/csv" page="component://hwm/widget/HwmScreens.xml#ProductListExport"/>

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
<screen name="ProductListExport">
    <section>
        <actions>
            <set field="viewSize" value="10000"/>
            <entity-condition entity-name="Product" list="products">
                <order-by field-name="productId"/>
            </entity-condition>
        </actions>
        <widgets>
            <include-form name="ListProducts" location="component://hwm/widget/HwmForms.xml"/>
        </widgets>
    </section>
</screen>
  • 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.

Jacopo Cappellato - OFBiz Developer - OFBiz Expert

HotWax Media and OFBiz – 2009 Contributions – Part 4

Monday, February 8th, 2010

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:

  1. Shipping Integrations
  2. Multi Channel Sales Integrations
  3. Payment Processing Integrations

Shipping

OFBiz Shipping USPS UPS

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.

  1. 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.
  2. 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.
  3. UPS integration enhancement for supporting shipping quote based on dimensions.
  4. Built a custom component for integrating OFBiz with existing UPS World Ship terminals.
  5. Added support for USPS international rate estimates and label printing.
  6. Built a custom component for integrating OFBiz with the Endicia services to provide additional features that were not supported in standard USPS web services.
  7. 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

OFBiz Multi Channel

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:

  1. Added multiple store support to eBay and provided sample data to document how it works.
  2. 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.
  3. 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.
  4. Added a new screen to optimize the import orders and transactions workflow.
  5. Create support for eBay configuration from the new entity EbayConfig.  Provided the GUI support to update configuration values.
  6. Added a new entity, EbayShippingMethod, to support custom shipping methods from eBay. Also provided GUI support and included demo data for reference and documentation.
  7. Fixed the Google Base product feed – it was broken when we started working on it.
  8. Provide entity support for Google Base configuration.
  9. Updated eBay and Google Base customer error messaging.
  10. Added multiple store support to Google Base and provided sample data to document how it works.
  11. 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 orbital google paypal

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.

  1. Implemented Chase Bank’s “Orbital Payment Gateway” – supported features are credit card authorization, capture, authorize and capture, release, and refund.
  2. 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.
  3. 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.
  4. Users can now create and order using Google Checkout – including the checking of existing customer information.
  5. Added support in OFBiz for fulfillment of orders created from inside Google Checkout.
  6. Added additional shipment, order state change, and other notifications into the Google Checkout integration.
  7. Provided seed & demo data so that user can test Google Checkout with merchant and seller accounts.
  8. 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.
  9. Provided entity support for the configuration settings of Google Checkout per the current OFBiz standard.
  10. Added support to Google Checkout to support Google shipping methods in OFBiz.
  11. Added GUI support for GoogleCheckout entities to easily handle configuration settings. The name of entities are: GoogleCoConfiguration & GoogleCoShippingMethod.
  12. Provided documentation for the community to show how Google Checkout works.
  13. Made a number of improvements to the standard PayPal IPN integration.
  14. Implemented PayPal Express Checkout (both the Payflow Pro and standard PayPal account versions) allowing for order payments and refunds using a PayPal account.
  15. Provided entity support for the configuration settings of PayPal Express Checkout.
  16. 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:

Read Intro | Part 1 | Part 2 |Part 3 | Part 4