BLOG

Posts Tagged ‘OFBiz Ecommerce’

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 e-commerce 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