Archive for the ‘ERP’ Category

Struggling between hiring an agency or a freelancer? Here is a solution!

Choosing between hiring a technology firm and a freelancer is undoubtedly one of the most confusing things. Everyone go through this struggle. The website is a reflection of a company. It defines their work, and give the visitor a rough idea about the company’s profile. One cannot put the company’s reputation at stake to save a few bucks. In this article, we will try to make your decision easier. There are few things you need to know about project & company before hiring.  Let us check out-

1. Know the scope of your project

Image result for scope of project The first thing you need to know is the scope of your project. Evaluate the needs & requirements of your project. Analyze the team requirement and size. You need to decide what kind of website you want to develop. If your project requires a large team, then a freelancer would not be a good choice for you.

2. Hire the right skill set

Image result for web developer vs web designer The right skill set refers to the difference between designing and development. It makes a huge difference. If you are uncertain about these things, you need to go back to the scope of the project, and then decide.
  • Web Designer: The designer develops the look and flow of the site. They work on HTML & CSS most of the time.
  • Web Developer: They are programmers who are primarily focused on coding, mechanics, and functionality of the website. They work on different frameworks and languages.
Now you can easily select which one do you want.

3. Look at their portfolio & experience

Image result for company portfolio Before jumping into an agreement or contract, you need to check out if they are reliable. Check their previous work, portfolio, website, etc. If you are planning to hire a freelancer, then you should check his/ her work profile on those websites.

4. Get to know them

Image result for teamwork Narrow down the candidates, and get to know more about them. Know more about their previous work, check out their reviews on different platforms. Good communication is critical, especially if you’re working with a remote team. Do they reply to your emails on time? Would it be possible for them to provide templates on time?

5. Hire!

Now, you have crossed all four steps, you are ready to hire the team! Image result for hire! You need to be careful while hiring someone for your work. There will be advantages and disadvantages, but you need to evaluate the pros and cons of both, and then make the decision.  

Problem displaying picklist values in vTiger

A lot of people opt for vTiger as their CRM only because it is Free and Open Source but they just discontinue using vTiger because of its minuscule support and even if they Google their problem then there are number of other developers having the same problem unresolved. For the past few days i was facing a similar problem which i think was merely unattended on vTiger forums or on any other CRM blogs. Problem was that “When we created a module (both back-end & front-end) then after selecting it in menu assigned we found that the assigned values of the Picklist were not being revealed by the Picklist Editor”. I will try to explain the solution to this problem step by step so that it saves someone else’s time. The problem is mainly due to the configuration while creating the module(The Module creation file). In the meantime do checkout an extensive post on Open Source CRM You may need to delete the module in case you have created a custom module. It can be done with the help of following code:


$Vtiger_Utils_Log = true;


$module = Vtiger_Module::getInstance('ModuleName');

if ($module)





Here ‘ModuleName’ depicts the name of your module. Copy this code to any text editor and then save file with name ‘Delete_ModuleName.php’. Once created run this file on your webserver. Once done with this go to your module creation file where we’ll resemble the following format:


$Vtiger_Utils_Log = true;



$module = new Vtiger_Module();

$module->name = 'ModuleName';


$module->initTables();                                     // Initialize all the tables required

$module->initWebservice();                    // Creates a entry in vtiger_ws_entity

$menu = Vtiger_Menu::getInstance('Tools');        // Add the module to the Menu       $menu->addModule($module);

$block1 = new Vtiger_Block();                                    // Add the basic module block



$field1 = new Vtiger_Field();                             //Create fields and add to the module

$field1->name = 'name';

$field1->label = 'Name';

$field1->table = $module->basetable;

$field1->column = 'name';

$field1->columntype = 'VARCHAR(255)';

$field1->uitype = 2;

$field1->typeofdata = 'V~M';                                     // Varchar~Mandatory

$block1->addField($field1);                     // Creates the field and adds to block

$module->setEntityIdentifier($field1);       // Set at-least one field to identifier of module

$field2 = new Vtiger_Field();

$field2->name = 'type';

$field2->label = 'Type';

$field2->table = $module->basetable;

$field2->column = 'type';

$field2->columntype = 'VARCHAR(100)';

$field2->uitype = 15;

$field2->typeofdata = 'V~O';                                     // Varchar~Optional


$field2->setPicklistValues( Array ('Employee', 'Trainee') );         // Picklist values are set

// Common fields that should be in every module, linked to vtiger CRM core table

/**Common fileds that have to be incorporated are:

* assigned_user_id

* createdtime

* modifiedtime


$filter1 = new Vtiger_Filter();                                     // Create default custom filter

$filter1->name = 'All';

$filter1->isdefault = true;


$filter1->addField($field1);                                         // Add fields to the filter created

$filter1->addField($field2, 1);

$filter1->addField($field3, 2);

$module->setDefaultSharing('Public_ReadWrite'); / Set sharing access of this module

$module->enableTools(Array('Import', 'Export'));           //Enable and Disable available tools



Points to be taken care of while creating the ‘vtlib module creation file': 1)       Check your vtlib script for the line “$module->initWebservice()”  as it creates entry in vtiger_ws_entity. 2)       “$module->setEntityIdentifier”    must be set at least once for the mandatory field of the module. 3)       While creating field for picklist do ensure that it refers to “$module->basetable” as without it the picklist values will enter the database but won’t be called in UI. This problem was rampant in the default ‘Payslip’ module creation file as its picklist field expunged this table declaration. After formulating this backend and executing we are left with frontend of our module (modules/ModuleName) and all the files of frontend following it. Now in the file naming ‘ModuleName.php’ we have:

var $list_fields = Array ();

var $list_fields_name = Array();

Here we have to add each and every field (in the format assigned) we have declared in ‘vtlib creation file’ to be listed in UI. Following the above steps can help you eradicated deadly errors with picklist values. Please comment in the blog post if you still face issues and we would be happy to help.

Database name in webERP

Recently we implemented a weberp based solution for one of our esteemed clients. The development server was hosted on apthost and hence we had to manage database from the apthost cpanel. As we are all aware of the fact that cpanel will pre-append the user name of the shared user to the database that you create from it, we wanted weberp to adjust database name according to that (or for that matter, what ever may be the reason for you to chose a different database name. In case you are interested in looking at other solutions, do checkout our post on open source erp solutions. Weberp supports multiple companies in one installation and hence there can be multiple databases. The trick here is that the name of the database must match the name of the sub-directory in the companies folder. We have been getting a lot of queries on if we can change the association of sub-directories with the database name in the webERP. Unfortunately as of weberp version 3.11, There is still no getting around the fact that the database name and the sub directory under the company directory should still be identical. In case, you are using webERP thro its web-services, then you would need to make another change for the end points to work correctly. You will need to change the variable $DatabaseName to refer to the name of your database. The variable is defined in apiapi_php.php
Change this to the name of your company and you will be all set to go. Though this is not a proper method and proper implementation should be introduced to specify the name of the company from the API calls, but this works for now. Good Luck with your webERP implementation !!