A Free Opensource Application for Inventory Management

We have put at the disposal of all, the sources of MerciGest, an application for inventory management. This model file for MS Access will be useful for both, end-users and programmers. The first ones will use the program to manage their business, while the seconds will do changes by their hands to personalize it.

Movements Forms
MerciGest Movements Form

The entire program is stored in an Access file that you can open and displays a menu with these entries: customers and suppliers forms, loads, unloads and returns forms, reports about inventory and stock value and finally a procedure to export all statistics data on MS Excel.
The whole program has been written in VBA ( Visual Basic for Application ) for Access, there are no macros, because MerciGest developer find them very complicated to handle in the future. This application can be useful as a starting point to build our personal program to manage our products in our warehouse.

Windows 10 and My Management Software

This morning I took advantage of the released of the Windows 10 Preview to test my management software with the new Microsoft operating system. I do this work to ensure the installation and use of my software works well on the new system. A little for curiosity too to see the result of the new work by Microsoft.
I must say that the installation is the same as Windows 7 and 8, does not change practically anything and the end result too. The new Windows 10, as well, as having skipped to the next number, has no great revolutions, at first glance only the reappearance of the task bar, the rest seemed to be Windows 8.1, renamed. Of course I may be wrong, of course, I still have to study it a bit, to make critical judgments more truthful. I immediately thought that my plans hadn’t compatibility problems with the new Windows. Going to poke around in the registry, in fact, everything has remained unchanged and that is a good sign for me, that I do not have to work to change my management software.
I installed a version English of Calus, it is because so far Windows 10 is available for testing only in that language, at least that I know. The whole procedure went well and I arrived at the first start. I found a nice surprise, but perhaps even Windows 8.1 had a gray color around the modal windows, very cute and attractive. In short, my program works properly on the new system and I’m confident to the new updates of my software, not caring to update them to make them compatible with the operating system.
I think that Windows 10 will have a great success because it takes the speed and beauty of Windows 8, but retrieves the practical features of Windows 7 that I skipped version 8 and 9, now I can buy Windows 10 because I like it, usually a version I adopt and the subsequent no, it was not always so, and perhaps we will continue in this way. The news, however, that makes me happy is that my management software is beauty and functionality with the new operating system.

Free Software Project

When I was younger I believed in free software, but now I had to think not because at the core of every project is the earning of money and nothing other. It would have been nice to be able to start a project management software which then gave to the world community and was developed by all programmers who want to be part of it. A project such as Linux, where everyone participates in creating free software for the community.
Specifically, let’s talk about my project called MerciGest, an application for warehouse management, born a few years ago and to manage small stocks. I started just for fun MerciGest, about 8 years ago and with the intention of involving more developers as possible, which is why he was born in VBA (Visual Basic for Applications), a language and a development environment very simple. As I have written in many of my other articles, however, the effect was not as hoped, in fact, despite having shared the project on sourceforge I never found anyone to grow the application. In the time it has been downloaded tens of thousands of times between the various websites, but I have not found anyone who has written a few lines of code to enrich it with new features and then share it again. In fact I must say that more than once I found myself in front of requests for help to understand the source code, programmers was developing for its customers, rather than sharing, everyone has always taken care of his own business.
I’m still very fond of the project MerciGest, developing this application I have experienced in many things that I did not think you could do in Access and in these summer days I took the opportunity to translate, at least on the side facing of the user, in 4 languages​​. Now is downloaded hundreds of times a day, not only in Italian but also in English, Spanish and French. Of course I praise, people do not need to start from scratch a design for a warehouse management system! However, the very purpose for which the program was born has failed, who knows, maybe one day someone will develop it for the community.

Management Software for Rent

Management software with its updates and assistance, even on E-Mail, can cost several hundreds of money. At this time would like to be able to spend less without losing quality. For this reason, a good way to distribute the software is for rent. Of course, instead of buying it permanently, rent it for 1 year at lower price, from 20 to 40 dollars, not anymore. The downsides to this way of marketing management software, from the buyers, compared to the standard, is in some points that can be summarized as:

  • We must have trust as software house to not have bad surprises with any price increases in the next year
  • Every year there is to buy a new license key
  • You must pay for the use only and not for the assistance and updates

