function add_custom_field($name, $label, $data_type, $max_size, $required_option, $default_value, $deleted, $ext1, $ext2, $ext3, $audited, $mass_update = 0, $duplicate_merge = 0)
 {
     $module_name = $this->module_name;
     $fields_meta_data = new FieldsMetaData();
     $fields_meta_data->name = $name;
     $fields_meta_data->label = $label;
     $fields_meta_data->module = $module_name;
     $fields_meta_data->data_type = $data_type;
     $fields_meta_data->max_size = $max_size;
     $fields_meta_data->required_option = $required_option;
     $fields_meta_data->default_value = $default_value;
     $fields_meta_data->deleted = $deleted;
     $fields_meta_data->ext1 = $ext1;
     $fields_meta_data->ext2 = $ext2;
     $fields_meta_data->ext3 = $ext3;
     $fields_meta_data->audited = $audited;
     $fields_meta_data->duplicate_merge = $duplicate_merge;
     $fields_meta_data->mass_update = $mass_update;
     $fields_meta_data->insert();
     $custom_table_name = $this->_get_custom_tbl_name();
     $custom_table_exists = CustomFieldsTableSchema::custom_table_exists($custom_table_name);
     $custom_fields_table_schema = new CustomFieldsTableSchema($custom_table_name);
     if (!$custom_table_exists) {
         $custom_fields_table_schema->create_table();
     }
     $result = $custom_fields_table_schema->add_column($name, $data_type, $required_option, $default_value);
     return $result;
 }
//// save the metadata to the fields_meta_data table
////
foreach ($fields_meta_data->column_fields as $field) {
    if (isset($_REQUEST[$field])) {
        $fields_meta_data->{$field} = $_REQUEST[$field];
    }
}
$fields_meta_data->save();
////
//// create/modify the custom field table
////
$new_field = empty($_REQUEST['id']);
$new_field = true;
$custom_table_name = strtolower($fields_meta_data->custom_module) . '_cstm';
$custom_fields_table_schema = new CustomFieldsTableSchema($custom_table_name);
if (!CustomFieldsTableSchema::custom_table_exists($custom_table_name)) {
    $custom_fields_table_schema->create_table();
}
$column_name = $fields_meta_data->name;
$field_label = $fields_meta_data->label;
$data_type = $fields_meta_data->data_type;
$max_size = $fields_meta_data->max_size;
$required = $fields_meta_data->required_option;
$default_value = $fields_meta_data->default_value;
$module_dir = $fields_meta_data->custom_module;
if ($new_field) {
    $custom_fields_table_schema->add_column($column_name, $data_type, $required, $default_value);
    $class_name = $beanList[$fields_meta_data->custom_module];
    $custom_field = new DynamicField($fields_meta_data->custom_module);
    require_once "modules/{$module_dir}/{$class_name}.php";
    $sugarbean_module = new $class_name();