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;
114 'rowid' => array(
'type' =>
'integer',
'label' =>
'TechnicalID',
'enabled' => 1,
'position' => 1,
'notnull' => 1,
'visible' => 0,
'noteditable' => 1,
'index' => 1,
'css' =>
'left',
'comment' =>
'Id'),
115 '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'),
116 '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,),
117 '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,),
118 '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,),
119 '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,),
120 '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,),
121 'description' => array(
'type' =>
'text',
'label' =>
'Description',
'enabled' => 1,
'position' => 60,
'notnull' => 0,
'visible' => 3,
'validate' => 1,),
122 'note_public' => array(
'type' =>
'html',
'label' =>
'NotePublic',
'enabled' => 1,
'position' => 61,
'notnull' => 0,
'visible' => 0,
'cssview' =>
'wordbreak',
'validate' => 1,),
123 'note_private' => array(
'type' =>
'html',
'label' =>
'NotePrivate',
'enabled' => 1,
'position' => 62,
'notnull' => 0,
'visible' => 0,
'cssview' =>
'wordbreak',
'validate' => 1,),
124 'date_creation' => array(
'type' =>
'datetime',
'label' =>
'DateCreation',
'enabled' => 1,
'position' => 500,
'notnull' => 1,
'visible' => -2,),
125 'tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModification',
'enabled' => 1,
'position' => 501,
'notnull' => 0,
'visible' => -2,),
126 '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',),
127 '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',),
128 'last_main_doc' => array(
'type' =>
'varchar(255)',
'label' =>
'LastMainDoc',
'enabled' => 1,
'position' => 600,
'notnull' => 0,
'visible' => 0,),
129 'import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'position' => 1000,
'notnull' => -1,
'visible' => -2,),
130 'model_pdf' => array(
'type' =>
'varchar(255)',
'label' =>
'Model pdf',
'enabled' => 1,
'position' => 1010,
'notnull' => -1,
'visible' => 0,),
131 '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,),
176 public $fk_user_creat;
181 public $fk_user_modif;
186 public $last_main_doc;
241 $this->ismultientitymanaged = 0;
242 $this->isextrafieldmanaged = 1;
244 if (!
getDolGlobalInt(
'MAIN_SHOW_TECHNICAL_ID') && isset($this->fields[
'rowid']) && !empty($this->fields[
'ref'])) {
245 $this->fields[
'rowid'][
'visible'] = 0;
247 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
248 $this->fields[
'entity'][
'enabled'] = 0;
258 foreach ($this->fields as $key => $val) {
259 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
260 unset($this->fields[$key]);
265 if (is_object($langs)) {
266 foreach ($this->fields as $key => $val) {
267 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
268 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
269 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
291 return $resultcreate;
303 global $langs, $extrafields;
313 $result =
$object->fetchCommon($fromid);
314 if ($result > 0 && !empty(
$object->table_element_line)) {
328 if (property_exists(
$object,
'ref')) {
329 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
331 if (property_exists(
$object,
'label')) {
332 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
334 if (property_exists(
$object,
'status')) {
335 $object->status = self::STATUS_DRAFT;
337 if (property_exists(
$object,
'date_creation')) {
340 if (property_exists(
$object,
'date_modification')) {
341 $object->date_modification =
null;
345 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
346 $extrafields->fetch_name_optionals_label($this->table_element);
347 foreach (
$object->array_options as $key => $option) {
348 $shortkey = preg_replace(
'/options_/',
'', $key);
349 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
352 unset(
$object->array_options[$key]);
358 $object->context[
'createfromclone'] =
'createfromclone';
359 $result =
$object->createCommon($user);
374 if (!empty(
$object->socid) && property_exists($this,
'fk_soc') && $this->fk_soc ==
$object->socid) {
381 unset(
$object->context[
'createfromclone']);
388 $this->db->rollback();
402 public function fetch($id, $ref =
null, $noextrafields = 0, $nolines = 0)
404 $result = $this->
fetchCommon($id, $ref,
'', $noextrafields);
405 if ($result > 0 && !empty($this->table_element_line) && empty($nolines)) {
419 $this->lines = array();
440 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 1000, $offset = 0,
string $filter =
'', $filtermode =
'AND')
448 $sql .=
" FROM ".$this->db->prefix().$this->table_element.
" as t";
449 if (isset($this->isextrafieldmanaged) && $this->isextrafieldmanaged == 1) {
450 $sql .=
" LEFT JOIN ".$this->db->prefix().$this->table_element.
"_extrafields as te ON te.fk_object = t.rowid";
452 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
453 $sql .=
" WHERE t.entity IN (".getEntity($this->element).
")";
455 $sql .=
" WHERE 1 = 1";
462 $this->errors[] = $errormessage;
463 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
467 if (!empty($sortfield)) {
468 $sql .= $this->db->order($sortfield, $sortorder);
470 if (!empty($limit)) {
471 $sql .= $this->db->plimit($limit, $offset);
474 $resql = $this->db->query($sql);
476 $num = $this->db->num_rows($resql);
478 while ($i < ($limit ? min($limit, $num) : $num)) {
479 $obj = $this->db->fetch_object($resql);
481 $record =
new self($this->db);
482 $record->setVarsFromFetchObj($obj);
484 if (!empty($record->isextrafieldmanaged)) {
485 $record->fetch_optionals();
488 $records[$record->id] = $record;
492 $this->db->free($resql);
496 $this->errors[] =
'Error '.$this->db->lasterror();
497 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
522 public function delete(
User $user, $notrigger = 0)
539 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
558 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
563 if ($this->
status == self::STATUS_VALIDATED) {
564 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
581 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
586 $this->newref = $num;
590 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
592 if (!empty($this->fields[
'ref'])) {
593 $sql .=
" ref = '".$this->db->escape($num).
"',";
595 $sql .=
" status = ".self::STATUS_VALIDATED;
596 if (!empty($this->fields[
'date_validation'])) {
597 $sql .=
", date_validation = '".$this->db->idate($now).
"'";
599 if (!empty($this->fields[
'fk_user_valid'])) {
600 $sql .=
", fk_user_valid = ".((int) $user->id);
602 $sql .=
" WHERE rowid = ".((int) $this->
id);
604 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
605 $resql = $this->db->query($sql);
608 $this->error = $this->db->lasterror();
612 if (!$error && !$notrigger) {
614 $result = $this->
call_trigger(
'MYOBJECT_VALIDATE', $user);
623 $this->oldref = $this->ref;
626 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
628 $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).
"'";
629 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'myobject/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
630 $resql = $this->db->query($sql);
633 $this->error = $this->db->lasterror();
635 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'myobject/".$this->db->escape($this->newref).
"'";
636 $sql .=
" WHERE filepath = 'myobject/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
637 $resql = $this->db->query($sql);
640 $this->error = $this->db->lasterror();
646 $dirsource =
$conf->mymodule->dir_output.
'/myobject/'.$oldref;
647 $dirdest =
$conf->mymodule->dir_output.
'/myobject/'.$newref;
648 if (!$error && file_exists($dirsource)) {
649 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
651 if (@rename($dirsource, $dirdest)) {
654 $listoffiles =
dol_dir_list(
$conf->mymodule->dir_output.
'/myobject/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
655 foreach ($listoffiles as $fileentry) {
656 $dirsource = $fileentry[
'name'];
657 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
658 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
659 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
660 @rename($dirsource, $dirdest);
670 $this->
status = self::STATUS_VALIDATED;
677 $this->db->rollback();
693 if ($this->
status <= self::STATUS_DRAFT) {
704 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'MYMODULE_MYOBJECT_UNVALIDATE');
714 public function cancel($user, $notrigger = 0)
717 if ($this->
status != self::STATUS_VALIDATED) {
728 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'MYMODULE_MYOBJECT_CANCEL');
738 public function reopen($user, $notrigger = 0)
741 if ($this->
status == self::STATUS_VALIDATED) {
752 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'MYMODULE_MYOBJECT_REOPEN');
769 return [
'optimize' => $langs->trans(
"ShowMyObject")];
771 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u>'.$langs->trans(
"MyObject").
'</u>';
772 if (isset($this->
status)) {
773 $datas[
'picto'] .=
' '.$this->getLibStatut(5);
775 if (property_exists($this,
'ref')) {
776 $datas[
'ref'] =
'<br><b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
778 if (property_exists($this,
'label')) {
779 $datas[
'ref'] =
'<br>'.$langs->trans(
'Label').
':</b> '.$this->label;
795 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
797 global
$conf, $langs, $hookmanager;
799 if (!empty(
$conf->dol_no_mouse_hover)) {
806 'objecttype' => $this->element.($this->module ?
'@'.$this->module :
''),
809 $classfortooltip =
'classfortooltip';
812 $classfortooltip =
'classforajaxtooltip';
813 $dataparams =
' data-params="'.dol_escape_htmltag(json_encode($params)).
'"';
819 $url =
dol_buildpath(
'/mymodule/myobject_card.php', 1).
'?id='.$this->id;
821 if ($option !==
'nolink') {
823 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
824 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
825 $add_save_lastsearch_values = 1;
827 if ($url && $add_save_lastsearch_values) {
828 $url .=
'&save_lastsearch_values=1';
833 if (empty($notooltip)) {
835 $label = $langs->trans(
"ShowMyObject");
836 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
838 $linkclose .= ($label ?
' title="'.dol_escape_htmltag($label, 1).
'"' :
' title="tocomplete"');
839 $linkclose .= $dataparams.
' class="'.$classfortooltip.($morecss ?
' '.$morecss :
'').
'"';
841 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
844 if ($option ==
'nolink' || empty($url)) {
845 $linkstart =
'<span';
847 $linkstart =
'<a href="'.$url.
'"';
849 $linkstart .= $linkclose.
'>';
850 if ($option ==
'nolink' || empty($url)) {
851 $linkend =
'</span>';
856 $result .= $linkstart;
858 if (empty($this->showphoto_on_popup)) {
860 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), (($withpicto != 2) ?
'class="paddingright"' :
''), 0, 0, $notooltip ? 0 : 1);
864 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
866 list($class, $module) = explode(
'@', $this->picto);
869 $filename = $filearray[0][
'name'];
870 if (!empty($filename)) {
871 $pospoint = strpos($filearray[0][
'name'],
'.');
873 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
875 $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>';
877 $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>';
882 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'"'), 0, 0, $notooltip ? 0 : 1);
887 if ($withpicto != 2) {
888 $result .= $this->ref;
894 global $action, $hookmanager;
895 $hookmanager->initHooks(array($this->element.
'dao'));
896 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
897 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
899 $result = $hookmanager->resPrint;
901 $result .= $hookmanager->resPrint;
916 global
$conf, $langs;
918 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
920 $return =
'<div class="box-flex-item box-flex-grow-zero">';
921 $return .=
'<div class="info-box info-box-sm">';
922 $return .=
'<span class="info-box-icon bg-infobox-action">';
924 $return .=
'</span>';
925 $return .=
'<div class="info-box-content">';
926 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl() : $this->ref).
'</span>';
927 if ($selected >= 0) {
928 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
930 if (property_exists($this,
'label')) {
931 $return .=
' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.
'</div>';
933 if (property_exists($this,
'thirdparty') && is_object($this->thirdparty)) {
934 $return .=
'<br><div class="info-box-ref tdoverflowmax150">'.$this->thirdparty->getNomUrl(1).
'</div>';
936 if (property_exists($this,
'amount')) {
938 $return .=
'<span class="info-box-label amount">'.price($this->amount, 0, $langs, 1, -1, -1,
$conf->currency).
'</span>';
940 if (method_exists($this,
'getLibStatut')) {
941 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
983 if (is_null($status)) {
987 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
990 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
991 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
992 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
993 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
994 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
995 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
998 $statusType =
'status'.$status;
1000 if ($status == self::STATUS_CANCELED) {
1001 $statusType =
'status6';
1004 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
1015 $sql =
"SELECT rowid,";
1016 $sql .=
" date_creation as datec, tms as datem";
1017 if (!empty($this->fields[
'date_validation'])) {
1018 $sql .=
", date_validation as datev";
1020 if (!empty($this->fields[
'fk_user_creat'])) {
1021 $sql .=
", fk_user_creat";
1023 if (!empty($this->fields[
'fk_user_modif'])) {
1024 $sql .=
", fk_user_modif";
1026 if (!empty($this->fields[
'fk_user_valid'])) {
1027 $sql .=
", fk_user_valid";
1029 $sql .=
" FROM ".MAIN_DB_PREFIX.$this->table_element.
" as t";
1030 $sql .=
" WHERE t.rowid = ".((int) $id);
1032 $result = $this->db->query($sql);
1034 if ($this->db->num_rows($result)) {
1035 $obj = $this->db->fetch_object($result);
1037 $this->
id = $obj->rowid;
1039 if (!empty($this->fields[
'fk_user_creat'])) {
1040 $this->user_creation_id = $obj->fk_user_creat;
1042 if (!empty($this->fields[
'fk_user_modif'])) {
1043 $this->user_modification_id = $obj->fk_user_modif;
1045 if (!empty($this->fields[
'fk_user_valid'])) {
1046 $this->user_validation_id = $obj->fk_user_valid;
1048 $this->date_creation = $this->db->jdate($obj->datec);
1049 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
1050 if (!empty($obj->datev)) {
1051 $this->date_validation = empty($obj->datev) ?
'' : $this->db->jdate($obj->datev);
1055 $this->db->free($result);
1083 $this->lines = array();
1086 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0,
'(fk_myobject:=:'.((
int) $this->
id).
')');
1088 if (is_numeric($result)) {
1092 $this->lines = $result;
1093 return $this->lines;
1104 global $langs,
$conf;
1105 $langs->load(
"mymodule@mymodule");
1108 $conf->global->MYMODULE_MYOBJECT_ADDON =
'mod_myobject_standard';
1118 $dirmodels = array_merge(array(
'/'), (array)
$conf->modules_parts[
'models']);
1119 foreach ($dirmodels as $reldir) {
1123 $mybool = $mybool || @include_once $dir.$file;
1131 if (class_exists($classname)) {
1132 $obj =
new $classname();
1133 '@phan-var-force ModeleNumRefMyObject $obj';
1134 $numref = $obj->getNextValue($this);
1136 if ($numref !=
'' && $numref !=
'-1') {
1139 $this->error = $obj->error;
1144 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1148 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1164 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1169 $includedocgeneration = 0;
1171 $langs->load(
"mymodule@mymodule");
1174 $modele =
'standard_myobject';
1176 if (!empty($this->model_pdf)) {
1177 $modele = $this->model_pdf;
1183 $modelpath =
"core/modules/mymodule/doc/";
1185 if ($includedocgeneration && !empty($modele)) {
1186 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1206 return parent::validateField(
$fields, $fieldKey, $fieldValue);
1234 $this->db->commit();
1243require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
1274 $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.
dolGetStatus($statusLabel='', $statusLabelShort='', $html='', $statusType='status0', $displayMode=0, $url='', $params=array())
Output the badge of a status.
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.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...