Order Management System

From pen and paper…

The application is entirely internationalized.

The order management system (OMS) was developed for a private client in the agricultural sector. Before using our application, the client used pen and paper to take notes – and trace the progress – of orders that their customers would place by phone. However, with the client's production process being split into several individual tasks at different locations, this way of handling orders became an impractical an error-prone procedure.

The application that we developed not only allowed the client to digitalize the entire handling of orders, it also made the need to calculate prices manually and to look up distinct bits of information in various places completely obsolete. With all the data related to their customers and their products digitized in one place, customers can now be looked up and filtered automatically.

Selecting a product from the drop-down list.

Prices and taxes from the selected products are calculated and displayed on the fly, enabling the client to give accurate and up to date information to their customers.

The application has been designed to be responsive from the ground up, allowing our client to use it on a desktop computer as well as on tablets at their production locations and – in the near future – on smartphones anywhere in the world. Whether logged in on a computer at their facilities or any other device, all employees of the client can see and update an order's state.

One particular strong-point of the order management application are its GIS-related capabilities. Not only does the application validate and – if it has to – auto-correct address information, but it also uses routing services in order to automagically suggest the best – i.e. the shortest – routes. It also allows modifying suggested routes by dragging and dropping delivery points of a tour into the desired order.

Evolution

A mobile application has recently been added to the OMS eco-system. It's goal being to offer an easy and quick means for professionals to order products from the OMS on the go, it is kept as simply as possible, with very little widgets and usable defaults. Pick-up dates are automatically set to the next possible value and any manual changes are validated according to our customer's opening hours.

While the first version of the app is specifically targeted at ordering turf from our customer Rollrasen van de Sluis, it can be easily re-branded and adapted to the specific needs of other OMS instances.

Several additional add-ons and upgrades are currently in the works or scheduled to be added to the current application:

  • automatic printing of labels that will be used to identify the individual packets of an order
  • generating delivery sheets and invoices directly out of the application, omitting the need for a second or third tool
  • offering error-correction and auto-complete on addresses when adding new ones to the system
  • exporting the defined tour routes to a GPS navigation device to be used by the client's truck drivers
  • import and export functionality to share data with further instances of the OMS – and with other applications

Development

The application will suggest an ideal route for your tour.

Similar to the my.studentfair.lu application, this one has also been engineered using a Behaviour Driven Development methodology relying on Behat and Mink for functional tests, as well as jasmine for JavaScript unit-tests.

The order management application is also based on a Silex back-end that consists mostly of controllers and models built using the Doctrine ORM object-relational mapping library. While the Silex backend delivers only very few of the initial views and templates, most of the application's user-interface is being generated and updated using backbone.js.

As for scaffolding and task running, we relied on several tools such as composer, grunt, and apache ant for dependency management, sass for CSS compilation and many other tools.

Technologies used in building this application

Silex

Silex is a php micro-framework based on Symfony2 components. Comparable to flask for python or express.js for node, silex is powerful, yet free of the usual bloat and it gives you complete freedom over your application's structure. (+)

MySQL

MySQL is a relational database management system being used for persisting and manipulating application data. It is one of the most widely used database system for PHP applications, if not the most. (+)

Redis

Redis is an open source, in-memory data structure store, used as a database, cache and message broker. (+)

Behat

Behat is an open source behavior-driven development framework for PHP 5.3 and 5.4 that was inspired by Ruby's Cucumber project, especially its Gherkin syntax. Behat drives the functional tests on this project. (+)

PHPUnit

PHPUnit is a programmer-oriented testing framework for PHP written by Sebastian Bergmann. It is an instance of the xUnit architecture for unit testing frameworks. (+)

Bootstrap

Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web. Bootstrap makes creating good-looking website easy and allowed us to focus on the functional aspects of the application. (+)

backbone.js

backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface. (+)

AngularJS

AngularJS is a frontend framework that eases creation of single page applications via concepts such as two-way binding that make developing client-side applications a pleasure. (+)

Vue.js

Vue.js is progressive JavaScript framework for building user interfaces. Vue is a capable web application framework that is able to power advanced single-page applications (+)