The positives can be summarized as:

  • Very low total cost of software, deferred in years seems less heavy
  • Software can be used for a period and then may be abandoned
  • Extreme speed in payment and activation online code

For almost a year we’re handing out a couple of our management software in this way, the basic idea can be summarized in these simple steps:

  • Users test the program and if they like it can purchase online in a small time
  • Purchased the serial code with a simple automated procedure to activate the software
  • Following year, if you want, you can buy another serial code to activate the software for another year and so on

We have a software to manage a warehouse that is sold in this way. I have to say that the results are very satisfactory for us and for our customers. The software is called Calus and the price is 32,00 dollars ( USD ) + VAT per year. Each serial number is used to activate the software on three separate machines for a period of one year.
In this period of the test procedure, we had a lot of satisfaction with this method of sale, without the constraints of the subscription purchaser, feel free to use the program even for a moment. However, we hope that our customers renew their trust in us for the following years, also because you can always insert new data into the management software. For our part, we are still willing to sell in this way even after the crisis period (if ever will), whereas we could increase the cost of the serial number for inflation, and we think that in 3-4 years the cost will be around always of a few tens of dollars ( USD ).

Stock Management Software

Calus is our low-cost software for stock inventory management, in this article we will see how to use the data warehouse, where you can get the most important information about our products.

Our cheap software for stock inventory
Our cheap software for stock inventory

The entire program is structured in the same way, that is, lists of values. We have chosen this way to view the data, because you can see so many products at the same time and no spending more time with tedious research. In fact, for each product line there are information such as loading, unloading, customers refunds ( yields), current stock of products and the quantity to be ordered. In addition to this values ​​in the row you can move your mouse on the desired product and display a message indicating photo, barcode, department, shelf, average purchase price, average selling price and at the end last price sale. As in all the programs that we have the opportunity to fulfill orders, search and filter the data, we see how to do it.
To make data sorting you must must click on the column headers. One column can be sorted in ascending or descending order, in the second case you need to click on a column to reverse the sort order already ordered. In any case a sorted column is colored in a darker and even darker if it is ordered in descending.
To search for a value in the list you must click the appropriate button and then enter the values ​​you want to search. You can search for a value from the selected row to the end of the list or from the first row. In addition you can research with the classical values ​​entered,  another way is find a product using the barcode reader, configured on the serial port.
Perhaps the most useful feature, however, is data filters, in fact, with this, you can work with only a part of products, such as all those who have some internal code or description, or those within same category or even just those that have a positive stock or negative or equal to zero.
Add, modify or remove products is very easy and in the same way to print reports or labels.

Barcode Reader for Calus

Calus, the program also works well with other readers bar code, but we wanted to adopt a simple to use, and especially powerful in doing its work: read the barcodes EAN 8 and 13. Our eye has fallen on a device of Datalogic and released a short time ago, this is the QuickScan I QW2100 Lite.

Barcode Reader Datalogic QuickScan I QW2100
Barcode Reader Datalogic QuickScan I QW2100

Here are the specifications:

  • Type of Sensor Imager
  • USB interface
  • Minimum reading distance of 0 cm, and 60 cm
  • Reading Type Linear Imager
  • Weight 119 gr
  • Max Operating Temperature 50 °
  • Type codes read 1D and linear
  • Price €. 97,91 taxes included

We tried this reader barcode with our program in either serial keyboard and everything was simple to set up and especially quick to use. With the sensor imager device reads virtually any barcode, even those printed on transparent surfaces or crumpled paper. There’s no comparison with respect to the optical devices and lasers.
We recommend that you use the player with Calus in serial mode as it is not mandatory to have the focus on the field of barcode.

Reports on Sale of Stock

After entering into our program Calus Plus the basic functions such as load management, discharges and orders, we’ll work on aggregated data, the work of this month will focus on printing reports the sales of stock. In practice, will insert a new print template, only for activated copies, which will have the results of the purchases and sales.
What you plan to do it in a new window before printing, where you choose the start and end date of the report, a particular customer or supplier, or a group of them, and finally one or more categories of items. The draft of the new release:

Sales Report in Calus Plus
Sales Report in Calus Plus

