28require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
40 public $module =
'bookcal';
45 public $element =
'availabilities';
50 public $table_element =
'bookcal_availabilities';
55 public $picto =
'fa-calendar-check';
58 const STATUS_DRAFT = 0;
59 const STATUS_VALIDATED = 1;
60 const STATUS_CANCELED = 9;
106 public $fields = array(
107 'rowid' => array(
'type' =>
'integer',
'label' =>
'TechnicalID',
'enabled' => 1,
'position' => 1,
'notnull' => 1,
'visible' => 2,
'noteditable' => 1,
'index' => 1,
'css' =>
'left',
'comment' =>
"Id"),
108 'label' => array(
'type' =>
'varchar(255)',
'label' =>
'Label',
'enabled' => 1,
'position' => 20,
'notnull' => 0,
'visible' => 1,
'searchall' => 1,
'css' =>
'minwidth300',
'csslist' =>
'tdoverflowmax150',
'cssview' =>
'wordbreak',
'help' =>
"BookcalLabelAvailabilityHelp",
'showoncombobox' => 2,
'validate' => 1,),
109 'fk_bookcal_calendar' => array(
'type' =>
'integer:Calendar:bookcal/class/calendar.class.php:1',
'label' =>
'Calendar',
'enabled' => 1,
'position' => 25,
'notnull' => 1,
'visible' => 1,
'css' =>
'maxwidth500 widthcentpercentminusxx',
'csslist' =>
'tdoverflowmax100'),
110 'description' => array(
'type' =>
'text',
'label' =>
'Description',
'enabled' => 1,
'position' => 60,
'notnull' => 0,
'visible' => 3,
'validate' => 1,),
111 'note_public' => array(
'type' =>
'html',
'label' =>
'NotePublic',
'enabled' => 1,
'position' => 61,
'notnull' => 0,
'visible' => 0,
'cssview' =>
'wordbreak',
'validate' => 1,),
112 'note_private' => array(
'type' =>
'html',
'label' =>
'NotePrivate',
'enabled' => 1,
'position' => 62,
'notnull' => 0,
'visible' => 0,
'cssview' =>
'wordbreak',
'validate' => 1,),
113 'date_creation' => array(
'type' =>
'datetime',
'label' =>
'DateCreation',
'enabled' => 1,
'position' => 500,
'notnull' => 1,
'visible' => -2,),
114 'tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModification',
'enabled' => 1,
'position' => 501,
'notnull' => 0,
'visible' => -2,),
115 'fk_user_creat' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserAuthor',
'picto' =>
'user',
'enabled' => 1,
'position' => 510,
'notnull' => 1,
'visible' => -2,
'css' =>
'maxwidth500 widthcentpercentminusxx',
'csslist' =>
'tdoverflowmax150'),
116 'fk_user_modif' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserModif',
'picto' =>
'user',
'enabled' => 1,
'position' => 511,
'notnull' => -1,
'visible' => -2,
'css' =>
'maxwidth500 widthcentpercentminusxx',
'csslist' =>
'tdoverflowmax150'),
117 'last_main_doc' => array(
'type' =>
'varchar(255)',
'label' =>
'LastMainDoc',
'enabled' => 1,
'position' => 600,
'notnull' => 0,
'visible' => 0,),
118 'import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'position' => 1000,
'notnull' => -1,
'visible' => -2,),
119 'model_pdf' => array(
'type' =>
'varchar(255)',
'label' =>
'Model pdf',
'enabled' => 1,
'position' => 1010,
'notnull' => -1,
'visible' => 0,),
120 'start' => array(
'type' =>
'date',
'label' =>
'Start Date',
'enabled' => 1,
'position' => 40,
'notnull' => 1,
'visible' => 1,
'searchall' => 1,),
121 'end' => array(
'type' =>
'date',
'label' =>
'End Date',
'enabled' => 1,
'position' => 45,
'notnull' => 1,
'visible' => 1,
'searchall' => 1,),
122 'duration' => array(
'type' =>
'integer',
'label' =>
'DurationOfRange',
'enabled' => 1,
'position' => 47,
'notnull' => 1,
'visible' => 1,
'default' =>
'30',
'css' =>
'width50 right'),
123 'startHour' => array(
'type' =>
'integer',
'label' =>
'Start Hour',
'enabled' => 1,
'position' => 46,
'notnull' => 1,
'visible' => 1,),
124 'endHour' => array(
'type' =>
'integer',
'label' =>
'End Hour',
'enabled' => 1,
'position' => 46.5,
'notnull' => 1,
'visible' => 1,),
125 'status' => array(
'type' =>
'integer',
'label' =>
'Status',
'enabled' => 1,
'position' => 2000,
'notnull' => 1,
'visible' => 1,
'index' => 1,
'arrayofkeyval' => array(
'0' =>
'Draft',
'1' =>
'Validated',
'9' =>
'Closed'),
'default' =>
'1',
'validate' => 1),
146 public $note_private;
150 public $fk_user_creat;
154 public $fk_user_modif;
158 public $last_main_doc;
194 public $fk_bookcal_calendar;
241 global $conf, $langs;
245 $this->ismultientitymanaged =
'fk_bookcal_calendar@bookcal_calendar';
246 $this->isextrafieldmanaged = 1;
248 if (!
getDolGlobalString(
'MAIN_SHOW_TECHNICAL_ID') && isset($this->fields[
'rowid']) && !empty($this->fields[
'ref'])) {
249 $this->fields[
'rowid'][
'visible'] = 0;
251 if (empty($conf->multicompany->enabled) && isset($this->fields[
'entity'])) {
252 $this->fields[
'entity'][
'enabled'] = 0;
262 foreach ($this->fields as $key => $val) {
263 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
264 unset($this->fields[$key]);
269 if (is_object($langs)) {
270 foreach ($this->fields as $key => $val) {
271 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
272 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
273 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
293 return $resultcreate;
305 global $langs, $extrafields;
315 $result =
$object->fetchCommon($fromid);
316 if ($result > 0 && !empty(
$object->table_element_line)) {
330 if (property_exists(
$object,
'ref')) {
331 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
333 if (property_exists(
$object,
'label')) {
335 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
337 if (property_exists(
$object,
'status')) {
338 $object->status = self::STATUS_DRAFT;
340 if (property_exists(
$object,
'date_creation')) {
343 if (property_exists(
$object,
'date_modification')) {
344 $object->date_modification =
null;
348 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
349 $extrafields->fetch_name_optionals_label($this->table_element);
350 foreach (
$object->array_options as $key => $option) {
351 $shortkey = preg_replace(
'/options_/',
'', $key);
352 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
355 unset(
$object->array_options[$key]);
361 $object->context[
'createfromclone'] =
'createfromclone';
362 $result =
$object->createCommon($user);
366 $this->errors =
$object->errors;
378 if (!empty(
$object->socid) && property_exists($this,
'fk_soc') && $this->fk_soc ==
$object->socid) {
385 unset(
$object->context[
'createfromclone']);
392 $this->db->rollback();
404 public function fetch($id, $ref =
null)
407 if ($result > 0 && !empty($this->table_element_line)) {
420 $this->lines = array();
439 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
447 $sql .=
" FROM ".MAIN_DB_PREFIX.$this->table_element.
" as t";
448 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
449 $sql .=
" WHERE t.entity IN (".getEntity($this->element).
")";
451 $sql .=
" WHERE 1 = 1";
458 $this->errors[] = $errormessage;
459 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
463 if (!empty($sortfield)) {
464 $sql .= $this->db->order($sortfield, $sortorder);
466 if (!empty($limit)) {
467 $sql .= $this->db->plimit($limit, $offset);
470 $resql = $this->db->query($sql);
472 $num = $this->db->num_rows($resql);
474 while ($i < ($limit ? min($limit, $num) : $num)) {
475 $obj = $this->db->fetch_object($resql);
477 $record =
new self($this->db);
478 $record->setVarsFromFetchObj($obj);
480 $records[$record->id] = $record;
484 $this->db->free($resql);
488 $this->errors[] =
'Error '.$this->db->lasterror();
489 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
514 public function delete(
User $user, $notrigger = 0)
531 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
548 global $conf, $langs;
550 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
555 if ($this->
status == self::STATUS_VALIDATED) {
556 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
565 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
570 $this->newref = $num;
574 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
575 $sql .=
" SET label = '".$this->db->escape($num).
"',";
576 $sql .=
" status = ".self::STATUS_VALIDATED;
577 if (!empty($this->fields[
'date_validation'])) {
578 $sql .=
", date_validation = '".$this->db->idate($now).
"'";
580 if (!empty($this->fields[
'fk_user_valid'])) {
581 $sql .=
", fk_user_valid = ".((int) $user->id);
583 $sql .=
" WHERE rowid = ".((int) $this->
id);
585 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
586 $resql = $this->db->query($sql);
589 $this->error = $this->db->lasterror();
593 if (!$error && !$notrigger) {
595 $result = $this->
call_trigger(
'AVAILABILITIES_VALIDATE', $user);
604 $this->oldref = $this->ref;
607 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
609 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filename = CONCAT('".$this->db->escape($this->newref).
"', SUBSTR(filename, ".(strlen($this->
ref) + 1).
")), filepath = 'availabilities/".$this->db->escape($this->newref).
"'";
610 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'availabilities/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
611 $resql = $this->db->query($sql);
614 $this->error = $this->db->lasterror();
616 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'availabilities/".$this->db->escape($this->newref).
"'";
617 $sql .=
" WHERE filepath = 'availabilities/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
618 $resql = $this->db->query($sql);
621 $this->error = $this->db->lasterror();
627 $dirsource = $conf->bookcal->dir_output.
'/availabilities/'.$oldref;
628 $dirdest = $conf->bookcal->dir_output.
'/availabilities/'.$newref;
629 if (!$error && file_exists($dirsource)) {
630 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
632 if (@rename($dirsource, $dirdest)) {
635 $listoffiles =
dol_dir_list($conf->bookcal->dir_output.
'/availabilities/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
636 foreach ($listoffiles as $fileentry) {
637 $dirsource = $fileentry[
'name'];
638 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
639 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
640 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
641 @rename($dirsource, $dirdest);
651 $this->
status = self::STATUS_VALIDATED;
658 $this->db->rollback();
674 if ($this->
status <= self::STATUS_DRAFT) {
678 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'AVAILABILITIES_UNVALIDATE');
688 public function cancel($user, $notrigger = 0)
691 if ($this->
status != self::STATUS_VALIDATED) {
695 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'AVAILABILITIES_CANCEL');
705 public function reopen($user, $notrigger = 0)
708 if ($this->
status != self::STATUS_CANCELED) {
712 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'AVAILABILITIES_REOPEN');
725 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
727 global $conf, $langs, $hookmanager;
729 if (!empty($conf->dol_no_mouse_hover)) {
735 $label =
img_picto(
'', $this->picto).
' <u>'.$langs->trans(
"Availabilities").
'</u>';
736 if (isset($this->
status)) {
737 $label .=
' '.$this->getLibStatut(5);
740 $label .=
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
742 $url =
dol_buildpath(
'/bookcal/availabilities_card.php', 1).
'?id='.$this->id;
744 if ($option !=
'nolink') {
746 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
747 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
748 $add_save_lastsearch_values = 1;
750 if ($url && $add_save_lastsearch_values) {
751 $url .=
'&save_lastsearch_values=1';
756 if (empty($notooltip)) {
758 $label = $langs->trans(
"ShowAvailabilities");
759 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
761 $linkclose .=
' title="'.dol_escape_htmltag($label, 1).
'"';
762 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
764 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
767 if ($option ==
'nolink' || empty($url)) {
768 $linkstart =
'<span';
770 $linkstart =
'<a href="'.$url.
'"';
772 $linkstart .= $linkclose.
'>';
773 if ($option ==
'nolink' || empty($url)) {
774 $linkend =
'</span>';
779 $result .= $linkstart;
781 if (empty($this->showphoto_on_popup)) {
783 $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);
787 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
789 list($class, $module) = explode(
'@', $this->picto);
792 $filename = $filearray[0][
'name'];
793 if (!empty($filename)) {
794 $pospoint = strpos($filearray[0][
'name'],
'.');
796 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
798 $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>';
800 $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>';
805 $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);
810 if ($withpicto != 2) {
811 $result .= $this->ref;
817 global $action, $hookmanager;
818 $hookmanager->initHooks(array(
'availabilitiesdao'));
819 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
820 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
822 $result = $hookmanager->resPrint;
824 $result .= $hookmanager->resPrint;
839 global $conf, $langs;
841 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
843 $return =
'<div class="box-flex-item box-flex-grow-zero">';
844 $return .=
'<div class="info-box info-box-sm">';
845 $return .=
'<span class="info-box-icon bg-infobox-action">';
847 $return .=
'</span>';
848 $return .=
'<div class="info-box-content">';
849 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl() : $this->ref).
'</span>';
850 if ($selected >= 0) {
851 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
853 if (property_exists($this,
'label')) {
854 $return .=
' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.
'</div>';
856 if (property_exists($this,
'amount')) {
858 $return .=
'<span class="info-box-label amount">'.price($this->amount, 0, $langs, 1, -1, -1, $conf->currency).
'</span>';
860 if (method_exists($this,
'getLibStatut')) {
861 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
903 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
906 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
907 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
908 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
909 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
910 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
911 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
914 $statusType =
'status'.$status;
915 if ($status == self::STATUS_VALIDATED) {
916 $statusType =
'status4';
918 if ($status == self::STATUS_CANCELED) {
919 $statusType =
'status6';
922 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
933 $sql =
"SELECT rowid,";
934 $sql .=
" date_creation as datec, tms as datem,";
935 $sql .=
" fk_user_creat, fk_user_modif";
936 $sql .=
" FROM ".MAIN_DB_PREFIX.$this->table_element.
" as t";
937 $sql .=
" WHERE t.rowid = ".((int) $id);
939 $result = $this->db->query($sql);
941 if ($this->db->num_rows($result)) {
942 $obj = $this->db->fetch_object($result);
944 $this->
id = $obj->rowid;
946 $this->user_creation_id = $obj->fk_user_creat;
947 $this->user_modification_id = $obj->fk_user_modif;
948 $this->date_creation = $this->db->jdate($obj->datec);
949 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
952 $this->db->free($result);
980 $this->lines = array();
983 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0,
'(fk_availabilities:=:'.((
int) $this->
id).
')');
985 if (is_numeric($result)) {
986 $this->error = $objectline->error;
987 $this->errors = $objectline->errors;
990 $this->lines = $result;
1002 global $langs, $conf;
1003 $langs->load(
"agenda");
1006 $conf->global->BOOKCAL_AVAILABILITIES_ADDON =
'mod_availabilities_standard';
1016 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
1017 foreach ($dirmodels as $reldir) {
1021 $mybool = ((bool) @include_once $dir.$file) || $mybool;
1029 if (class_exists($classname)) {
1030 $obj =
new $classname();
1031 '@phan-var-force CommonNumRefGenerator $obj';
1033 $numref = $obj->getNextValue($this);
1035 if ($numref !=
'' && $numref !=
'-1') {
1038 $this->error = $obj->error;
1043 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1047 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1063 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1065 global $conf, $langs;
1068 $includedocgeneration = 0;
1070 $langs->load(
"agenda");
1073 $modele =
'standard_availabilities';
1075 if (!empty($this->model_pdf)) {
1076 $modele = $this->model_pdf;
1082 $modelpath =
"core/modules/bookcal/doc/";
1084 if ($includedocgeneration && !empty($modele)) {
1085 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1100 global $conf, $langs;
1116 $this->db->commit();
1123require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
1141 $this->isextrafieldmanaged = 0;
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Class for Availabilities.
create(User $user, $notrigger=0)
Create object into database.
getLabelStatus($mode=0)
Return the label of the status.
getNextNumRef()
Returns the reference to the following non used object depending on the active numbering module.
fetch($id, $ref=null)
Load object in memory from the database.
fetchLines()
Load object lines in memory from the database.
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
initAsSpecimen()
Initialise object with example values Id must be 0 if object instance is a specimen.
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
getNomUrl($withpicto=0, $option='', $notooltip=0, $morecss='', $save_lastsearch_value=-1)
Return a link to the object card (with optionally the picto)
getLibStatut($mode=0)
Return the label of the status.
__construct(DoliDB $db)
Constructor.
LibStatut($status, $mode=0)
Return the status.
createFromClone(User $user, $fromid)
Clone an object into another one.
info($id)
Load the info information in the object.
deleteLine(User $user, $idline, $notrigger=0)
Delete a line of object in database.
update(User $user, $notrigger=0)
Update object into database.
fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, $filter='', $filtermode='AND')
Load list of objects in memory from the database.
setDraft($user, $notrigger=0)
Set draft status.
validate($user, $notrigger=0)
Validate object.
getKanbanView($option='', $arraydata=null)
Return a thumb for kanban views.
getLinesArray()
Create an array of lines.
cancel($user, $notrigger=0)
Set cancel status.
reopen($user, $notrigger=0)
Set back to validated status.
Class AvailabilitiesLine.
__construct(DoliDB $db)
Constructor.
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.
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.
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.
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.