27require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
39 public $module =
'mymodule';
44 public $element =
'myobject';
49 public $table_element =
'mymodule_myobject';
59 public $picto =
'fa-file';
62 const STATUS_DRAFT = 0;
63 const STATUS_VALIDATED = 1;
64 const STATUS_CANCELED = 9;
113 "rowid" => array(
"type" =>
"integer",
"label" =>
"TechnicalID",
"enabled" => 1,
'position' => 1,
'notnull' => 1,
"visible" => 0,
"noteditable" => 1,
"index" => 1,
"css" =>
"left",
"comment" =>
"Id"),
114 "ref" => array(
"type" =>
"varchar(128)",
"label" =>
"Ref",
"enabled" => 1,
'position' => 20,
'notnull' => 1,
"visible" => 1,
"index" => 1,
"searchall" => 1,
"showoncombobox" => 1,
"validate" => 1,
"comment" =>
"Reference of object"),
115 "label" => array(
"type" =>
"varchar(255)",
"label" =>
"Label",
"enabled" => 1,
'position' => 30,
'notnull' => 0,
"visible" => 1,
"alwayseditable" =>
"1",
"searchall" => 1,
"css" =>
"minwidth300",
"cssview" =>
"wordbreak",
"help" =>
"Help text",
"showoncombobox" =>
"2",
"validate" => 1,),
116 "amount" => array(
"type" =>
"price",
"label" =>
"Amount",
"enabled" => 1,
'position' => 40,
'notnull' => 0,
"visible" => 1,
"default" =>
"null",
"isameasure" => 1,
"help" =>
"Help text for amount",
"validate" => 1,),
117 "qty" => array(
"type" =>
"real",
"label" =>
"Qty",
"enabled" => 1,
'position' => 45,
'notnull' => 0,
"visible" => 1,
"default" =>
"0",
"isameasure" => 1,
"css" =>
"maxwidth75imp",
"help" =>
"Help text for quantity",
"validate" => 1,),
118 "fk_soc" => array(
"type" =>
"integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))",
"label" =>
"ThirdParty",
"picto" =>
"company",
"enabled" =>
"isModEnabled('societe')",
'position' => 50,
'notnull' => -1,
"visible" => 1,
"index" => 1,
"css" =>
"maxwidth500 widthcentpercentminusxx",
"csslist" =>
"tdoverflowmax150",
"help" =>
"OrganizationEventLinkToThirdParty",
"validate" => 1,),
119 "fk_project" => array(
"type" =>
"integer:Project:projet/class/project.class.php:1",
"label" =>
"Project",
"picto" =>
"project",
"enabled" =>
"isModEnabled('project')",
'position' => 52,
'notnull' => -1,
"visible" =>
"-1",
"index" => 1,
"css" =>
"maxwidth500 widthcentpercentminusxx",
"csslist" =>
"tdoverflowmax150",
"validate" => 1,),
120 "description" => array(
"type" =>
"text",
"label" =>
"Description",
"enabled" => 1,
'position' => 60,
'notnull' => 0,
"visible" =>
"3",
"validate" => 1,),
121 "note_public" => array(
"type" =>
"html",
"label" =>
"NotePublic",
"enabled" => 1,
'position' => 61,
'notnull' => 0,
"visible" => 0,
"cssview" =>
"wordbreak",
"validate" => 1,),
122 "note_private" => array(
"type" =>
"html",
"label" =>
"NotePrivate",
"enabled" => 1,
'position' => 62,
'notnull' => 0,
"visible" => 0,
"cssview" =>
"wordbreak",
"validate" => 1,),
123 "date_creation" => array(
"type" =>
"datetime",
"label" =>
"DateCreation",
"enabled" => 1,
'position' => 500,
'notnull' => 1,
"visible" => -2,),
124 "tms" => array(
"type" =>
"timestamp",
"label" =>
"DateModification",
"enabled" => 1,
'position' => 501,
'notnull' => 0,
"visible" => -2,),
125 "fk_user_creat" => array(
"type" =>
"integer:User:user/class/user.class.php",
"label" =>
"UserAuthor",
"picto" =>
"user",
"enabled" => 1,
'position' => 510,
'notnull' => 1,
"visible" => -2,
"foreignkey" =>
"0",
"csslist" =>
"tdoverflowmax150",),
126 "fk_user_modif" => array(
"type" =>
"integer:User:user/class/user.class.php",
"label" =>
"UserModif",
"picto" =>
"user",
"enabled" => 1,
'position' => 511,
'notnull' => -1,
"visible" => -2,
"csslist" =>
"tdoverflowmax150",),
127 "last_main_doc" => array(
"type" =>
"varchar(255)",
"label" =>
"LastMainDoc",
"enabled" => 1,
'position' => 600,
'notnull' => 0,
"visible" => 0,),
128 "import_key" => array(
"type" =>
"varchar(14)",
"label" =>
"ImportId",
"enabled" => 1,
'position' => 1000,
'notnull' => -1,
"visible" => -2,),
129 "model_pdf" => array(
"type" =>
"varchar(255)",
"label" =>
"Model pdf",
"enabled" => 1,
'position' => 1010,
'notnull' => -1,
"visible" => 0,),
130 "status" => array(
"type" =>
"integer",
"label" =>
"Status",
"enabled" => 1,
'position' => 2000,
'notnull' => 1,
"visible" => 1,
"index" => 1,
"arrayofkeyval" => array(
"0" =>
"Draft",
"1" =>
"Validated",
"9" =>
"Canceled"),
"validate" => 1,),
175 public $fk_user_creat;
180 public $fk_user_modif;
185 public $last_main_doc;
240 $this->ismultientitymanaged = 0;
241 $this->isextrafieldmanaged = 1;
243 if (!
getDolGlobalInt(
'MAIN_SHOW_TECHNICAL_ID') && isset($this->fields[
'rowid']) && !empty($this->fields[
'ref'])) {
244 $this->fields[
'rowid'][
'visible'] = 0;
246 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
247 $this->fields[
'entity'][
'enabled'] = 0;
257 foreach ($this->fields as $key => $val) {
258 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
259 unset($this->fields[$key]);
264 if (is_object($langs)) {
265 foreach ($this->fields as $key => $val) {
266 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
267 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
268 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
288 return $resultcreate;
300 global $langs, $extrafields;
310 $result =
$object->fetchCommon($fromid);
311 if ($result > 0 && !empty(
$object->table_element_line)) {
325 if (property_exists(
$object,
'ref')) {
326 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
328 if (property_exists(
$object,
'label')) {
329 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
331 if (property_exists(
$object,
'status')) {
332 $object->status = self::STATUS_DRAFT;
334 if (property_exists(
$object,
'date_creation')) {
337 if (property_exists(
$object,
'date_modification')) {
338 $object->date_modification =
null;
342 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
343 $extrafields->fetch_name_optionals_label($this->table_element);
344 foreach (
$object->array_options as $key => $option) {
345 $shortkey = preg_replace(
'/options_/',
'', $key);
346 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
349 unset(
$object->array_options[$key]);
355 $object->context[
'createfromclone'] =
'createfromclone';
356 $result =
$object->createCommon($user);
371 if (!empty(
$object->socid) && property_exists($this,
'fk_soc') && $this->fk_soc ==
$object->socid) {
378 unset(
$object->context[
'createfromclone']);
385 $this->db->rollback();
399 public function fetch($id, $ref =
null, $noextrafields = 0, $nolines = 0)
401 $result = $this->
fetchCommon($id, $ref,
'', $noextrafields);
402 if ($result > 0 && !empty($this->table_element_line) && empty($nolines)) {
416 $this->lines = array();
437 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 1000, $offset = 0,
string $filter =
'', $filtermode =
'AND')
445 $sql .=
" FROM ".$this->db->prefix().$this->table_element.
" as t";
446 if (isset($this->isextrafieldmanaged) && $this->isextrafieldmanaged == 1) {
447 $sql .=
" LEFT JOIN ".$this->db->prefix().$this->table_element.
"_extrafields as te ON te.fk_object = t.rowid";
449 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
450 $sql .=
" WHERE t.entity IN (".getEntity($this->element).
")";
452 $sql .=
" WHERE 1 = 1";
459 $this->errors[] = $errormessage;
460 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
464 if (!empty($sortfield)) {
465 $sql .= $this->db->order($sortfield, $sortorder);
467 if (!empty($limit)) {
468 $sql .= $this->db->plimit($limit, $offset);
471 $resql = $this->db->query($sql);
473 $num = $this->db->num_rows($resql);
475 while ($i < ($limit ? min($limit, $num) : $num)) {
476 $obj = $this->db->fetch_object($resql);
478 $record =
new self($this->db);
479 $record->setVarsFromFetchObj($obj);
481 if (!empty($record->isextrafieldmanaged)) {
482 $record->fetch_optionals();
485 $records[$record->id] = $record;
489 $this->db->free($resql);
493 $this->errors[] =
'Error '.$this->db->lasterror();
494 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
519 public function delete(
User $user, $notrigger = 0)
536 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
555 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
560 if ($this->
status == self::STATUS_VALIDATED) {
561 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
578 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
583 $this->newref = $num;
587 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
589 if (!empty($this->fields[
'ref'])) {
590 $sql .=
" ref = '".$this->db->escape($num).
"',";
592 $sql .=
" status = ".self::STATUS_VALIDATED;
593 if (!empty($this->fields[
'date_validation'])) {
594 $sql .=
", date_validation = '".$this->db->idate($now).
"'";
596 if (!empty($this->fields[
'fk_user_valid'])) {
597 $sql .=
", fk_user_valid = ".((int) $user->id);
599 $sql .=
" WHERE rowid = ".((int) $this->
id);
601 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
602 $resql = $this->db->query($sql);
605 $this->error = $this->db->lasterror();
609 if (!$error && !$notrigger) {
611 $result = $this->
call_trigger(
'MYOBJECT_VALIDATE', $user);
620 $this->oldref = $this->ref;
623 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
625 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filename = CONCAT('".$this->db->escape($this->newref).
"', SUBSTR(filename, ".(strlen($this->
ref) + 1).
")), filepath = 'myobject/".$this->db->escape($this->newref).
"'";
626 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'myobject/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
627 $resql = $this->db->query($sql);
630 $this->error = $this->db->lasterror();
632 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'myobject/".$this->db->escape($this->newref).
"'";
633 $sql .=
" WHERE filepath = 'myobject/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
634 $resql = $this->db->query($sql);
637 $this->error = $this->db->lasterror();
643 $dirsource = $conf->mymodule->dir_output.
'/myobject/'.$oldref;
644 $dirdest = $conf->mymodule->dir_output.
'/myobject/'.$newref;
645 if (!$error && file_exists($dirsource)) {
646 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
648 if (@rename($dirsource, $dirdest)) {
651 $listoffiles =
dol_dir_list($conf->mymodule->dir_output.
'/myobject/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
652 foreach ($listoffiles as $fileentry) {
653 $dirsource = $fileentry[
'name'];
654 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
655 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
656 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
657 @rename($dirsource, $dirdest);
667 $this->
status = self::STATUS_VALIDATED;
674 $this->db->rollback();
690 if ($this->
status <= self::STATUS_DRAFT) {
701 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'MYMODULE_MYOBJECT_UNVALIDATE');
711 public function cancel($user, $notrigger = 0)
714 if ($this->
status != self::STATUS_VALIDATED) {
725 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'MYMODULE_MYOBJECT_CANCEL');
735 public function reopen($user, $notrigger = 0)
738 if ($this->
status == self::STATUS_VALIDATED) {
749 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'MYMODULE_MYOBJECT_REOPEN');
766 return [
'optimize' => $langs->trans(
"ShowMyObject")];
768 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u>'.$langs->trans(
"MyObject").
'</u>';
769 if (isset($this->
status)) {
770 $datas[
'picto'] .=
' '.$this->getLibStatut(5);
772 if (property_exists($this,
'ref')) {
773 $datas[
'ref'] =
'<br><b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
775 if (property_exists($this,
'label')) {
776 $datas[
'ref'] =
'<br>'.$langs->trans(
'Label').
':</b> '.$this->label;
792 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
794 global $conf, $langs, $hookmanager;
796 if (!empty($conf->dol_no_mouse_hover)) {
803 'objecttype' => $this->element.($this->module ?
'@'.$this->module :
''),
806 $classfortooltip =
'classfortooltip';
809 $classfortooltip =
'classforajaxtooltip';
810 $dataparams =
' data-params="'.dol_escape_htmltag(json_encode($params)).
'"';
816 $url =
dol_buildpath(
'/mymodule/myobject_card.php', 1).
'?id='.$this->id;
818 if ($option !==
'nolink') {
820 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
821 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
822 $add_save_lastsearch_values = 1;
824 if ($url && $add_save_lastsearch_values) {
825 $url .=
'&save_lastsearch_values=1';
830 if (empty($notooltip)) {
832 $label = $langs->trans(
"ShowMyObject");
833 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
835 $linkclose .= ($label ?
' title="'.dol_escape_htmltag($label, 1).
'"' :
' title="tocomplete"');
836 $linkclose .= $dataparams.
' class="'.$classfortooltip.($morecss ?
' '.$morecss :
'').
'"';
838 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
841 if ($option ==
'nolink' || empty($url)) {
842 $linkstart =
'<span';
844 $linkstart =
'<a href="'.$url.
'"';
846 $linkstart .= $linkclose.
'>';
847 if ($option ==
'nolink' || empty($url)) {
848 $linkend =
'</span>';
853 $result .= $linkstart;
855 if (empty($this->showphoto_on_popup)) {
857 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), (($withpicto != 2) ?
'class="paddingright"' :
''), 0, 0, $notooltip ? 0 : 1);
861 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
863 list($class, $module) = explode(
'@', $this->picto);
866 $filename = $filearray[0][
'name'];
867 if (!empty($filename)) {
868 $pospoint = strpos($filearray[0][
'name'],
'.');
870 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
872 $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>';
874 $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>';
879 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'"'), 0, 0, $notooltip ? 0 : 1);
884 if ($withpicto != 2) {
885 $result .= $this->ref;
891 global $action, $hookmanager;
892 $hookmanager->initHooks(array($this->element.
'dao'));
893 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
894 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
896 $result = $hookmanager->resPrint;
898 $result .= $hookmanager->resPrint;
913 global $conf, $langs;
915 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
917 $return =
'<div class="box-flex-item box-flex-grow-zero">';
918 $return .=
'<div class="info-box info-box-sm">';
919 $return .=
'<span class="info-box-icon bg-infobox-action">';
921 $return .=
'</span>';
922 $return .=
'<div class="info-box-content">';
923 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl() : $this->ref).
'</span>';
924 if ($selected >= 0) {
925 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
927 if (property_exists($this,
'label')) {
928 $return .=
' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.
'</div>';
930 if (property_exists($this,
'thirdparty') && is_object($this->thirdparty)) {
931 $return .=
'<br><div class="info-box-ref tdoverflowmax150">'.$this->thirdparty->getNomUrl(1).
'</div>';
933 if (property_exists($this,
'amount')) {
935 $return .=
'<span class="info-box-label amount">'.price($this->amount, 0, $langs, 1, -1, -1, $conf->currency).
'</span>';
937 if (method_exists($this,
'getLibStatut')) {
938 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
980 if (is_null($status)) {
984 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
987 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
988 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
989 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
990 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
991 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
992 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
995 $statusType =
'status'.$status;
997 if ($status == self::STATUS_CANCELED) {
998 $statusType =
'status6';
1001 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
1012 $sql =
"SELECT rowid,";
1013 $sql .=
" date_creation as datec, tms as datem";
1014 if (!empty($this->fields[
'date_validation'])) {
1015 $sql .=
", date_validation as datev";
1017 if (!empty($this->fields[
'fk_user_creat'])) {
1018 $sql .=
", fk_user_creat";
1020 if (!empty($this->fields[
'fk_user_modif'])) {
1021 $sql .=
", fk_user_modif";
1023 if (!empty($this->fields[
'fk_user_valid'])) {
1024 $sql .=
", fk_user_valid";
1026 $sql .=
" FROM ".MAIN_DB_PREFIX.$this->table_element.
" as t";
1027 $sql .=
" WHERE t.rowid = ".((int) $id);
1029 $result = $this->db->query($sql);
1031 if ($this->db->num_rows($result)) {
1032 $obj = $this->db->fetch_object($result);
1034 $this->
id = $obj->rowid;
1036 if (!empty($this->fields[
'fk_user_creat'])) {
1037 $this->user_creation_id = $obj->fk_user_creat;
1039 if (!empty($this->fields[
'fk_user_modif'])) {
1040 $this->user_modification_id = $obj->fk_user_modif;
1042 if (!empty($this->fields[
'fk_user_valid'])) {
1043 $this->user_validation_id = $obj->fk_user_valid;
1045 $this->date_creation = $this->db->jdate($obj->datec);
1046 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
1047 if (!empty($obj->datev)) {
1048 $this->date_validation = empty($obj->datev) ?
'' : $this->db->jdate($obj->datev);
1052 $this->db->free($result);
1080 $this->lines = array();
1083 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0,
'(fk_myobject:=:'.((
int) $this->
id).
')');
1085 if (is_numeric($result)) {
1089 $this->lines = $result;
1090 return $this->lines;
1101 global $langs, $conf;
1102 $langs->load(
"mymodule@mymodule");
1105 $conf->global->MYMODULE_MYOBJECT_ADDON =
'mod_myobject_standard';
1115 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
1116 foreach ($dirmodels as $reldir) {
1120 $mybool = $mybool || @include_once $dir.$file;
1128 if (class_exists($classname)) {
1129 $obj =
new $classname();
1130 '@phan-var-force ModeleNumRefMyObject $obj';
1131 $numref = $obj->getNextValue($this);
1133 if ($numref !=
'' && $numref !=
'-1') {
1136 $this->error = $obj->error;
1141 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1145 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1161 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1166 $includedocgeneration = 0;
1168 $langs->load(
"mymodule@mymodule");
1171 $modele =
'standard_myobject';
1173 if (!empty($this->model_pdf)) {
1174 $modele = $this->model_pdf;
1180 $modelpath =
"core/modules/mymodule/doc/";
1182 if ($includedocgeneration && !empty($modele)) {
1183 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1203 return parent::validateField(
$fields, $fieldKey, $fieldValue);
1231 $this->db->commit();
1240require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
1271 $this->isextrafieldmanaged = 0;
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Parent class of all other business classes (invoices, contracts, proposals, orders,...
deleteLineCommon(User $user, $idline, $notrigger=0)
Delete a line of object in database.
commonGenerateDocument($modelspath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams=null)
Common function for all objects extending CommonObject for generating documents.
setErrorsFromObject($object)
setErrorsFromObject
createCommon(User $user, $notrigger=0)
Create object in the database.
getFieldList($alias='', $excludefields=array())
Function to concat keys of fields.
updateCommon(User $user, $notrigger=0)
Update object into database.
setStatusCommon($user, $status, $notrigger=0, $triggercode='')
Set to a status.
initAsSpecimenCommon()
Initialise object with example values Id must be 0 if object instance is a specimen.
copy_linked_contact($objFrom, $source='internal')
Copy contact from one element to current.
fetchLinesCommon($morewhere='', $noextrafields=0)
Load object in memory from the database.
fetchCommon($id, $ref=null, $morewhere='', $noextrafields=0)
Load object in memory from the database.
deleteCommon(User $user, $notrigger=0, $forcechilddeletion=0)
Delete object in database.
call_trigger($triggerName, $user)
Call trigger based on this instance.
Parent class for class inheritance lines of business objects This class is useless for the moment so ...
Class to manage Dolibarr database access.
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
createFromClone(User $user, $fromid)
Clone an object into another one.
getKanbanView($option='', $arraydata=null)
Return a thumb for kanban views.
getLibStatut($mode=0)
Return the label of the status.
create(User $user, $notrigger=0)
Create object into database.
update(User $user, $notrigger=0)
Update object into database.
getTooltipContentArray($params)
getTooltipContentArray
reopen($user, $notrigger=0)
Set back to validated status.
setDraft($user, $notrigger=0)
Set draft status.
getNomUrl($withpicto=0, $option='', $notooltip=0, $morecss='', $save_lastsearch_value=-1)
Return a link to the object card (with optionally the picto)
LibStatut($status, $mode=0)
Return the label of a given status.
validateField($fields, $fieldKey, $fieldValue)
Return validation test result for a field.
getNextNumRef()
Returns the reference to the following non used object depending on the active numbering module.
fetchAll($sortorder='', $sortfield='', $limit=1000, $offset=0, string $filter='', $filtermode='AND')
Load list of objects in memory from the database.
initAsSpecimen()
Initialize object with example values Id must be 0 if object instance is a specimen.
__construct(DoliDB $db)
Constructor.
deleteLine(User $user, $idline, $notrigger=0)
Delete a line of object in database.
cancel($user, $notrigger=0)
Set cancel status.
fetchLines($noextrafields=0)
Load object lines in memory from the database.
info($id)
Load the info information in the object.
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
fetch($id, $ref=null, $noextrafields=0, $nolines=0)
Load object in memory from the database.
getLabelStatus($mode=0)
Return the label of the status.
validate($user, $notrigger=0)
Validate object.
$fields
'type' field format: 'integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortf...
getLinesArray()
Create an array of lines.
$parent_element
To overload.
$fk_parent_attribute
To overload.
__construct(DoliDB $db)
Constructor.
Class to manage Dolibarr users.
print $langs trans("Ref").' m titre as m m statut as status
Or an array listing all the potential status of the object: array: int of the status => translated la...
dol_dir_list($utf8_path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0, $nbsecondsold=0)
Scan a directory and return a list of files/directories.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
forgeSQLFromUniversalSearchCriteria($filter, &$errorstr='', $noand=0, $nopar=0, $noerror=0)
forgeSQLFromUniversalSearchCriteria
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.