Obviously this is just an initial outline , but it makes good what we’re going to develop this month. The data will be listed as follows :

  1. Amount of stock at the date of commencement report
  2. Product value at the date of the beginning of the relationship
  3. Amount of product handled from the start date to the final
  4. Value of the product moved from the initial to the final date

In the meantime, it is possible to change the project, as is the case almost always, because only when we realize it is implemented if a software is good or not, but we will remain faithful to this program.
Along with this placement will bring forward the improvement of the program, such as putting the value of tax in the master item that will be a default value during movement and with it the opportunity to enter a discount to customers on certain types of categories of articles in order to fit it in during an automatic warehouse handling.
Keep following this blog because we will explain as it passes the time, all the updates that we would like to bring to our management software.

Invoices with Details of the Goods

We have introduced a new printer template for invoices in our free software for warehouse management Calus Plus. Now instead of printing the invoice to an HTML page you can have the print preview and print directly from the program. This new feature is available only in versions of the software activated.

Invoice in Calus Plus
Invoice in Calus Plus

As you can see from the image, in the print template there’s also a space for company logo, to prepare it just go into business data and select an image, possibly with white background, the same as paper on which to print. At the bottom of the invoice we have been inserted fields like: conveyor, appearance, weight and number of packages of the goods. Exactly those fields that we had entered from version 3.0 of the software.
With the release of this update, we have also added a feature that certainly will be very pleasing to our users of the free version: we have eliminated the display startup of that annoying ads banner. By now the basic program can be used with no slowdown and no limit. Obviously if you want to use the advanced features of Calus Plus you have to pay a little more than 30 dollars for annual fee for 3 workstations, a small price for a great simple and useful software for inventory and billing.

How to Earn with Sale of Software

In this blog I try to teach in the best way I know how to make my readers of experienced programmers ( here there would be a good smile ). I try to encourage above to find the information in the network, the curiosity to know, because I find it very important for learning the theory, I ‘m only trying to show with my experience of these years of work, how to put the acquired knowledge into practice. But a good programmer knows not only how to develop applications, but also how to sell them, because, unless you are in a major corporation, can not live without earning from his grueling job. So, on this short article I want to convey to my experience of these days maybe I hope will be of help to others.
Anyone who follows this blog knows the story of one of my small application in Access for warehouse. For me to know, about 4 years ago, I thought of my deploy a small application created as an offshoot of the draft of my company’s flagship software. For convenience and speed drafts to my software I create them in Access and then I implement them on stand-alone desktop programs. The distribution of the program was fine, I had about 15 downloads a day, but the step that I was expecting did, at least 1 or 2 per cent, and that is to upgrade to the more professional program fee, proved to be a failure. Out of more than ten thousand downloads no one has bothered to upgrade to the paid version and it costs about 100 $.
Around the program I have seen a lot of interest, daily new users were entering the name of the application, this means that there is word of mouth. In the last two weeks I have tried to take advantage of this notoriety to gain something. I have updated the application by entering other features and offered for sale at the price of $ 6.50. Certainly did not think I could sell 15 copies a day, but 1 or 2 certainly, with what it costs! Now distribute the source code of version 1.5.0 and version 2.0.0 for free for a fee. Well, in two weeks of sales nobody bought it yet, it is not possible for so little people do not take it! Many downloading the previous version, then return to try the demo version and then come back again to try to take the final version, much more palatable because it does many more things. In recent days, the research that page to have become “the program name but 2.0.0 free”, “name RGPSoft program 2.0.0 free” and so on. The interest has since remained, but no one wants to spend that meager, it seems to me incredible! I understand if the program does not like it, even then I would purchase, but if you need it for work, then why not spend those few dollars? Simple, “I do not want to spend for the software!”, That’s all!
In these years I have learned from this experience and I understood better, that it is useless to lower the prices of management to increase sales, because even if it costs a penny, who does not want to spend on a corporate program will continue to look for free. Do not ever belittle their work, put the money you think the software is worth the cost and distribute it a that price, better to sell less much less than little.

Dynamic Graph in PHP

Draw simple shapes such as a circle, using the GD graphics library of PHP is very easy, especially in this new article we will see how to use these features to create a simple dynamic graph taking data from a MySQL table.
First we have to create the database that will accommodate our data, a very simple table with the points on the graph, we can insert a field x and y field of type integer. Now we just have to prepare your form to enter data to our user, we also need to set limits, say 400 points on the x and y axis.

