[GSoC Proposal] Sales Reports for Drupal Commerce

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
cvangysel's picture

Abstract

Drupal Commerce is used to build eCommerce websites and applications of all sizes. It was built with a framework mindset, focusing what you can build with it.

The project is currently maintained by Ryan Szrama and the Commerce Guys.

The goal of this project is to develop a complementary module that integrates with Commerce and that offers Sales statistics. The module would be heavily backed by Views and it would get released simultaneously with the 2.x branch of Commerce Kickstart.

Problem

Drupal Commerce is a great, free and flexible solution that allows you to setup your own online store within minutes. One thing that it currently lacks is a decent sales statistics module.

Some attempts have been made to accomplish this, but most (if not all) of them have been abandoned. There's also Commerce Analytics which adds the possibility to send the order data to the Google Analytics service. The problem with this is that you don't control your own data anymore, besides the Analytics service might be out of sync and as a result it doesn't reflect true store values.

One of Drupal's most important selling points is its diversity, extensibility and flexibility. The importance of the Drupal Commerce is huge as it gives the user the ability to take their Drupal-powered site and turn it into a webshop. This is a huge boost for Drupal and brings new enthusiasts, who are looking for an eCommerce solution, to the community.

Solution

The goal of this project is to develop a module using the Commerce framework that delivers all the basic reporting functionality in Ubercart and exposes them through the Views API. It might even be possible to have the reporting completely driven by Views, which would be great for customizability.

  • The sales report per day, month and year showing total sale figures and which is filterable to a single product sales report.
  • The projected sales report for the next day or month.
  • A filterable report by order status, for example monthly sales for a given year only showing particular order statuses.

Other modules should be able to hook into my reporting module and change existing statistics or contribute their own so that all the statistics can be found in one place.

Because a picture says more than a thousand words, I would like to visualize all the data gathered by the online store and deliver interactive, insightful and good looking graphs and charts. The module would make use of an existing Drupal API module that allows chart generation, like the Google Visualization API, the Google Chart API or something completely else.

Furthermore, the ability to generate tax reports will also be part of this project. It's a must for every online retailer to be able to quickly generate these. The other reports are derived by direct queries to the database, whereas the tax data is locked inside serialized data columns in the database. Generating tax reports will require batch processing to generate reports that may be cached.

I would also love to include some data mining in this project. Applying association rule learning to the sales reports may expose some interesting patterns in consumer habits. This will have to be done through batch processing which makes it more complicated.

Implementation

  1. Implement reporting and statistics features with Views.
  2. Visualization of the reports through charts and graphs.
  3. Implement tax report generation.
  4. Generating a report that shows patterns in consumer habits through frequent item set mining.

Planning

I've got finals starting May 29th and ending July 2nd (5 weeks), however the different tests are well-spread and I will be able to work on my project during that time. Last year I had a busier semester and then I succeeded in finishing my project.

  • Before May 21
    Finish my Bachelor Thesis which is inspired by the current Drupal.org Git Daemons and should eventually replace them. New features in my implementation would result in push capabilities over HTTP and per-branch authorization.
  • May 21
    Start of Google Summer of Code 2012
  • May 21 to July 5
    Reporting and statistics
  • July 5 to July 13
    Charts and Graphs
  • July 13
    Midterm evaluation
  • July 13 to July 27
    Charts and Graphs + Tax Reports
  • July 28 to August 13
    Frequent Itemset Mining
  • August 13
    Suggested 'pencils down' date
  • August 13 to August 20
    Finish all the loose ends
  • August 20
    Final evaluation

About the author

I'm Christophe, a 21-year old Computer Science student at the University of Antwerp, whose main interests are in web development, software engineering and distributed systems.

I've got extensive experience with various programming languages (C++, PHP, Java, Python, ...). I've got a background in web development (with and without Drupal) and last year I wrote my own Web Framework which was inspired by Drupal and Joomla.

Currently I'm working on my Bachelor Thesis, which consists of writing a Python-based Git server-side daemon that's inspired by the current Drupal.org Git Daemon.

Why me?

  • My first encounter with Drupal was thanks to Ubercart. It was also my first Drupal-powered site that led to my love for Drupal and all what it stands for.
  • I followed a class on Data Mining last year, and I really think Drupal Commerce would be an ideal platform to implement some of the algorithms I studied there.
  • I finished Google Summer of Code last year and I've already completed lots of projects of all different sorts.

Contact me?

E-mail, Facebook, Google+, my profile on Drupal.org or just plain ol' IRC (#drupal-vcs or #drupal-commerce).

Comments

Happy to help

Everett Zufelt's picture

I'd be happy to help withthis project in any way.

Accessibility Consultant & Web Developer - Zufelt.ca
@ezufelt on Twitter | LinkedIn profile

Cool - I'll regulary post

cvangysel's picture

Cool - I'll regulary post updates once the summer has started, and you can also find me on IRC in #drupal-commerce and #drupal-vcs.

Add me to the +1 for

HyperGlide's picture

Add me to the +1 for help/testing of any work. Looking forward to this.

Same here

fp's picture

Please feel free to ask if you need additional help.

Looking forward to seeing this project moving forward.

Google Summer of Code 2012

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: