dolibarr 21.0.0-alpha
webportalpropal.class.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2023-2024 Laurent Destailleur <eldy@users.sourceforge.net>
3 * Copyright (C) 2023-2024 Lionel Vessiller <lvessiller@easya.solutions>
4 * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
5 * Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
27// Put here all includes required by your class file
28require_once DOL_DOCUMENT_ROOT . '/comm/propal/class/propal.class.php';
29
34{
38 public $module = 'webportal';
39
43 const ARRAY_STATUS_LABEL = array(
44 Propal::STATUS_DRAFT => 'PropalStatusDraftShort',
45 Propal::STATUS_VALIDATED => 'PropalStatusValidatedShort',
46 Propal::STATUS_SIGNED => 'PropalStatusSignedShort',
47 Propal::STATUS_NOTSIGNED => 'PropalStatusNotSignedShort',
48 Propal::STATUS_BILLED => 'PropalStatusBilledShort',
49 );
50
54 protected $propal_static = null;
55
95 // BEGIN MODULEBUILDER PROPERTIES
99 public $fields = array(
100 'rowid' => array('type' => 'integer', 'label' => 'TechnicalID', 'enabled' => 1, 'position' => 1, 'notnull' => 1, 'visible' => 0, 'noteditable' => 1, 'index' => 1, 'css' => 'left', 'comment' => "Id",),
101 'entity' => array('type' => 'integer', 'label' => 'Entity', 'default' => '1', 'enabled' => 1, 'visible' => -2, 'notnull' => 1, 'position' => 15, 'index' => 1,),
102 'ref' => array('type' => 'varchar(128)', 'label' => 'Ref', 'enabled' => 1, 'position' => 20, 'notnull' => 1, 'visible' => 2, 'index' => 1, 'searchall' => 1, 'showoncombobox' => 1, 'validate' => 1, 'comment' => "Reference of object",),
103 'datep' => array('type' => 'date', 'label' => 'Date', 'enabled' => 1, 'visible' => 2, 'position' => 60,),
104 'fin_validite' => array('type' => 'date', 'label' => 'DateEnd', 'enabled' => 1, 'visible' => 2, 'position' => 65,),
105 'total_ht' => array('type' => 'price', 'label' => 'TotalHT', 'enabled' => 1, 'visible' => 2, 'position' => 125, 'isameasure' => 1,),
106 'total_tva' => array('type' => 'price', 'label' => 'VAT', 'enabled' => 1, 'visible' => 2, 'position' => 130, 'isameasure' => 1,),
107 'total_ttc' => array('type' => 'price', 'label' => 'TotalTTC', 'enabled' => 1, 'visible' => 2, 'position' => 145, 'isameasure' => 1,),
108 'multicurrency_total_ht' => array('type' => 'price', 'label' => 'MulticurrencyAmountHT', 'enabled' => 'isModEnabled("multicurrency")', 'visible' => -2, 'position' => 245, 'isameasure' => 1,),
109 'multicurrency_total_tva' => array('type' => 'price', 'label' => 'MulticurrencyAmountVAT', 'enabled' => 'isModEnabled("multicurrency")', 'visible' => -2, 'position' => 250, 'isameasure' => 1,),
110 'multicurrency_total_ttc' => array('type' => 'price', 'label' => 'MulticurrencyAmountTTC', 'enabled' => 'isModEnabled("multicurrency")', 'visible' => -2, 'position' => 255, 'isameasure' => 1,),
111 'fk_statut' => array('type' => 'smallint(6)', 'label' => 'Status', 'enabled' => 1, 'visible' => 2, 'notnull' => 1, 'position' => 500, 'arrayofkeyval' => self::ARRAY_STATUS_LABEL,),
112 );
113 //public $rowid;
114 //public $ref;
115 //public $datep;
116 //public $fin_validite;
117 //public $total_ht;
118 //public $total_tva;
119 //public $total_ttc;
120 //public $multicurrency_total_ht;
121 //public $multicurrency_total_tva;
122 //public $multicurrency_total_ttc;
123
127 public $fk_statut;
128 // END MODULEBUILDER PROPERTIES
129
130
136 protected function getPropalStatic()
137 {
138 if (!$this->propal_static) {
139 $this->propal_static = new Propal($this->db);
140 }
141
142 return $this->propal_static;
143 }
144
150 public function __construct(DoliDB $db)
151 {
152 global $conf, $langs;
153
154 $this->db = $db;
155
156 $this->isextrafieldmanaged = 0;
157
158 $this->getPropalStatic();
159 }
160
167 public function getTooltipContentArray($params)
168 {
169 global $conf, $langs;
170
171 $datas = [];
172
173 if (getDolGlobalInt('MAIN_OPTIMIZEFORTEXTBROWSER')) {
174 return ['optimize' => $langs->trans("WebPortalPropal")];
175 }
176 $datas['picto'] = img_picto('', $this->picto) . ' <u>' . $langs->trans("WebPortalPropal") . '</u>';
177 if (isset($this->status)) {
178 $datas['picto'] .= ' ' . $this->getLibStatut(5);
179 }
180 $datas['ref'] .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref;
181
182 return $datas;
183 }
184
196 public function getNomUrl($withpicto = 0, $option = '', $get_params = '', $notooltip = 0, $save_lastsearch_value = -1, $addlinktonotes = -1)
197 {
198 global $conf, $hookmanager;
199
200 if (!empty($conf->dol_no_mouse_hover)) {
201 $notooltip = 1; // Force disable tooltips
202 }
203
204 $result = '';
205 $params = [
206 'id' => $this->id,
207 'objecttype' => $this->element,
208 'option' => $option,
209 'nofetch' => 1,
210 ];
211 $classfortooltip = 'classfortooltip';
212 $dataparams = '';
213 if (getDolGlobalInt('MAIN_ENABLE_AJAX_TOOLTIP')) {
214 $classfortooltip = 'classforajaxtooltip';
215 $dataparams = ' data-params="' . dol_escape_htmltag(json_encode($params)) . '"';
216 $label = '';
217 } else {
218 $label = implode($this->getTooltipContentArray($params));
219 }
220
221 $url = '';
222 $option = 'nolink';
223
224 $linkclose = '';
225
226 $linkstart = '<a href="' . $url . '"';
227 $linkstart .= $linkclose . '>';
228 $linkend = '</a>';
229
230 if ($option === 'nolink') {
231 $linkstart = '';
232 $linkend = '';
233 }
234
235 $result .= $linkstart;
236 if ($withpicto) {
237 $result .= img_object(($notooltip ? '' : $label), $this->picto, ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : $dataparams . ' class="' . (($withpicto != 2) ? 'paddingright ' : '') . $classfortooltip . '"'), 0, 0, $notooltip ? 0 : 1);
238 }
239 if ($withpicto != 2) {
240 $result .= $this->ref;
241 }
242 $result .= $linkend;
243
244 global $action;
245 $hookmanager->initHooks(array($this->element . 'dao'));
246 $parameters = array('id' => $this->id, 'getnomurl' => &$result);
247 $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
248 if ($reshook > 0) {
249 $result = $hookmanager->resPrint;
250 } else {
251 $result .= $hookmanager->resPrint;
252 }
253 return $result;
254 }
255
263 public function getKanbanView($option = '', $arraydata = null)
264 {
265 global $conf, $langs;
266
267 $selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
268
269 $return = '<div class="box-flex-item box-flex-grow-zero">';
270 $return .= '<div class="info-box info-box-sm">';
271 $return .= '<span class="info-box-icon bg-infobox-action">';
272 $return .= img_picto('', $this->picto);
273 $return .= '</span>';
274 $return .= '<div class="info-box-content">';
275 $return .= '<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">' . (method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref) . '</span>';
276 if ($selected >= 0) {
277 $return .= '<input id="cb' . $this->id . '" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="' . $this->id . '"' . ($selected ? ' checked="checked"' : '') . '>';
278 }
279 if (property_exists($this, 'label')) {
280 $return .= ' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">' . $this->label . '</div>';
281 }
282 if (property_exists($this, 'amount')) {
283 $return .= '<br>';
284 $return .= '<span class="info-box-label amount">' . price($this->amount, 0, $langs, 1, -1, -1, $conf->currency) . '</span>';
285 }
286 if (method_exists($this, 'getLibStatut')) {
287 $return .= '<br><div class="info-box-status margintoponly">' . $this->getLibStatut(3) . '</div>';
288 }
289 $return .= '</div>';
290 $return .= '</div>';
291 $return .= '</div>';
292
293 return $return;
294 }
295
302 public function getLabelStatus($mode = 0)
303 {
304 return $this->LibStatut($this->fk_statut, $mode);
305 }
306
313 public function getLibStatut($mode = 0)
314 {
315 return $this->LibStatut($this->fk_statut, $mode);
316 }
317
318 // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
326 public function LibStatut($status, $mode = 0)
327 {
328 // phpcs:enable
329 return $this->getPropalStatic()->LibStatut($status, $mode);
330 }
331}
Class to manage Dolibarr database access.
Class to manage proposals.
const STATUS_DRAFT
Draft status.
const STATUS_SIGNED
Signed quote.
const STATUS_NOTSIGNED
Not signed quote.
const STATUS_BILLED
Billed or processed quote.
const STATUS_VALIDATED
Validated status.
Class for WebPortalPropal.
const ARRAY_STATUS_LABEL
Status list (short label)
getPropalStatic()
Get propal for static method.
getLabelStatus($mode=0)
Return the label of the status.
getTooltipContentArray($params)
getTooltipContentArray
__construct(DoliDB $db)
Constructor.
getKanbanView($option='', $arraydata=null)
Return a thumb for kanban views.
getNomUrl($withpicto=0, $option='', $get_params='', $notooltip=0, $save_lastsearch_value=-1, $addlinktonotes=-1)
Return a link to the object card (with optionally the picto)
getLibStatut($mode=0)
Return the label of the status.
LibStatut($status, $mode=0)
Return the label of a given status.
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...
Definition index.php:162
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)
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...