<?php

  // Get data
  $sX = $_REQUEST['x'];
  $sY = $_REQUEST['y'];

  $nError = 0;
  if (strlen($sX) > 0 && strlen($sY) > 0)
  {
    if ($sX >= 0 && $sY >= 0)
    {
	  if ($sX <= 400 && $sY <= 400)
	  {
	    // I open the connection points to the table
	    // in the graph database and insert the values
            $my_server = mysql_connect("localhost", "root", "")
              or trigger_error(mysql_error(),E_USER_ERROR);
	    mysql_select_db("grafico", $my_server);
	    $query = "INSERT INTO punti (x, y) VALUES($sX, $sY)";
	    mysql_query($query, $my_server) or die(mysql_error());
	    mysql_close($my_server);
	  }
	  else
	   $nError = 2;
    }
    else
	  $nError = 1;
  }

?>

<html>
<head><title>Dynamic Graph</title></head>

<body bgcolor="#C0C0C0">

   <h1 align="center"
       style="color:#444444;font-family:trebuchet,Tahoma,
       Verdana;font-size:14px;font-weight:bold">
	A Dynamic Graph Using GD Library
   </h1>

<?php

	if ($nError > 0)
	   echo '<p align="center"
              style="color:#E70000;font-family:trebuchet,
              Tahoma,Verdana;font-size:14px;font-weight:normal">';

	switch ($nError)
	{
	case 1:
	   echo 'The values of the points must be greater than zero!';
	   break;
	case 2:
	   echo 'The point values must be less than 400!';
	   break;
	}

	if ($nError > 0)
		echo '</p>';

?>

	<div align="center"><img src="plane.php"></div>

	<br>

	<form action="#" method="POST" name="punti">
	<table width="800" border="0" align="center"
           cellpadding="0" cellspacing="0"
             style="border: 1px solid #666666">
	<tr>
	   <td width="400" height="100" align="center"
                valign="middle">
	   <label>Insert X Axis:
	   <input type="text" name="x" value="0"
              title="Insert X Axis of Point">
	   </td>
	   <td width="400" height="100" align="center"
              valign="middle">
	   <label>Insert Y Axis:
	   <input type="text" name="y" value="0"
             title="Insert Y Axis of Point">
	   </td>
	</tr>
	<tr>
	   <td height="100" colspan="2" align="center"
               valign="middle">
	   <input type="submit" name="invia"
              title="Click to send values"
                   value="SaveData">
	   </td>
	</tr>
	</table>
	</form>

</body>

</html>

This above is the code of the page that invokes the image of GD, is known as the beginning of the variables take the data and when I have more of a point to start drawing lines, as can be derived from the code page of the drawing.

<?php

	// I open the data connection to retrieve data
	$my_server = mysql_connect("localhost", "root", "") or
            trigger_error(mysql_error(),E_USER_ERROR);
	mysql_select_db("graph", $my_server);
	$query = "SELECT * FROM points";
	$my_points = mysql_query($query, $my_server) or
            die(mysql_error());
	$row_points = mysql_fetch_assoc($my_points);
	$num_points = mysql_num_rows($my_points);

	// Prepare drawing
	$img = imagecreate(400, 400);
	$clr_background = imagecolorallocate($img, 192, 192, 192);
	imagefill($img, 0, 0, $clr_background);
	$clr_line = imagecolorallocate($img, 0, 0, 0);

	// Drawing the points and connect them
	for ($i = 1; $i < $num_points; $i++)
	{
		$x0 = $row_points['x'];
		$y0 = $row_points['y'];

		$row_points = mysql_fetch_assoc($my_points);

		$x = $row_points['x'];
		$y = $row_points['y'];

		imageline($img, $x0, $y0, $x, $y, $clr_line);
	}

	mysql_free_result($my_points);
	mysql_close($my_server);
	imagepng($img);
	imagedestroy($img);

?>

This is the code of the page on which I called “plane.php” which is the one that draws the image with the GD library. If you have followed my past articles you will see how simple it is to create dynamic graphs in PHP. From now you can pick any exercise and also with the creation of designs that come from data residing on a MySQL database. As always I will I provide you with a brick and then curiosity and desire to experiment you do the rest.