Difference between revisions of "Extrafields"

From Dolibarr ERP CRM Wiki
Jump to navigation Jump to search
Line 14: Line 14:
 
== Technical implementation ==
 
== Technical implementation ==
  
Each object have his table in database to store values of etrafields
+
Each object have his table in database to store values of extrafields.
 +
 
 +
[[Datatables extrafield tables models is  :]]
 +
llx_''BaseTableNAme''_extrafields
 +
(
 +
  rowid                    integer AUTO_INCREMENT PRIMARY KEY,
 +
  tms                      timestamp,
 +
  fk_object                integer NOT NULL,
 +
  import_key                varchar(14)
 +
)
 +
 
 +
[[Display page have to include :]]
 +
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
 +
 
 +
[[Load extrafield array in object :]]
 +
$extrafields = new ExtraFields($db);
 +
$extralabels=$extrafields->fetch_name_optionals_label('''ObjectClassName''');
 +
 
 +
[[Load extrafield into object :]]
 +
''$object''->fetch($rowid);
 +
''$object''->fetch_optionals($rowid,$extralabels);
 +
 
 +
[[Before call ''$object''->create or ''$object''->delete :]]
 +
$ret = $extrafields->setOptionalsFromPost($extralabels,''$object'');
 +
 
 +
[[Inside edit page to display extrafields :]]
 +
// Other attributes
 +
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$act,$action);    // Note that $action and $object may have been modified by hook
 +
if (empty($reshook) && ! empty($extrafields->attribute_label))
 +
{
 +
      print ''$object''->showOptionals($extrafields,'edit');
 +
}
 +
 
 +
[[Inside view page to display extrafields :]]
 +
// Other attributes
 +
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$act,$action);    // Note that $action and $object may have been modified by hook
 +
if (empty($reshook) && ! empty($extrafields->attribute_label))
 +
{
 +
      print ''$object''->showOptionals($extrafields);
 +
}

Revision as of 02:40, 20 April 2013

Extrafields

Extrafields allow to add others datas to Dolibarr standard database schema. Introduced in version 3.2, extrafields are now implemented in businesses object :

  • Thirdparties & contacts & users
  • Events
  • Customer Invoices
  • Proposal
  • Products & services
  • Member & member type
  • Orders
  • Projects & project tasks (since 3.4)

Technical implementation

Each object have his table in database to store values of extrafields.

Datatables extrafield tables models is : llx_BaseTableNAme_extrafields (

 rowid                     integer AUTO_INCREMENT PRIMARY KEY,
 tms                       timestamp,
 fk_object                 integer NOT NULL,
 import_key                varchar(14)

)

Display page have to include : require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';

Load extrafield array in object : $extrafields = new ExtraFields($db); $extralabels=$extrafields->fetch_name_optionals_label(ObjectClassName);

Load extrafield into object : $object->fetch($rowid); $object->fetch_optionals($rowid,$extralabels);

[[Before call $object->create or $object->delete :]] $ret = $extrafields->setOptionalsFromPost($extralabels,$object);

Inside edit page to display extrafields : // Other attributes $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$act,$action); // Note that $action and $object may have been modified by hook if (empty($reshook) && ! empty($extrafields->attribute_label)) {

     print $object->showOptionals($extrafields,'edit');

}

Inside view page to display extrafields : // Other attributes $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$act,$action); // Note that $action and $object may have been modified by hook if (empty($reshook) && ! empty($extrafields->attribute_label)) {

     print $object->showOptionals($extrafields);

}