Megaventory Blog - Online Inventory Management Software, Order fulfillment and Control System
This is the company blog for megaventory, an online software that helps small businesses that buy, sell and manufacture physical products to manage sales, purchasing, manufacturing and inventory. We blog about new features and updates but also about enterprise software, small businesses, cloud computing and the industry in general.

Thursday, August 30, 2012

Megaventory September 2012 Upgrade (code named: Verbania)

New features are coming to Megaventory on Sunday the 9th of September. Here is the list:

1. Clipboard

This is a totally new layer of functionality that allows products to be added to a Clipboard and be pasted to Documents (sales/purchase orders, goods in/out etc.). The Clipboard is noticeable by a small icon in the lower left of the screen as it can be seen in the screen-shot below:

To access the clipboard from any page, just click on the Clipboard icon

To Pin products to the Clipboard, one has to select the products from a list and click the Pin option. After pinning the products, a small notification icon is added which displays the number of products pinned and the product list is populated inside the Clipboard.

To add/pin products to the Clipboard select the products and click the Pin option

Once you are done adding products to the Clipboard, you can paste them in any New/Unsaved or Pending Document. To do so, just click on the Clipboard icon and select the Paste option.

To Paste the contents of the Clipboard, open any new or Pending Document and click Paste

That's it! Products will now be added to the document on-the-fly, saving you time and effort. The clipboard is so flexible and dynamic, you may even Pin products to it  from any Document:

Pinning Products to the Clipboard from a Document

this is extremely handy if -for example- one needs to copy the full contents of a Sales Order to a Purchase Order.

2. Addition of Invoices in the Account/Billing Profile

We have added a list to include all your payments (Billing History) to Megaventory and a link to print those Invoices. Just visit your Account/Billing Profile (under the Admin tab) to access them:
To print your past invoices, click the Print Invoice link next to the required payment date

Apart from the features listed above, as always, we've worked hard to eliminate bugs; more than 30 minor bugs have been fixed in this upgrade.

To have your say related to this upgrade, just use the comments section below!

Thursday, August 23, 2012

How we built our uptime monitoring page

This is a somewhat technical post targeted at website administrators and developers. The post breaks down the process of creating an 'uptime monitoring' page which can be extremely useful to Software-as-a-Service providers such as Megaventory. The % of up-time is a crucial factor that refers to the period of time when the service is up and running. Needless to say, this metric should be taken into account by users evaluating any SaaS provider.

1. Choose the uptime monitoring tool

A simple google/bing search will do the trick here. We decided to use the service by www.uptimerobot.com. This is a reliable (we have been using it for 3 years now) and free service that provide -amongst other features- email notifications and an API layer. We use the latter to fetch service data in our uptime monitoring page later on.


2. Set up the API call and get the results

Here one may have to refer to the API documentation. In our case, this is located at: http://www.uptimerobot.com/api.asp and we use the getMonitors function. An API key is needed to call the API, you can get the key after signing up for the service at www.uptimerobot.com. Here is the Javascript code to use this API:



 

