29 require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
41 public $module =
'hrm';
46 public $element =
'skill';
51 public $table_element =
'hrm_skill';
57 public $table_element_line =
'skilldet';
63 public $ismultientitymanaged = 0;
68 public $isextrafieldmanaged = 1;
73 public $picto =
'shapes';
76 const STATUS_DRAFT = 0;
77 const STATUS_VALIDATED = 1;
78 const STATUS_CANCELED = 9;
79 const DEFAULT_MAX_RANK_PER_SKILL = 3;
111 public $fields=array(
112 'rowid' => array(
'type'=>
'integer',
'label'=>
'TechnicalID',
'enabled'=>
'1',
'position'=>1,
'notnull'=>1,
'visible'=>0,
'noteditable'=>
'1',
'index'=>1,
'css'=>
'left',
'comment'=>
"Id"),
113 'label' => array(
'type'=>
'varchar(255)',
'label'=>
'Label',
'enabled'=>
'1',
'position'=>30,
'notnull'=>1,
'visible'=>1,
'searchall'=>1,
'css'=>
'minwidth300',
'cssview'=>
'wordbreak',
'showoncombobox'=>
'2',),
114 'description' => array(
'type'=>
'text',
'label'=>
'Description',
'enabled'=>
'1',
'position'=>60,
'notnull'=>0,
'visible'=>3,),
115 'date_creation' => array(
'type'=>
'datetime',
'label'=>
'DateCreation',
'enabled'=>
'1',
'position'=>500,
'notnull'=>1,
'visible'=>-2,),
116 'tms' => array(
'type'=>
'timestamp',
'label'=>
'DateModification',
'enabled'=>
'1',
'position'=>501,
'notnull'=>0,
'visible'=>-2,),
117 'fk_user_creat' => array(
'type'=>
'integer:User:user/class/user.class.php',
'label'=>
'UserAuthor',
'enabled'=>
'1',
'position'=>510,
'notnull'=>1,
'visible'=>-2,
'foreignkey'=>
'user.rowid',),
118 'fk_user_modif' => array(
'type'=>
'integer:User:user/class/user.class.php',
'label'=>
'UserModif',
'enabled'=>
'1',
'position'=>511,
'notnull'=>-1,
'visible'=>-2,),
119 'required_level' => array(
'type'=>
'integer',
'label'=>
'requiredLevel',
'enabled'=>
'1',
'position'=>50,
'notnull'=>1,
'visible'=>0,),
120 'date_validite' => array(
'type'=>
'integer',
'label'=>
'date_validite',
'enabled'=>
'1',
'position'=>52,
'notnull'=>1,
'visible'=>0,),
121 'temps_theorique' => array(
'type'=>
'double(24,8)',
'label'=>
'temps_theorique',
'enabled'=>
'1',
'position'=>54,
'notnull'=>1,
'visible'=>0,),
122 'skill_type' => array(
'type'=>
'integer',
'label'=>
'SkillType',
'enabled'=>
'1',
'position'=>55,
'notnull'=>1,
'visible'=>1,
'index'=>1,
'css'=>
'minwidth200',
'arrayofkeyval'=>array(
'0'=>
'TypeKnowHow',
'1'=>
'TypeHowToBe',
'9'=>
'TypeKnowledge'),
'default'=>0),
123 'note_public' => array(
'type'=>
'html',
'label'=>
'NotePublic',
'enabled'=>
'1',
'position'=>70,
'notnull'=>0,
'visible'=>0,),
124 'note_private' => array(
'type'=>
'html',
'label'=>
'NotePrivate',
'enabled'=>
'1',
'position'=>71,
'notnull'=>0,
'visible'=>0,),
129 public $date_creation;
131 public $fk_user_creat;
132 public $fk_user_modif;
133 public $required_level;
134 public $date_validite;
135 public $temps_theorique;
138 public $note_private;
152 public $fk_element =
'fk_skill';
162 protected $childtables = array(
'hrm_skillrank',
'hrm_evaluationdet');
169 protected $childtablesoncascade = array(
'hrm_skilldet');
185 global $conf, $langs;
189 if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields[
'rowid'])) {
190 $this->fields[
'rowid'][
'visible'] = 0;
192 if (empty($conf->multicompany->enabled) && isset($this->fields[
'entity'])) {
193 $this->fields[
'entity'][
'enabled'] = 0;
203 foreach ($this->fields as $key => $val) {
204 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
205 unset($this->fields[$key]);
210 if (is_object($langs)) {
211 foreach ($this->fields as $key => $val) {
212 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
213 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
214 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
235 if ($resultcreate > 0) {
240 return $resultcreate;
251 global $conf, $user, $langs;
253 $MaxNumberSkill = isset($conf->global->HRM_MAXRANK) ? $conf->global->HRM_MAXRANK : self::DEFAULT_MAX_RANK_PER_SKILL;
254 $defaultSkillDesc = !empty($conf->global->HRM_DEFAULT_SKILL_DESCRIPTION) ? $conf->global->HRM_DEFAULT_SKILL_DESCRIPTION : $langs->trans(
"NoDescription");
258 require_once __DIR__ .
'/skilldet.class.php';
263 for ($i; $i <= $MaxNumberSkill ; $i++) {
265 $skilldet->description = $defaultSkillDesc .
" " . $i;
266 $skilldet->rankorder = $i;
267 $skilldet->fk_skill = $this->id;
269 $result = $skilldet->create($user);
281 $this->
db->rollback();
295 global $langs, $extrafields;
300 $object =
new self($this->db);
305 $result = $object->fetchCommon($fromid);
306 if ($result > 0 && !empty($object->table_element_line)) {
307 $object->fetchLines();
316 unset($object->fk_user_creat);
317 unset($object->import_key);
320 if (property_exists($object,
'ref')) {
321 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
323 if (property_exists($object,
'label')) {
324 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".$object->label : $this->fields[
'label'][
'default'];
326 if (property_exists($object,
'status')) {
327 $object->status = self::STATUS_DRAFT;
329 if (property_exists($object,
'date_creation')) {
330 $object->date_creation =
dol_now();
332 if (property_exists($object,
'date_modification')) {
333 $object->date_modification = null;
337 if (is_array($object->array_options) && count($object->array_options) > 0) {
338 $extrafields->fetch_name_optionals_label($this->table_element);
339 foreach ($object->array_options as $key => $option) {
340 $shortkey = preg_replace(
'/options_/',
'', $key);
341 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
343 unset($object->array_options[$key]);
349 $object->context[
'createfromclone'] =
'createfromclone';
350 $result = $object->createCommon($user);
353 $this->error = $object->error;
354 $this->errors = $object->errors;
366 if (property_exists($this,
'fk_soc') && $this->fk_soc == $object->socid) {
373 unset($object->context[
'createfromclone']);
380 $this->
db->rollback();
392 public function fetch($id, $ref = null)
395 if ($result > 0 && !empty($this->table_element_line)) {
408 $this->lines = array();
409 require_once __DIR__ .
'/skilldet.class.php';
411 $this->lines = $skilldet->fetchAll(
'ASC',
'',
'',
'', array(
'fk_skill' => $this->
id),
'');
413 if (is_array($this->lines)) {
414 return (count($this->lines) > 0) ? $this->lines : array();
415 } elseif ($this->lines < 0) {
416 $this->errors = array_merge($this->errors, $skilldet->errors);
417 $this->error = $skilldet->error;
434 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, array $filter = array(), $filtermode =
'AND')
444 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
445 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
446 $sql .=
' WHERE t.entity IN ('.getEntity($this->table_element).
')';
448 $sql .=
' WHERE 1 = 1';
452 if (count($filter) > 0) {
453 foreach ($filter as $key => $value) {
454 if ($key ==
't.rowid') {
455 $sqlwhere[] = $key.
'='.$value;
456 } elseif (in_array($this->fields[$key][
'type'], array(
'date',
'datetime',
'timestamp'))) {
457 $sqlwhere[] = $key.
' = \''.$this->
db->idate($value).
'\'';
458 } elseif ($key ==
'customsql') {
459 $sqlwhere[] = $value;
460 } elseif (strpos($value,
'%') ===
false) {
461 $sqlwhere[] = $key.
' IN ('.$this->
db->sanitize($this->
db->escape($value)).
')';
463 $sqlwhere[] = $key.
' LIKE \'%'.$this->
db->escape($value).
'%\'';
467 if (count($sqlwhere) > 0) {
468 $sql .=
" AND (".implode(
" ".$filtermode.
" ", $sqlwhere).
")";
471 if (!empty($sortfield)) {
472 $sql .= $this->
db->order($sortfield, $sortorder);
474 if (!empty($limit)) {
475 $sql .=
' '.$this->db->plimit($limit, $offset);
482 while ($i < ($limit ? min($limit, $num) : $num)) {
483 $obj = $this->
db->fetch_object(
$resql);
485 $record =
new self($this->db);
486 $record->setVarsFromFetchObj($obj);
488 $records[$record->id] = $record;
496 $this->errors[] =
'Error '.$this->db->lasterror();
497 dol_syslog(__METHOD__.
' '.join(
',', $this->errors), LOG_ERR);
522 public function delete(
User $user, $notrigger =
false)
537 if ($this->status < 0) {
538 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
555 global $conf, $langs;
557 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
562 if ($this->status == self::STATUS_VALIDATED) {
563 dol_syslog(get_class($this).
"::validate action abandonned: already validated", LOG_WARNING);
580 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
585 $this->newref = $num;
589 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
590 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
591 $sql .=
" status = ".self::STATUS_VALIDATED;
592 if (!empty($this->fields[
'date_validation'])) {
593 $sql .=
", date_validation = '".$this->db->idate($now).
"'";
595 if (!empty($this->fields[
'fk_user_valid'])) {
596 $sql .=
", fk_user_valid = ".((int) $user->id);
598 $sql .=
" WHERE rowid = ".((int) $this->
id);
600 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
604 $this->error = $this->
db->lasterror();
608 if (!$error && !$notrigger) {
619 $this->oldref = $this->ref;
622 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
624 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filename = CONCAT('".$this->
db->escape($this->newref).
"', SUBSTR(filename, ".(strlen($this->
ref) + 1).
")), filepath = 'skill/".$this->
db->escape($this->newref).
"'";
625 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'skill/".$this->
db->escape($this->
ref).
"' and entity = ".$conf->entity;
628 $error++; $this->error = $this->
db->lasterror();
634 $dirsource = $conf->hrm->dir_output.
'/skill/'.$oldref;
635 $dirdest = $conf->hrm->dir_output.
'/skill/'.$newref;
636 if (!$error && file_exists($dirsource)) {
637 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
639 if (@rename($dirsource, $dirdest)) {
642 $listoffiles =
dol_dir_list($conf->hrm->dir_output.
'/skill/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
643 foreach ($listoffiles as $fileentry) {
644 $dirsource = $fileentry[
'name'];
645 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
646 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
647 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
648 @rename($dirsource, $dirdest);
658 $this->status = self::STATUS_VALIDATED;
665 $this->
db->rollback();
681 if ($this->status <= self::STATUS_DRAFT) {
692 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'SKILL_UNVALIDATE');
702 public function cancel($user, $notrigger = 0)
705 if ($this->status != self::STATUS_VALIDATED) {
716 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'SKILL_CANCEL');
726 public function reopen($user, $notrigger = 0)
729 if ($this->status != self::STATUS_CANCELED) {
740 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'SKILL_REOPEN');
763 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
765 global $conf, $langs, $hookmanager;
767 if (!empty($conf->dol_no_mouse_hover)) {
773 $label =
img_picto(
'', $this->picto).
' <u>'.$langs->trans(
"Skill").
'</u>';
774 if (isset($this->status)) {
775 $label .=
' '.$this->getLibStatut(5);
778 $label .=
'<b>'.$langs->trans(
'Label').
':</b> '.$this->label;
780 $url =
dol_buildpath(
'/hrm/skill_card.php', 1).
'?id='.$this->id;
782 if ($option !=
'nolink') {
784 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
785 if ($save_lastsearch_value == -1 && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
786 $add_save_lastsearch_values = 1;
788 if ($add_save_lastsearch_values) {
789 $url .=
'&save_lastsearch_values=1';
794 if (empty($notooltip)) {
795 if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
796 $label = $langs->trans(
"ShowSkill");
797 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
799 $linkclose .=
' title="'.dol_escape_htmltag($label, 1).
'"';
800 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
802 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
805 if ($option ==
'nolink') {
806 $linkstart =
'<span';
808 $linkstart =
'<a href="'.$url.
'"';
810 $linkstart .= $linkclose.
'>';
811 if ($option ==
'nolink') {
812 $linkend =
'</span>';
817 $result .= $linkstart;
819 if (empty($this->showphoto_on_popup)) {
821 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'classfortooltip"'), 0, 0, $notooltip ? 0 : 1);
825 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
827 list($class, $module) = explode(
'@', $this->picto);
830 $filename = $filearray[0][
'name'];
831 if (!empty($filename)) {
832 $pospoint = strpos($filearray[0][
'name'],
'.');
834 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
835 if (empty($conf->global->{strtoupper($module.
'_'.$class).
'_FORMATLISTPHOTOSASUSERS'})) {
836 $result .=
'<div class="floatleft inline-block valignmiddle divphotoref"><div class="photoref"><img class="photo'.$module.
'" alt="No photo" border="0" src="'.DOL_URL_ROOT.
'/viewimage.php?modulepart='.$module.
'&entity='.$conf->entity.
'&file='.urlencode($pathtophoto).
'"></div></div>';
838 $result .=
'<div class="floatleft inline-block valignmiddle divphotoref"><img class="photouserphoto userphoto" alt="No photo" border="0" src="'.DOL_URL_ROOT.
'/viewimage.php?modulepart='.$module.
'&entity='.$conf->entity.
'&file='.urlencode($pathtophoto).
'"></div>';
843 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'classfortooltip"'), 0, 0, $notooltip ? 0 : 1);
848 if ($withpicto != 2) {
849 $result .= $this->label;
855 global $action, $hookmanager;
856 $hookmanager->initHooks(array(
'skilldao'));
857 $parameters = array(
'id'=>$this->
id,
'getnomurl' => &$result);
858 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
860 $result = $hookmanager->resPrint;
862 $result .= $hookmanager->resPrint;
876 return $this->LibStatut($this->status, $mode);
890 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
893 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
894 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
895 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
896 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
897 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
898 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
901 $statusType =
'status'.$status;
903 if ($status == self::STATUS_CANCELED) {
904 $statusType =
'status6';
907 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
918 $sql =
'SELECT rowid, date_creation as datec, tms as datem,';
919 $sql .=
' fk_user_creat, fk_user_modif';
920 $sql .=
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
921 $sql .=
' WHERE t.rowid = '.((int) $id);
922 $result = $this->
db->query($sql);
924 if ($this->
db->num_rows($result)) {
925 $obj = $this->
db->fetch_object($result);
926 $this->
id = $obj->rowid;
928 $this->user_creation_id = $obj->fk_user_creat;
929 $this->user_modification_id = $obj->fk_user_modif;
930 $this->date_creation = $this->
db->jdate($obj->datec);
931 $this->date_modification = empty($obj->datem) ?
'' : $this->
db->jdate($obj->datem);
934 $this->
db->free($result);
952 $this->initAsSpecimenCommon();
962 $this->lines = array();
965 $result = $objectline->fetchAll(
'ASC',
'rankorder', 0, 0, array(
'customsql'=>
'fk_skill = '.$this->
id));
967 if (is_numeric($result)) {
968 $this->error = $this->error;
969 $this->errors = $this->errors;
972 $this->lines = $result;
984 global $langs, $conf;
987 if (empty($conf->global->hrm_SKILL_ADDON)) {
988 $conf->global->hrm_SKILL_ADDON =
'mod_skill_standard';
991 if (!empty($conf->global->hrm_SKILL_ADDON)) {
994 $file = $conf->global->hrm_SKILL_ADDON.
".php";
995 $classname = $conf->global->hrm_SKILL_ADDON;
998 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
999 foreach ($dirmodels as $reldir) {
1003 $mybool |= @include_once $dir.$file;
1006 if ($mybool ===
false) {
1011 if (class_exists($classname)) {
1012 $obj =
new $classname();
1013 $numref = $obj->getNextValue($this);
1015 if ($numref !=
'' && $numref !=
'-1') {
1018 $this->error = $obj->error;
1023 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1027 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1043 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams = null)
1045 global $conf, $langs;
1048 $includedocgeneration = 0;
1050 $langs->load(
"hrm");
1053 $modele =
'standard_skill';
1055 if (!empty($this->model_pdf)) {
1056 $modele = $this->model_pdf;
1057 } elseif (!empty($conf->global->SKILL_ADDON_PDF)) {
1058 $modele = $conf->global->SKILL_ADDON_PDF;
1062 $modelpath =
"core/modules/hrm/doc/";
1064 if ($includedocgeneration && !empty($modele)) {
1065 $result = $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1080 global $conf, $langs;
1096 $this->
db->commit();
1110 case 0 : $result = $langs->trans(
"TypeKnowHow");
break;
1111 case 1 : $result = $langs->trans(
"TypeHowToBe");
break;
1112 case 9 : $result = $langs->trans(
"TypeKnowledge");
break;
setDraft($user, $notrigger=0)
Set draft status.
createFromClone(User $user, $fromid)
Clone an object into another one.
fetchAll($sortorder= '', $sortfield= '', $limit=0, $offset=0, array $filter=array(), $filtermode= 'AND')
Load list of objects in memory from the database.
deleteCommon(User $user, $notrigger=false, $forcechilddeletion=0)
Delete object in database.
getLinesArray()
Create an array of lines.
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
$conf db
API class for accounts.
dol_now($mode= 'auto')
Return date for now.
Class to manage Dolibarr users.
Class to manage Dolibarr database access.
reopen($user, $notrigger=0)
Set back to validated status.
setEventMessage($mesgs, $style= 'mesgs')
Set event message in dol_events session object.
createSkills($i=1)
createSkills
createCommon(User $user, $notrigger=false)
Create object into database.
fetchLines()
Load object lines in memory from the database.
validate($user, $notrigger=0)
Validate object.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
getLibStatut($mode=0)
Return the label of the status.
dol_strlen($string, $stringencoding= 'UTF-8')
Make a strlen call.
getFieldList($alias= '')
Function to concat keys of fields.
initAsSpecimen()
Initialise object with example values Id must be 0 if object instance is a specimen.
img_picto($titlealt, $picto, $moreatt= '', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt= '', $morecss= '', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
deleteLine(User $user, $idline, $notrigger=false)
Delete a line of object in database.
img_object($titlealt, $picto, $moreatt= '', $pictoisfullpath=false, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
updateCommon(User $user, $notrigger=false)
Update object into database.
dol_sanitizeFileName($str, $newstr= '_', $unaccent=1)
Clean a string to use it as a file name.
dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0)
Scan a directory and return a list of files/directories.
getNomUrl($withpicto=0, $option= '', $notooltip=0, $morecss= '', $save_lastsearch_value=-1)
Return a link to the object card (with optionaly the picto)
__construct(DoliDB $db)
Constructor.
if(isModEnabled('facture')&&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur')&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)&&$user->rights->fournisseur->facture->lire)||(isModEnabled('supplier_invoice')&&$user->rights->supplier_invoice->lire)) if(isModEnabled('don')&&!empty($user->rights->don->lire)) if(isModEnabled('tax')&&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture')&&isModEnabled('commande')&&$user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
create(User $user, $notrigger=false)
Create object into database.
info($id)
Load the info information in the object.
deleteLineCommon(User $user, $idline, $notrigger=false)
Delete a line of object in database.
copy_linked_contact($objFrom, $source= 'internal')
Copy contact from one element to current.
LibStatut($status, $mode=0)
Return the status.
call_trigger($triggerName, $user)
Call trigger based on this instance.
update(User $user, $notrigger=false)
Update object into database.
dol_print_error($db= '', $error= '', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
setStatusCommon($user, $status, $notrigger=0, $triggercode= '')
Set to a status.
dolGetStatus($statusLabel= '', $statusLabelShort= '', $html= '', $statusType= 'status0', $displayMode=0, $url= '', $params=array())
Output the badge of a status.
cancel($user, $notrigger=0)
Set cancel status.
fetch($id, $ref=null)
Load object in memory from the database.
static typeCodeToLabel($code)
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
getNextNumRef()
Returns the reference to the following non used object depending on the active numbering module...
Parent class of all other business classes (invoices, contracts, proposals, orders, ...)
fetchCommon($id, $ref=null, $morewhere= '')
Load object in memory from the database.