(kudos to this post: http://stackoverflow.com/questions/2499567/how-to-make-a-json-call-to-a-url).

Now, some things to consider:

- We request the uptime percentages for 7, 30 and 365 days and we pass this info to the url as: 'customUptimeRatio=7-30-365'. You may set your own custom periods.

- The jsonUptimeRobotApi function consumes the data that are returned by the API. For example, the uptime percentage is returned in the data object as a string separated by dashes. To get the individual uptime percentages, we split the data object using the following code:
var ArrayOfUptime = data.monitors.monitor[0].customuptimeratio.split("-");

- Finally, we call the drawChart() function that is included in the Google Chart Tools (https://developers.google.com/chart/) and we pass the ArrayOfUptime to it: drawChart(ArrayOfUptime). That generates the correct percentage values in the Gauge graphs (see step 3 below).

3. Load the Google Chart Tools

To use the Google Chart Tools, we need to add the following libraries just before the closing of the 'head' tag:

 
Then, we can call the drawChart function that looks like this:
 

the chart.draw(data, options); is the call that sketches the graphs. 

4. Bring in the latest tweets of your application

On many occasions, especially if the service is down, adding a Twitter stream provides an easy source of useful information about the service, for example, the expected time when the service will be up again! To add it, we use the native twitter widget which can be customized easily. It can be found at: https://twitter.com/about/resources/widgets.

EDIT: As you may have heard, the twitter API has been discontinued. The new link to create your own widget is at: https://twitter.com/settings/widgets/new

5. Set-up a server response (ping) timer

A timer that informs users about the latency of the server is a good to have feature in a status page. However, there is no direct way for a browser to ping a server so we are applying a few workarounds. Here is the Javascript function that does so:
 

Some things to consider:

- The server response time should be visible only if the status of the server is operating normally (status==2 in our case). If there is a service disruption, there is no need to display the response time.

- We define a starttime variable to log the current time

- We use a tiny image (an 1KB, 1x1 pixel 'NoImg.gif' in our case) and we place it in a folder where the application resides (for example megaventory.com/images/).

- The onLoad event fires when the src attribute of the img is set and the image is fetched from the server and loaded in the browser. This is exactly when we subtract the 'starttime' from 'new Date()' to get the time in ms

- We add a random number to the URL that requests the image and we do so to prevent caching of the image in the browser when the user refreshes the page. For example, the image should be fetched with a URL that looks like: 'http://www.megaventory.com/images/NoImg.gif?0.434387483'  

6. Add everything in a single html file and upload it to a server

After we finish with all the coding and widgets, we need to publish our index.html file. A good and fast way to make the file available online is to add it in the public folder of your drop-box folder. This will assign a unique URL to it (for example https://dl.dropbox.com/u/XYZ/index.html) and you may send the link to your friends for a review. Once everything is finalized, you can publish it officially using the standard monitoring page URL which looks like http://status.YourCompanyName.com. The status URL must resolve to another hosting environment than the one your application is hosted at. The reason is obvious: if your hosting environment goes down, users should still be able to look up your application status and twitter stream. The web is full of options for hosting a static html page. We use FastMail (http://www.fastmail.fm) for managing our e-mail & DNS, and hosting the monitoring page as it provides a 50MB web space for static html pages.

So how does the end result look? See for yourself at status.megaventory.com. Feel free to provide your feedback in the comments section below!

Monday, August 20, 2012

Business software should mean customization - Printout templates.

Most of the feedback we get from time to time refers to the level of customization that megaventory provides to the end user. In fact this is also one of the main points the Pemeco Consulting and VM associates have made in the respective presentation posts in our blog: "match the software to the requirements of your business and not vice-versa".

In this post we'll see how one can customize the appearance of the document printouts. If you are unfamiliar with megaventory, a document can be a Order (Sales/Purchase), a Sales Quote, a Goods In/Out or a Sales/Purchase Invoice.

Megaventory provides a very convenient way to fully customize the looks of Documents (Goods Out/In, Invoices, Sales Quotes, Sales/Purchase Orders). To do so, navigate to the list of your Document Types and click on the Document Type description to open up a specific Document Type. Once the page loads, check to enable the Custom Header (or Custom Footer) and add your HTML code in the HTML tab. Specific text strings are replaced as follows:

  • xxxLOGOxxx - Replaced by the logo of your company.
  • xxxLABEL_TRANS_DATExxx - Replaced by "Document Date" or "Order Date" or "Quote Date", according to the Document Type.
  • xxxTRANS_DATExxx - Replaced by the date that the Document was created.
  • xxxLABEL_TRANS_NAMExxx - Replaced by "Document Number".
  • xxxTRANS_NAMExxx - Replaced by the Description of the Document Type that gets printed
  • xxxLABEL_TRANS_NUMBERxxx - Replaced by "Document Number".
  • xxxTRANS_NUMBERxxx - Replaced by the Document number.
  • xxxLABEL_WAREHOUSExxx - Replaced by "Inventory Location".
  • xxxWARE_NAMExxx - Replaced by the Inventory Location name.
  • xxxLABEL_CUSTOM_DATE_1xxx - Replaced by "Custom Document Date 1" or "Custom Order Date 1" or "Custom Quote Date 1", according to the Document Type.
  • xxxCUSTOM_DATE_1xxx - Replaced by the Custom Date 1 field the user has entered in the Document.
  • xxxLABEL_CUSTOM_DATE_2xxx - Replaced by "Custom Document Date 2" or "Custom Order Date 2" or "Custom Quote Date 2", according to the Document Type.
  • xxxCUSTOM_DATE_2xxx - Replaced by the Custom Date 2 field the user has entered in the Document.
  • xxxLABEL_PAYMENT_TERMSxxx - Replaced by "Payment Terms".
  • xxxPAYMENT_TERMSxxx - Replaced by the Payment Terms the user has entered in the Document.
  • xxxLABEL_COMPANY_NAMExxx - Replaced by "Company".
  • xxxCOMPANY_NAMExxx - Replaced by the name of your company.
  • xxxLABEL_COMPANY_ADDRESSxxx - Replaced by "Address".
  • xxxCOMPANY_ADDRESSxxx - Replaced by the street address of your company.
  • xxxLABEL_COMPANY_CITYxxx - Replaced by "City".
  • xxxCOMPANY_CITYxxx - Replaced by the city of your company.
  • xxxLABEL_COMPANY_ZIPxxx - Replaced by "Zip".
  • xxxCOMPANY_ZIPxxx - Replaced by the zip code of your company.
  • xxxLABEL_COMPANY_COUNTRYxxx - Replaced by "Country".
  • xxxCOMPANY_COUNTRYxxx - Replaced by the country of your company.
  • xxxLABEL_COMPANY_TELxxx - Replaced by "Phone".
  • xxxCOMPANY_TELxxx - Replaced by the telephone number of your company.
  • xxxLABEL_COMPANY_TAXIDxxx - Replaced by "Tax ID".
  • xxxCOMPANY_TAXIDxxx - Replaced by the tax ID of your company.
  • xxxLABEL_CUSTOMER_NAMExxx - Replaced by "Client" or "Supplier" according to the Document Type.
  • xxxCUSTOMER_NAMExxx - Replaced by the Customer/Supplier name the user has entered in the Document.
  • xxxLABEL_CUSTOMER_ADDRESSxxx - Replaced by "Address" or "Billing Address" according to the Document Type.
  • xxxCUSTOMER_ADDRESSxxx - Replaced by the Customer/Supplier address the user has entered in the Document.
  • xxxLABEL_CUSTOMER_SHIP_ADDRESSxxx - Replaced by "Pickup Address" or "Shipping Address" according to the Document Type.
  • xxxCUSTOMER_SHIP_ADDRESSxxx - Replaced by the Customer/Supplier shipping/picking address the user has entered in the Document.
  • xxxLABEL_CUSTOMER_TELxxx - Replaced by "Phone".
  • xxxCUSTOMER_TELxxx - Replaced by the Customer/Supplier telephone number.
  • xxxLABEL_CUSTOMER_EMAILxxx - Replaced by "e-mail".
  • xxxRECIPEMAILxxx - Replaced by the Customer/Supplier email.
  • xxxLABEL_CUSTOMER_TAXIDxxx - Replaced by "Tax ID".
  • xxxCUSTOMER_TAXIDxxx - Replaced by the Customer/Supplier tax ID.
  • xxxLABEL_CUSTOMER_COMMENTSxxx - Replaced by "Supplier Comments" or "Client Comments" according to the Document Type.
  • xxxCUSTOMER_COMMENTSxxx - Replaced by the Customer/Supplier comments.
  • xxxLABEL_TRANS_COMMENTSxxx - Replaced by "Document Comments" or "Order Comments" or "Sales Quote Comments" according to the Document Type.
  • xxxTRANS_COMMENTSxxx - Replaced by the comments the user has entered in the Document.
So, here you go! Now, you are only limited by your creativity! As an example, let's see a simple header template below:



Sales Order
SO Number: 54
MegaFilms (fictional)
Tel: (434) 123 4567
e-mail: youremailhere@demo-email.com
Sales Store: San Fransisco 1
Sales Order Date: 17 Aug 2012
Sales To:
mr. John Smith
15 George Tsapel st.
Shipping Address: 22 High St., City, Zip, Country
(413)335 5663
someEmail@email.com
Ship From:
My Company's Address
My Company's City
My Company's Zip
My Company's Country

So, enough said! Happy Customizing!

Friday, August 17, 2012

Business software should mean mobility


Another important parameter to keep in mind is ease of use when it comes to your business software. Now, ease of use can mean lots of things and it’s primarily related to the website design but at a more fundamental level it’s also about to what extent the tool can actually get out of the way and let you get things done.

A good example of that not happening is finding yourself either away from the computer or the office and a client or a supplier asking you for specific information that you can only find by looking it up in your system.

Up until relatively recently you would have to make a note, put the asker on hold, look up their information and get back to them - perhaps as late as the next day, if not more. And by then the prospective client might have lost interest or found something else or the supplier might have delayed shipping an item and so on.

Well, not anymore. These days we’re able to cut down on such downtime and bring the request and its resolution much closer - while at the same time making it all much easier.

It’s all about the business software running online (or in the cloud or as a Software as a Service). This means it’s not installed on a particular machine in your office but rather on a server somewhere on the internet and as such you can access it from anywhere you happen to be when a request reaches you, provided you have an internet connection handy. 

So, for example you may be at home looking after the kids and also keeping an eye on your business' inventory levels from your desktop at home. Or you can be at an errand somewhere waiting at the queue when a customer calls to ask for a particular item - you can look it up on your mobile and get back to them without waiting to return to the office. 

Or better yet, you can be down at your warehouse and processing orders immediately straight from your iPad without having to go back and forth at a desktop at the other end of the floor. Here’s for example how megaventory looks on the iPad



Business software does not need to have a dedicated tablet or smartphone application or sometimes not even a dedicated mobile version. As long as it’s accessible online you should be able to do all the tasks you need from your tablet or your smartphone - after a brief or no learning curve.

Take for example undz.org, a Canadian underwear ecommerce business and a megaventory client with offices in Montreal, Vancouver and New York shipping 250K underwear items in just a year. That averages out to shipping one piece per 2 minutes! It’s not an easy task to reach that scale of business if you haven’t solved issues of accessibility to your business at the best level possible.

“The simple fact of having access to my work desk from anywhere is a must....”


undz.org

Another example of a megaventory client is tmdesigncorp, a wholesale screen printing service in Rochester. Although a single-location business, given they work wholesale they have often requests from their clients regarding their own customers and little time to lose to address the request. The ability to have readily available a clear image of the state of their inventory is invaluable to delivering results on time.

“When a client calls I can open inventory from any location that has Wi-Fi”


 tmdesigncorp.com

Overall, going for a business software solution on the cloud means being mobile, always on and ultimately more efficient. It is not an exaggeration to say that an online ERP approach is fundamental in fulfilling your business’ potential.

Friday, August 10, 2012

Tracking incoming & outgoing goods in your warehouses

Once you’ve imported your initial warehouse information and are able to look up basic information such as stock levels in your ERP software, perhaps the next most common task you want is to be able to track inbound and outbound items. Simply put, this means adding an item into your inventory levels when it arrives at the warehouse and subtracting it when it leaves.

So to do that, just go to Inventory again (intuitively enough) and select Goods Inbound.
 


Once there, start typing the supplier, i.e. who’s sending the item which is to be checked in your warehouse. Contact details are also automatically filled in and you’re ready to enter what’s incoming.
 


Again, simply type the SKU or if you don’t know the magnifying glass allows you to search for the item.
 


When you finish entering the items click Verify to finaliZe the data entry - or Save for interim saves to make sure you don’t lose your work.
 


Almost done - the only thing left is to tell megaventory which location or warehouse is receiving the item
 


That’s it! Your inbound goods are safely stored in megaventory in just a few clicks.

Similarly, when you decide to ship an item off a warehouse (to a ‘client’ or equivalent) the process is very similar. Just go to Outbound Goods and fill in the first few characters...
 


and what you want to ship
 

Note that you’re informed about which location has how much stock - a significant detail which also saves you time and clicks.

A good example of this process of inbound and outbound goods is followed by the marketing department of Andrews University: “Large quantities of promotional materials are shipped into our office, and they are entered into Megaventory. When those items are sold or distributed for recruiting or marketing purposes, they are deducted from the inventory and this allows us a chance to have more automation. Alerts also help us to know when to order various items.

A necessary feature when managing your warehouse is to know of course when stock levels are low and need to be replenished (i.e. new orders to be made).
  

The On-Hand Inventory and Alerts option in Inventory easily lets you set such levels to ensure you don’t run out of goods.

Overall, running the marketing department of an organisation as complex and diverse as a university requires a systematic approach to make sure the necessary material is always available and there aren’t any unfortunate surprises due to improper warehouse management.

Another good - even though totally different - example of a company making use of this core ERP feature is CWB Smart Home Solutions, a Florida, USA based company offering home automation, home theater, home security and home networking solutions.

In this case too, CWB has to handle ordering, receiving, storing and consequently shipping expensive equipment on a rolling basis based on their work flow and their clients’ requirements.

A quick look on their high-profile work and anyone can understand that there is little room for mistake in ordering products, arrival times, keeping deadline etc. As such a proper inventory management solution is crucial for keeping it all together.

Saturday, August 4, 2012

Looking up stock availability in your ERP

This is a quick post showing how easy it should be (and it is with megaventory!) to handle a very common task that hopefully you should have to do all the time.

Say for example you’re working and an email arrives or - even better the phone rings - and a customer or possible customer of yours is asking whether you have ‘Our Family Wine’ in stock.

Obviously, it’s crucial both to provide them with an answer as soon as possible - preferably within a few minutes if by email or without even putting them on hold if by phone. Any delays past what’s expected might mean a lost customer.

So how would you be able to do that in a few moments?

To give an answer to your customer just click on Inventory - as expected - from the main menu.
 



Once there the simpler way is to start typing in the top left corner the name of the item you’re looking for. Before you’ve finished searching you’ll have found what you’re looking for in most of the cases!
 


Just hit enter and you’ll be able to see a list of all the relevant results. In particular, in the column ‘Detailed Inventory’ you can see that the location ‘Ath’ has 150 bottles of ‘Our Family Wine’ the customer is asking for. It’s that simple and it took less than one minute to find it - even the most demanding customers won’t have a problem with that...
 


In addition to this simple search, you can look for example by location of your inventory (if, e.g. the customer mentioned their city you could look first in the location nearer him) or by supplier (again following a similar reasoning).
 


This process is exactly what’s regularly happening in Eshanima Fabrics:

Customer calls and we can give live stock availability figures.”, eshanimafabrics.com

Eshanima Fabrics is a South Africa-based small business selling fabric for almost 30 years now with four locations in the country covering the national market. Their product range spans pure linen, premium design fabrics and print base fabrics among others with a wide variety of collections in their inventory.

So a common scenario would be for someone to look them up online (after a Google search or a word of mouth reference), find their site and give them a call asking for the availability and the location of a particular piece of fabric for their project or business. That’s when a quick inventory lookup can turn a prospective client to a satisfied customer

Wednesday, August 1, 2012

Importing business data as it should be done

Following the results of the recent customer survey we ran, you all made it pretty clear that one of the most interesting things you would like to see on this blog are practical guides about how to get specific things done in megaventory. Moreover, we’ve asked you to share a typical use scenario in which megaventory makes life easy for you - and lucky for us many of you did. So in this series of posts we’re combining the two types of information into one neat type post: practical guides for typical megaventory uses.

First up, is importing your data into megaventory of course.

Generally speaking there are two ways to get your data into the service. Firstly, you can try creating the entire data structure piece by piece experimenting as to what works best. This is something you probably need to go through to familiarize yourself with megaventory - but it’s not necessary.

Megaventory's step-by-step tutorial


Secondly, or when you’re confident enough about the initial data you’ve already uploaded, you can start massively uploading information. This is done with our handy import tool which covers most of the data that can be stored in megaventory.
Step1 of the Data Import process of Megaventory



It’s really easy to get things online. Say, for example, we want to upload all our suppliers. We click the second icon and proceed to download the special spreadsheet file by megaventory.
Step2 of the Data Import process of Megaventory (here importing Suppliers)


Upon opening it we see its columns have already been constructed appropriately so all we have to do is fill in as many rows as necessary.
 



Needless to say, fields that need predetermined values are filled in by drop-down menu to avoid problems due to a typo for example. Obviously, any data entry mistakes can also be corrected afterwards individually.
 




And as expected once the data has been entered (or copy-pasted) we just need to upload the file. With a bit of preparation you could have your entire business online and ready in a few minutes!
Uploading the Data


The importing feature is especially useful in two cases. For one thing when you’re just starting to insert your business in megaventory, you can do a couple of test imports manually (i.e. individually) and once you get the hang of it import with the tool the bulk of your data - and save loads of clicking.

For another, when you have to import things regularly (e.g. new contacts or products) it can be a huge timesaver if you want to process data entry in batches. Just let some of the work gather, enter it all in the interim spreadsheet provided by megaventory and upload the lot in a few clicks.

The importing tool is extremely useful.”, laxtongroup.com

Who would use the import tool? Take for example laxtongroup.com, a company selling kiosk and touch screen related products among others. With various types of products, components and items to keep track, inventory management software is a must.


Also, given that their products move relatively fast, the need to keep their catalogues up-to-date is no surprise and need to make heavy use of mass importing regularly.

Depending on the size of your company and the turnover times of your business such simple features can save considerable time and effort from trivial tasks (while also preventing silly errors), resources that can then be redirected to more important things.