39require
'../main.inc.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
43require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
44require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formpropal.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
46require_once DOL_DOCUMENT_ROOT.
'/supplier_proposal/class/supplier_proposal.class.php';
47if (isModEnabled(
'project')) {
48 require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
62$langs->loadLangs(array(
'companies',
'propal',
'supplier_proposal',
'compta',
'bills',
'orders',
'products',
'projects'));
66$action =
GETPOST(
'action',
'aZ09');
67$massaction =
GETPOST(
'massaction',
'alpha');
69$confirm =
GETPOST(
'confirm',
'alpha');
70$toselect =
GETPOST(
'toselect',
'array');
71$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'supplierproposallist';
72$optioncss =
GETPOST(
'optioncss',
'alpha');
73$mode =
GETPOST(
'mode',
'alpha');
75$search_user =
GETPOST(
'search_user',
'intcomma');
76$search_sale =
GETPOST(
'search_sale',
'intcomma');
78$search_company =
GETPOST(
'search_company',
'alpha');
79$search_company_alias =
GETPOST(
'search_company_alias',
'alpha');
80$search_login =
GETPOST(
'search_login',
'alpha');
81$search_town =
GETPOST(
'search_town',
'alpha');
82$search_zip =
GETPOST(
'search_zip',
'alpha');
83$search_state =
GETPOST(
"search_state");
84$search_country =
GETPOST(
"search_country",
'aZ09');
85$search_date_startday =
GETPOSTINT(
'search_date_startday');
86$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
87$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
88$search_date_endday =
GETPOSTINT(
'search_date_endday');
89$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
90$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
91$search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
92$search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
93$search_date_valid_startday =
GETPOSTINT(
'search_date_valid_startday');
94$search_date_valid_startmonth =
GETPOSTINT(
'search_date_valid_startmonth');
95$search_date_valid_startyear =
GETPOSTINT(
'search_date_valid_startyear');
96$search_date_valid_endday =
GETPOSTINT(
'search_date_valid_endday');
97$search_date_valid_endmonth =
GETPOSTINT(
'search_date_valid_endmonth');
98$search_date_valid_endyear =
GETPOSTINT(
'search_date_valid_endyear');
99$search_date_valid_start =
dol_mktime(0, 0, 0, $search_date_valid_startmonth, $search_date_valid_startday, $search_date_valid_startyear);
100$search_date_valid_end =
dol_mktime(23, 59, 59, $search_date_valid_endmonth, $search_date_valid_endday, $search_date_valid_endyear);
101$search_type_thirdparty =
GETPOST(
"search_type_thirdparty",
'intcomma');
102$search_montant_ht =
GETPOST(
'search_montant_ht',
'alpha');
103$search_montant_vat =
GETPOST(
'search_montant_vat',
'alpha');
104$search_montant_ttc =
GETPOST(
'search_montant_ttc',
'alpha');
105$search_multicurrency_code =
GETPOST(
'search_multicurrency_code',
'alpha');
106$search_multicurrency_tx =
GETPOST(
'search_multicurrency_tx',
'alpha');
107$search_multicurrency_montant_ht =
GETPOST(
'search_multicurrency_montant_ht',
'alpha');
108$search_multicurrency_montant_vat =
GETPOST(
'search_multicurrency_montant_vat',
'alpha');
109$search_multicurrency_montant_ttc =
GETPOST(
'search_multicurrency_montant_ttc',
'alpha');
110$search_project_ref =
GETPOST(
'search_project_ref',
'alpha');
111$search_status =
GETPOST(
'search_status',
'intcomma');
112$search_product_category =
GETPOST(
'search_product_category',
'int');
113$search_all = trim((
GETPOST(
'search_all',
'alphanohtml') !=
'') ?
GETPOST(
'search_all',
'alphanohtml') :
GETPOST(
'sall',
'alphanohtml'));
115$object_statut =
GETPOST(
'supplier_proposal_statut',
'intcomma');
116$search_btn =
GETPOST(
'button_search',
'alpha');
117$search_remove_btn =
GETPOST(
'button_removefilter',
'alpha');
120$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
121$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
123if (empty($page) || $page < 0 ||
GETPOST(
'button_search',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
127$offset = $limit * $page;
128$pageprev = $page - 1;
129$pagenext = $page + 1;
131 $sortfield =
'sp.date_livraison';
137if ($object_statut !=
'') {
138 $search_status = $object_statut;
145$module =
'supplier_proposal';
148if (!empty($user->socid)) {
149 $socid = $user->socid;
154 $dbtable =
'&societe';
157$diroutputmassaction = $conf->supplier_proposal->dir_output.
'/temp/massgeneration/'.$user->id;
161$hookmanager->initHooks(array(
'supplier_proposallist'));
165$extrafields->fetch_name_optionals_label(
$object->table_element);
167$search_array_options = $extrafields->getOptionalsFromPost(
$object->table_element,
'',
'search_');
171$fieldstosearchall = array();
172foreach (
$object->fields as $key => $val) {
173 if (!empty($val[
'searchall'])) {
174 $fieldstosearchall[
'sp.'.$key] = $val[
'label'];
177$fieldstosearchall[
'pd.description'] =
'Description';
178$fieldstosearchall[
's.nom'] =
"ThirdParty";
179$fieldstosearchall[
's.name_alias'] =
"AliasNameShort";
180$fieldstosearchall[
's.zip'] =
"Zip";
181$fieldstosearchall[
's.town'] =
"Town";
182if (empty($user->socid)) {
183 $fieldstosearchall[
"p.note_private"] =
"NotePrivate";
186$checkedtypetiers = 0;
188 'sp.ref' => array(
'label' => $langs->trans(
"Ref"),
'checked' => 1),
189 's.nom' => array(
'label' => $langs->trans(
"Supplier"),
'checked' => 1),
190 's.name_alias' => array(
'label' =>
"AliasNameShort",
'checked' => 0),
191 's.town' => array(
'label' => $langs->trans(
"Town"),
'checked' => 1),
192 's.zip' => array(
'label' => $langs->trans(
"Zip"),
'checked' => 1),
193 'state.nom' => array(
'label' => $langs->trans(
"StateShort"),
'checked' => 0),
194 'country.code_iso' => array(
'label' => $langs->trans(
"Country"),
'checked' => 0),
195 'typent.code' => array(
'label' => $langs->trans(
"ThirdPartyType"),
'checked' => $checkedtypetiers),
196 'sp.date_valid' => array(
'label' => $langs->trans(
"DateValidation"),
'checked' => 1),
197 'sp.date_livraison' => array(
'label' => $langs->trans(
"DateEnd"),
'checked' => 1),
198 'sp.total_ht' => array(
'label' => $langs->trans(
"AmountHT"),
'checked' => 1),
199 'sp.total_tva' => array(
'label' => $langs->trans(
"AmountVAT"),
'checked' => 0),
200 'sp.total_ttc' => array(
'label' => $langs->trans(
"AmountTTC"),
'checked' => 0),
201 'sp.multicurrency_code' => array(
'label' =>
'Currency',
'checked' => 0,
'enabled' => (!isModEnabled(
"multicurrency") ? 0 : 1)),
202 'sp.multicurrency_tx' => array(
'label' =>
'CurrencyRate',
'checked' => 0,
'enabled' => (!isModEnabled(
"multicurrency") ? 0 : 1)),
203 'sp.multicurrency_total_ht' => array(
'label' =>
'MulticurrencyAmountHT',
'checked' => 0,
'enabled' => (!isModEnabled(
"multicurrency") ? 0 : 1)),
204 'sp.multicurrency_total_vat' => array(
'label' =>
'MulticurrencyAmountVAT',
'checked' => 0,
'enabled' => (!isModEnabled(
"multicurrency") ? 0 : 1)),
205 'sp.multicurrency_total_ttc' => array(
'label' =>
'MulticurrencyAmountTTC',
'checked' => 0,
'enabled' => (!isModEnabled(
"multicurrency") ? 0 : 1)),
206 'sp.fk_projet' => array(
'label' => $langs->trans(
"RefProject"),
'checked' => 1,
'enabled' => (!isModEnabled(
"project") ? 0 : 1)),
207 'u.login' => array(
'label' => $langs->trans(
"Author"),
'checked' => 1,
'position' => 10),
208 'sp.datec' => array(
'label' => $langs->trans(
"DateCreation"),
'checked' => 0,
'position' => 500),
209 'sp.tms' => array(
'label' => $langs->trans(
"DateModificationShort"),
'checked' => 0,
'position' => 500),
210 'sp.fk_statut' => array(
'label' => $langs->trans(
"Status"),
'checked' => 1,
'position' => 1000),
213include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_array_fields.tpl.php';
217'@phan-var-force array<string,array{label:string,checked?:int<0,1>,position?:int,help?:string}> $arrayfields';
220if (empty($user->socid) && !$user->hasRight(
'societe',
'client',
'voir')) {
221 $search_sale = $user->id;
226$permissiontoread = $user->hasRight(
'supplier_proposal',
'lire');
227$permissiontodelete = $user->hasRight(
'supplier_proposal',
'supprimer');
234if (
GETPOST(
'cancel',
'alpha')) {
238if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend') {
242$parameters = array(
'socid' => $socid,
'arrayfields' => &$arrayfields);
243$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
248if (empty($reshook)) {
250 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
253 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
258 $search_company =
'';
259 $search_company_alias =
'';
260 $search_montant_ht =
'';
261 $search_montant_vat =
'';
262 $search_montant_ttc =
'';
263 $search_multicurrency_code =
'';
264 $search_multicurrency_tx =
'';
265 $search_multicurrency_montant_ht =
'';
266 $search_multicurrency_montant_vat =
'';
267 $search_multicurrency_montant_ttc =
'';
268 $search_project_ref =
'';
270 $search_product_category =
'';
275 $search_country =
'';
276 $search_type_thirdparty =
'';
277 $search_date_startday =
'';
278 $search_date_startmonth =
'';
279 $search_date_startyear =
'';
280 $search_date_endday =
'';
281 $search_date_endmonth =
'';
282 $search_date_endyear =
'';
283 $search_date_start =
'';
284 $search_date_end =
'';
285 $search_date_valid_startday =
'';
286 $search_date_valid_startmonth =
'';
287 $search_date_valid_startyear =
'';
288 $search_date_valid_endday =
'';
289 $search_date_valid_endmonth =
'';
290 $search_date_valid_endyear =
'';
291 $search_date_valid_start =
'';
292 $search_date_valid_end =
'';
297 $objectclass =
'SupplierProposal';
298 $objectlabel =
'SupplierProposals';
299 $uploaddir = $conf->supplier_proposal->dir_output;
300 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
308$form =
new Form($db);
312$companystatic =
new Societe($db);
320 if (empty($search_company)) {
321 $search_company = $soc->name;
325$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
326$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage);
328$title = $langs->trans(
'ListOfSupplierProposals');
329$help_url =
'EN:Ask_Price_Supplier|FR:Demande_de_prix_fournisseur';
335if ($search_all || $search_user > 0) {
336 $sql =
'SELECT DISTINCT';
338$sql .=
' s.rowid as socid, s.nom as name, s.name_alias as alias, s.town, s.zip, s.fk_pays, s.client, s.code_client,';
339$sql .=
" typent.code as typent_code,";
340$sql .=
" state.code_departement as state_code, state.nom as state_name,";
341$sql .=
' sp.rowid, sp.note_public, sp.note_private, sp.total_ht, sp.total_tva, sp.total_ttc, sp.localtax1, sp.localtax2, sp.ref, sp.fk_statut as status, sp.fk_user_author, sp.date_valid, sp.date_livraison as dp,';
342$sql .=
' sp.fk_multicurrency, sp.multicurrency_code, sp.multicurrency_tx, sp.multicurrency_total_ht, sp.multicurrency_total_tva as multicurrency_total_vat, sp.multicurrency_total_ttc,';
343$sql .=
' sp.datec as date_creation, sp.tms as date_modification,';
344$sql .=
" p.rowid as project_id, p.ref as project_ref, p.title as project_title,";
345$sql .=
" u.firstname, u.lastname, u.photo, u.login, u.statut as ustatus, u.admin, u.employee, u.email as uemail";
347if (!empty($extrafields->attributes[
$object->table_element][
'label'])) {
348 foreach ($extrafields->attributes[
$object->table_element][
'label'] as $key => $val) {
349 $sql .= ($extrafields->attributes[
$object->table_element][
'type'][$key] !=
'separate' ?
", ef.".$key.
" as options_".$key :
'');
353$parameters = array();
354$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters);
355$sql .= $hookmanager->resPrint;
356$sql .=
' FROM '.MAIN_DB_PREFIX.
'societe as s';
357$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as country on (country.rowid = s.fk_pays)";
358$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_typent as typent on (typent.id = s.fk_typent)";
359$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_departements as state on (state.rowid = s.fk_departement)";
360$sql .=
', '.MAIN_DB_PREFIX.
'supplier_proposal as sp';
361if (isset($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label']) && count($extrafields->attributes[
$object->table_element][
'label'])) {
362 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element.
"_extrafields as ef on (sp.rowid = ef.fk_object)";
365 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'supplier_proposaldet as pd ON sp.rowid=pd.fk_supplier_proposal';
367$sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'user as u ON sp.fk_user_author = u.rowid';
368$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"projet as p ON p.rowid = sp.fk_projet";
369if ($search_user > 0) {
370 $sql .=
", ".MAIN_DB_PREFIX.
"element_contact as c";
371 $sql .=
", ".MAIN_DB_PREFIX.
"c_type_contact as tc";
373$sql .=
' WHERE sp.fk_soc = s.rowid';
374$sql .=
' AND sp.entity IN ('.getEntity(
'supplier_proposal').
')';
384if ($search_country) {
385 $sql .=
" AND s.fk_pays IN (".$db->sanitize($search_country).
')';
387if ($search_type_thirdparty !=
'' && $search_type_thirdparty > 0) {
388 $sql .=
" AND s.fk_typent IN (".$db->sanitize($search_type_thirdparty).
')';
393if (empty($arrayfields[
's.name_alias'][
'checked']) && $search_company) {
394 $sql .=
natural_search(array(
"s.nom",
"s.name_alias"), $search_company);
396 if ($search_company) {
399 if ($search_company_alias) {
404 $sql .=
natural_search(array(
'u.lastname',
'u.firstname',
'u.login'), $search_login);
406if ($search_montant_ht) {
409if ($search_montant_vat !=
'') {
412if ($search_montant_ttc !=
'') {
415if ($search_multicurrency_code !=
'') {
416 $sql .=
" AND sp.multicurrency_code = '".$db->escape($search_multicurrency_code).
"'";
418if ($search_multicurrency_tx !=
'') {
419 $sql .=
natural_search(
'sp.multicurrency_tx', $search_multicurrency_tx, 1);
421if ($search_multicurrency_montant_ht !=
'') {
422 $sql .=
natural_search(
'sp.multicurrency_total_ht', $search_multicurrency_montant_ht, 1);
424if ($search_multicurrency_montant_vat !=
'') {
425 $sql .=
natural_search(
'sp.multicurrency_total_tva', $search_multicurrency_montant_vat, 1);
427if ($search_multicurrency_montant_ttc !=
'') {
428 $sql .=
natural_search(
'sp.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1);
430if ($search_project_ref !=
'') {
434 $sql .=
natural_search(array_keys($fieldstosearchall), $search_all);
437 $sql .=
' AND s.rowid = '.((int) $socid);
439if ($search_status >= 0 && $search_status !=
'') {
440 $sql .=
' AND sp.fk_statut IN ('.$db->sanitize($db->escape($search_status)).
')';
442if ($search_date_start) {
443 $sql .=
" AND sp.date_livraison >= '".$db->idate($search_date_start).
"'";
445if ($search_date_end) {
446 $sql .=
" AND sp.date_livraison <= '".$db->idate($search_date_end).
"'";
448if ($search_date_valid_start) {
449 $sql .=
" AND sp.date_valid >= '".$db->idate($search_date_valid_start).
"'";
451if ($search_date_valid_end) {
452 $sql .=
" AND sp.date_valid <= '".$db->idate($search_date_valid_end).
"'";
458if ($search_user > 0) {
459 $sql .=
" AND c.fk_c_type_contact = tc.rowid AND tc.element='supplier_proposal' AND tc.source='internal' AND c.element_id = sp.rowid AND c.fk_socpeople = ".((int) $search_user);
462if ($search_sale && $search_sale !=
'-1') {
463 if ($search_sale == -2) {
464 $sql .=
" AND NOT EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = sp.fk_soc)";
465 } elseif ($search_sale > 0) {
466 $sql .=
" AND EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = sp.fk_soc AND sc.fk_user = ".((int) $search_sale).
")";
470$searchCategoryProductOperator = -1;
471$searchCategoryProductList = array($search_product_category);
472if (!empty($searchCategoryProductList)) {
473 $searchCategoryProductSqlList = array();
474 $listofcategoryid =
'';
475 foreach ($searchCategoryProductList as $searchCategoryProduct) {
476 if (intval($searchCategoryProduct) == -2) {
477 $searchCategoryProductSqlList[] =
"NOT EXISTS (SELECT ck.fk_product FROM ".MAIN_DB_PREFIX.
"categorie_product as ck, ".MAIN_DB_PREFIX.
"supplier_proposaldet as sd WHERE sd.fk_supplier_proposal = sp.rowid AND sd.fk_product = ck.fk_product)";
478 } elseif (intval($searchCategoryProduct) > 0) {
479 if ($searchCategoryProductOperator == 0) {
480 $searchCategoryProductSqlList[] =
" EXISTS (SELECT ck.fk_product FROM ".MAIN_DB_PREFIX.
"categorie_product as ck, ".MAIN_DB_PREFIX.
"supplier_proposaldet as sd WHERE sd.fk_supplier_proposal = sp.rowid AND sd.fk_product = ck.fk_product AND ck.fk_categorie = ".((int) $searchCategoryProduct).
")";
482 $listofcategoryid .= ($listofcategoryid ?
', ' :
'') .((
int) $searchCategoryProduct);
486 if ($listofcategoryid) {
487 $searchCategoryProductSqlList[] =
" EXISTS (SELECT ck.fk_product FROM ".MAIN_DB_PREFIX.
"categorie_product as ck, ".MAIN_DB_PREFIX.
"supplier_proposaldet as sd WHERE sd.fk_supplier_proposal = sp.rowid AND sd.fk_product = ck.fk_product AND ck.fk_categorie IN (".$db->sanitize($listofcategoryid).
"))";
489 if ($searchCategoryProductOperator == 1) {
490 if (!empty($searchCategoryProductSqlList)) {
491 $sql .=
" AND (".implode(
' OR ', $searchCategoryProductSqlList).
")";
494 if (!empty($searchCategoryProductSqlList)) {
495 $sql .=
" AND (".implode(
' AND ', $searchCategoryProductSqlList).
")";
500include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
502$parameters = array();
503$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters, $object, $action);
504$sql .= $hookmanager->resPrint;
506$sql .= $db->order($sortfield, $sortorder);
507$sql .=
', sp.ref DESC';
510$nbtotalofrecords =
'';
512 $resql = $db->query($sql);
513 $nbtotalofrecords = $db->num_rows($resql);
514 if (($page * $limit) > $nbtotalofrecords) {
520$sql .= $db->plimit($limit + 1, $offset);
522$resql = $db->query($sql);
525 $userstatic =
new User($db);
530 $title = $langs->trans(
'SupplierProposals').
' - '.$soc->name;
532 $title = $langs->trans(
'SupplierProposals');
535 $num = $db->num_rows($resql);
537 $arrayofselected = is_array($toselect) ? $toselect : array();
539 if ($num == 1 &&
getDolGlobalString(
'MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all) {
540 $obj = $db->fetch_object($resql);
544 header(
"Location: ".DOL_URL_ROOT.
'/supplier_proposal/card.php?id='.$id);
551 llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'bodyforlist');
555 $param .=
'&mode='.urlencode($mode);
557 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
558 $param .=
'&contextpage='.urlencode($contextpage);
560 if ($limit > 0 && $limit != $conf->liste_limit) {
561 $param .=
'&limit='.((int) $limit);
564 $param .=
'&search_all='.urlencode($search_all);
566 if ($search_date_startday) {
567 $param .=
'&search_date_startday='.urlencode((
string) ($search_date_startday));
569 if ($search_date_startmonth) {
570 $param .=
'&search_date_startmonth='.urlencode((
string) ($search_date_startmonth));
572 if ($search_date_startyear) {
573 $param .=
'&search_date_startyear='.urlencode((
string) ($search_date_startyear));
575 if ($search_date_endday) {
576 $param .=
'&search_date_endday='.urlencode((
string) ($search_date_endday));
578 if ($search_date_endmonth) {
579 $param .=
'&search_date_endmonth='.urlencode((
string) ($search_date_endmonth));
581 if ($search_date_endyear) {
582 $param .=
'&search_date_endyear='.urlencode((
string) ($search_date_endyear));
584 if ($search_date_valid_startday) {
585 $param .=
'&search_date_valid_startday='.urlencode((
string) ($search_date_valid_startday));
587 if ($search_date_valid_startmonth) {
588 $param .=
'&search_date_valid_startmonth='.urlencode((
string) ($search_date_valid_startmonth));
590 if ($search_date_valid_startyear) {
591 $param .=
'&search_date_valid_startyear='.urlencode((
string) ($search_date_valid_startyear));
593 if ($search_date_valid_endday) {
594 $param .=
'&search_date_valid_endday='.urlencode((
string) ($search_date_valid_endday));
596 if ($search_date_valid_endmonth) {
597 $param .=
'&search_date_valid_endmonth='.urlencode((
string) ($search_date_valid_endmonth));
599 if ($search_date_valid_endyear) {
600 $param .=
'&search_date_valid_endyear='.urlencode((
string) ($search_date_valid_endyear));
603 $param .=
'&search_ref='.urlencode($search_ref);
605 if ($search_company) {
606 $param .=
'&search_company='.urlencode($search_company);
608 if ($search_company_alias) {
609 $param .=
'&search_company_alias='.urlencode($search_company_alias);
611 if ($search_user > 0) {
612 $param .=
'&search_user='.urlencode((
string) ($search_user));
614 if ($search_sale > 0) {
615 $param .=
'&search_sale='.urlencode($search_sale);
617 if ($search_montant_ht) {
618 $param .=
'&search_montant_ht='.urlencode($search_montant_ht);
620 if ($search_multicurrency_code !=
'') {
621 $param .=
'&search_multicurrency_code='.urlencode($search_multicurrency_code);
623 if ($search_multicurrency_tx !=
'') {
624 $param .=
'&search_multicurrency_tx='.urlencode($search_multicurrency_tx);
626 if ($search_multicurrency_montant_ht !=
'') {
627 $param .=
'&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht);
629 if ($search_multicurrency_montant_vat !=
'') {
630 $param .=
'&search_multicurrency_montant_vat='.urlencode($search_multicurrency_montant_vat);
632 if ($search_multicurrency_montant_ttc !=
'') {
633 $param .=
'&search_multicurrency_montant_ttc='.urlencode($search_multicurrency_montant_ttc);
636 $param .=
'&search_login='.urlencode($search_login);
639 $param .=
'&search_town='.urlencode($search_town);
642 $param .=
'&search_zip='.urlencode($search_zip);
645 $param .=
'&socid='.urlencode((
string) ($socid));
647 if ($search_status !=
'') {
648 $param .=
'&search_status='.urlencode($search_status);
650 if ($search_project_ref >= 0) {
651 $param .=
"&search_project_ref=".urlencode($search_project_ref);
653 if ($optioncss !=
'') {
654 $param .=
'&optioncss='.urlencode($optioncss);
656 if ($search_type_thirdparty !=
'' && $search_type_thirdparty > 0) {
657 $param .=
'&search_type_thirdparty='.urlencode((
string) ($search_type_thirdparty));
660 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
663 $arrayofmassactions = array(
664 'generate_doc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"ReGeneratePDF"),
665 'builddoc' =>
img_picto(
'',
'pdf',
'class="pictofixedwidth"').$langs->trans(
"PDFMerge"),
668 if ($user->hasRight(
'supplier_proposal',
'supprimer')) {
669 $arrayofmassactions[
'predelete'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
671 if (in_array($massaction, array(
'presend',
'predelete'))) {
672 $arrayofmassactions = array();
674 $massactionbutton = $form->selectMassAction(
'', $arrayofmassactions);
676 $url = DOL_URL_ROOT.
'/supplier_proposal/card.php?action=create';
677 if (!empty($socid)) {
678 $url .=
'&socid='.$socid;
681 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ViewList'),
'',
'fa fa-bars imgforviewmode', $_SERVER[
"PHP_SELF"].
'?mode=common'.preg_replace(
'/(&|\?)*mode=[^&]+/',
'', $param),
'', ((empty($mode) || $mode ==
'common') ? 2 : 1), array(
'morecss' =>
'reposition'));
682 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ViewKanban'),
'',
'fa fa-th-list imgforviewmode', $_SERVER[
"PHP_SELF"].
'?mode=kanban'.preg_replace(
'/(&|\?)*mode=[^&]+/',
'', $param),
'', ($mode ==
'kanban' ? 2 : 1), array(
'morecss' =>
'reposition'));
684 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewAskPrice'),
'',
'fa fa-plus-circle', $url,
'', $user->hasRight(
'supplier_proposal',
'creer'));
687 print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
688 if ($optioncss !=
'') {
689 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
691 print
'<input type="hidden" name="token" value="'.newToken().
'">';
692 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
693 print
'<input type="hidden" name="action" value="list">';
694 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
695 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
696 print
'<input type="hidden" name="mode" value="'.$mode.
'">';
698 print_barre_liste($title, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'supplier_proposal', 0, $newcardbutton,
'', $limit, 0, 0, 1);
700 $topicmail =
"SendSupplierProposalRef";
701 $modelmail =
"supplier_proposal_send";
703 $trackid =
'spro'.$object->id;
704 include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
707 foreach ($fieldstosearchall as $key => $val) {
708 $fieldstosearchall[$key] = $langs->trans($val);
710 print
'<div class="divsearchfieldfilter">'.$langs->trans(
"FilterOnInto", $search_all).implode(
', ', $fieldstosearchall).
'</div>';
718 if ($user->hasRight(
'user',
'user',
'lire')) {
719 $langs->load(
"commercial");
720 $moreforfilter .=
'<div class="divsearchfield">';
721 $tmptitle = $langs->trans(
'ThirdPartiesOfSaleRepresentative');
722 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$formother->select_salesrepresentatives($search_sale,
'search_sale', $user, 0, $tmptitle,
'maxwidth250 widthcentpercentminusx');
723 $moreforfilter .=
'</div>';
726 if ($user->hasRight(
'user',
'user',
'lire')) {
727 $moreforfilter .=
'<div class="divsearchfield">';
728 $tmptitle = $langs->trans(
'LinkedToSpecificUsers');
729 $moreforfilter .=
img_picto($tmptitle,
'user',
'class="pictofixedwidth"').$form->select_dolusers($search_user,
'search_user', $tmptitle,
'', 0,
'',
'', 0, 0, 0,
'', 0,
'',
'maxwidth250 widthcentpercentminusx');
730 $moreforfilter .=
'</div>';
733 if (isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire') && ($user->hasRight(
'produit',
'lire') || $user->hasRight(
'service',
'lire'))) {
734 include_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
735 $moreforfilter .=
'<div class="divsearchfield">';
736 $tmptitle = $langs->trans(
'IncludingProductWithTag');
737 $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT,
null,
'parent',
null,
null, 1);
738 $moreforfilter .=
img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$form->selectarray(
'search_product_category', $cate_arbo, $search_product_category, $tmptitle, 0, 0,
'', 0, 0, 0, 0,
'maxwidth300 widthcentpercentminusx', 1);
739 $moreforfilter .=
'</div>';
741 $parameters = array();
742 $reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
743 if (empty($reshook)) {
744 $moreforfilter .= $hookmanager->resPrint;
746 $moreforfilter = $hookmanager->resPrint;
749 if (!empty($moreforfilter)) {
750 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
751 print $moreforfilter;
755 $varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
756 $selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
757 $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons(
'checkforselect', 1) :
'');
759 print
'<div class="div-table-responsive">';
760 print
'<table class="tagtable nobottomiftotal liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
764 print
'<tr class="liste_titre_filter">';
767 print
'<td class="liste_titre maxwidthsearch">';
768 $searchpicto = $form->showFilterButtons(
'left');
772 if (!empty($arrayfields[
'sp.ref'][
'checked'])) {
773 print
'<td class="liste_titre">';
774 print
'<input class="flat" size="6" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
778 if (!empty($arrayfields[
'sp.fk_projet'][
'checked'])) {
779 print
'<td class="liste_titre">';
780 print
'<input type="text" class="flat" name="search_project_ref" value="'.$search_project_ref.
'">';
783 if (!empty($arrayfields[
's.nom'][
'checked'])) {
784 print
'<td class="liste_titre left">';
785 print
'<input class="flat" type="text" size="12" name="search_company" value="'.dol_escape_htmltag($search_company).
'">';
788 if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
789 print
'<td class="liste_titre left">';
790 print
'<input class="flat" type="text" size="12" name="search_company_alias" value="'.dol_escape_htmltag($search_company_alias).
'">';
793 if (!empty($arrayfields[
's.town'][
'checked'])) {
794 print
'<td class="liste_titre"><input class="flat" type="text" size="6" name="search_town" value="'.$search_town.
'"></td>';
796 if (!empty($arrayfields[
's.zip'][
'checked'])) {
797 print
'<td class="liste_titre"><input class="flat" type="text" size="4" name="search_zip" value="'.$search_zip.
'"></td>';
800 if (!empty($arrayfields[
'state.nom'][
'checked'])) {
801 print
'<td class="liste_titre">';
802 print
'<input class="flat" size="4" type="text" name="search_state" value="'.dol_escape_htmltag($search_state).
'">';
806 if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
807 print
'<td class="liste_titre center">';
808 print $form->select_country($search_country,
'search_country',
'', 0,
'minwidth100imp maxwidth100');
812 if (!empty($arrayfields[
'typent.code'][
'checked'])) {
813 print
'<td class="liste_titre maxwidthonsmartphone center">';
814 print $form->selectarray(
"search_type_thirdparty", $formcompany->typent_array(0), $search_type_thirdparty, 1, 0, 0,
'', 0, 0, 0, (!
getDolGlobalString(
'SOCIETE_SORT_ON_TYPEENT') ?
'ASC' : $conf->global->SOCIETE_SORT_ON_TYPEENT),
'', 1);
818 if (!empty($arrayfields[
'sp.date_valid'][
'checked'])) {
819 print
'<td class="liste_titre center">';
820 print
'<div class="nowrapfordate">';
821 print $form->selectDate($search_date_valid_start ? $search_date_valid_start : -1,
'search_date_valid_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
823 print
'<div class="nowrapfordate">';
824 print $form->selectDate($search_date_valid_end ? $search_date_valid_end : -1,
'search_date_valid_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
829 if (!empty($arrayfields[
'sp.date_livraison'][
'checked'])) {
830 print
'<td class="liste_titre center">';
831 print
'<div class="nowrapfordate">';
832 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
834 print
'<div class="nowrapfordate">';
835 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
840 if (!empty($arrayfields[
'sp.total_ht'][
'checked'])) {
842 print
'<td class="liste_titre right">';
843 print
'<input class="flat" type="text" size="5" name="search_montant_ht" value="'.dol_escape_htmltag($search_montant_ht).
'">';
846 if (!empty($arrayfields[
'sp.total_tva'][
'checked'])) {
848 print
'<td class="liste_titre right">';
849 print
'<input class="flat" type="text" size="5" name="search_montant_vat" value="'.dol_escape_htmltag($search_montant_vat).
'">';
852 if (!empty($arrayfields[
'sp.total_ttc'][
'checked'])) {
854 print
'<td class="liste_titre right">';
855 print
'<input class="flat" type="text" size="5" name="search_montant_ttc" value="'.dol_escape_htmltag($search_montant_ttc).
'">';
858 if (!empty($arrayfields[
'sp.multicurrency_code'][
'checked'])) {
860 print
'<td class="liste_titre">';
861 print $form->selectMultiCurrency($search_multicurrency_code,
'search_multicurrency_code', 1);
864 if (!empty($arrayfields[
'sp.multicurrency_tx'][
'checked'])) {
866 print
'<td class="liste_titre">';
867 print
'<input class="flat" type="text" size="4" name="search_multicurrency_tx" value="'.dol_escape_htmltag($search_multicurrency_tx).
'">';
870 if (!empty($arrayfields[
'sp.multicurrency_total_ht'][
'checked'])) {
872 print
'<td class="liste_titre right">';
873 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_ht" value="'.dol_escape_htmltag($search_multicurrency_montant_ht).
'">';
876 if (!empty($arrayfields[
'sp.multicurrency_total_vat'][
'checked'])) {
878 print
'<td class="liste_titre right">';
879 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_vat" value="'.dol_escape_htmltag($search_multicurrency_montant_vat).
'">';
882 if (!empty($arrayfields[
'sp.multicurrency_total_ttc'][
'checked'])) {
884 print
'<td class="liste_titre right">';
885 print
'<input class="flat" type="text" size="4" name="search_multicurrency_montant_ttc" value="'.dol_escape_htmltag($search_multicurrency_montant_ttc).
'">';
888 if (!empty($arrayfields[
'u.login'][
'checked'])) {
890 print
'<td class="liste_titre center">';
891 print
'<input class="flat" size="4" type="text" name="search_login" value="'.dol_escape_htmltag($search_login).
'">';
895 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_input.tpl.php';
897 $parameters = array(
'arrayfields' => $arrayfields);
898 $reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
899 print $hookmanager->resPrint;
901 if (!empty($arrayfields[
'sp.datec'][
'checked'])) {
902 print
'<td class="liste_titre">';
906 if (!empty($arrayfields[
'sp.tms'][
'checked'])) {
907 print
'<td class="liste_titre">';
911 if (!empty($arrayfields[
'sp.fk_statut'][
'checked'])) {
912 print
'<td class="liste_titre center parentonrightofpage">';
913 $formpropal->selectProposalStatus($search_status, 1, 0, 1,
'supplier',
'search_status',
'search_status width100 onrightofpage');
918 print
'<td class="liste_titre maxwidthsearch">';
919 $searchpicto = $form->showFilterButtons();
926 $totalarray = array();
927 $totalarray[
'nbfield'] = 0;
930 print
'<tr class="liste_titre">';
932 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
933 $totalarray[
'nbfield']++;
935 if (!empty($arrayfields[
'sp.ref'][
'checked'])) {
936 print_liste_field_titre($arrayfields[
'sp.ref'][
'label'], $_SERVER[
"PHP_SELF"],
'sp.ref',
'', $param,
'', $sortfield, $sortorder);
937 $totalarray[
'nbfield']++;
940 if (!empty($arrayfields[
'sp.fk_projet'][
'checked'])) {
941 print_liste_field_titre($arrayfields[
'sp.fk_projet'][
'label'], $_SERVER[
"PHP_SELF"],
"p.ref",
"", $param,
'', $sortfield, $sortorder);
942 $totalarray[
'nbfield']++;
945 if (!empty($arrayfields[
's.nom'][
'checked'])) {
946 print_liste_field_titre($arrayfields[
's.nom'][
'label'], $_SERVER[
"PHP_SELF"],
's.nom',
'', $param,
'', $sortfield, $sortorder);
947 $totalarray[
'nbfield']++;
949 if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
950 print_liste_field_titre($arrayfields[
's.name_alias'][
'label'], $_SERVER[
"PHP_SELF"],
's.name_alias',
'', $param,
'', $sortfield, $sortorder);
951 $totalarray[
'nbfield']++;
953 if (!empty($arrayfields[
's.town'][
'checked'])) {
954 print_liste_field_titre($arrayfields[
's.town'][
'label'], $_SERVER[
"PHP_SELF"],
's.town',
'', $param,
'', $sortfield, $sortorder);
955 $totalarray[
'nbfield']++;
957 if (!empty($arrayfields[
's.zip'][
'checked'])) {
958 print_liste_field_titre($arrayfields[
's.zip'][
'label'], $_SERVER[
"PHP_SELF"],
's.zip',
'', $param,
'', $sortfield, $sortorder);
959 $totalarray[
'nbfield']++;
961 if (!empty($arrayfields[
'state.nom'][
'checked'])) {
962 print_liste_field_titre($arrayfields[
'state.nom'][
'label'], $_SERVER[
"PHP_SELF"],
"state.nom",
"", $param,
'', $sortfield, $sortorder);
963 $totalarray[
'nbfield']++;
965 if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
966 print_liste_field_titre($arrayfields[
'country.code_iso'][
'label'], $_SERVER[
"PHP_SELF"],
"country.code_iso",
"", $param,
'', $sortfield, $sortorder,
'center ');
967 $totalarray[
'nbfield']++;
969 if (!empty($arrayfields[
'typent.code'][
'checked'])) {
970 print_liste_field_titre($arrayfields[
'typent.code'][
'label'], $_SERVER[
"PHP_SELF"],
"typent.code",
"", $param,
'', $sortfield, $sortorder,
'center ');
971 $totalarray[
'nbfield']++;
973 if (!empty($arrayfields[
'sp.date_valid'][
'checked'])) {
974 print_liste_field_titre($arrayfields[
'sp.date_valid'][
'label'], $_SERVER[
"PHP_SELF"],
'sp.date_valid',
'', $param,
'', $sortfield, $sortorder,
'center ');
975 $totalarray[
'nbfield']++;
977 if (!empty($arrayfields[
'sp.date_livraison'][
'checked'])) {
978 print_liste_field_titre($arrayfields[
'sp.date_livraison'][
'label'], $_SERVER[
"PHP_SELF"],
'sp.date_livraison',
'', $param,
'', $sortfield, $sortorder,
'center ');
979 $totalarray[
'nbfield']++;
981 if (!empty($arrayfields[
'sp.total_ht'][
'checked'])) {
982 print_liste_field_titre($arrayfields[
'sp.total_ht'][
'label'], $_SERVER[
"PHP_SELF"],
'sp.total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
983 $totalarray[
'nbfield']++;
985 if (!empty($arrayfields[
'sp.total_tva'][
'checked'])) {
986 print_liste_field_titre($arrayfields[
'sp.total_tva'][
'label'], $_SERVER[
"PHP_SELF"],
'sp.total_tva',
'', $param,
'', $sortfield, $sortorder,
'right ');
987 $totalarray[
'nbfield']++;
989 if (!empty($arrayfields[
'sp.total_ttc'][
'checked'])) {
990 print_liste_field_titre($arrayfields[
'sp.total_ttc'][
'label'], $_SERVER[
"PHP_SELF"],
'sp.total_ttc',
'', $param,
'', $sortfield, $sortorder,
'right ');
991 $totalarray[
'nbfield']++;
993 if (!empty($arrayfields[
'sp.multicurrency_code'][
'checked'])) {
994 print_liste_field_titre($arrayfields[
'sp.multicurrency_code'][
'label'], $_SERVER[
'PHP_SELF'],
'sp.multicurrency_code',
'', $param,
'', $sortfield, $sortorder);
995 $totalarray[
'nbfield']++;
997 if (!empty($arrayfields[
'sp.multicurrency_tx'][
'checked'])) {
998 print_liste_field_titre($arrayfields[
'sp.multicurrency_tx'][
'label'], $_SERVER[
'PHP_SELF'],
'sp.multicurrency_tx',
'', $param,
'', $sortfield, $sortorder);
999 $totalarray[
'nbfield']++;
1001 if (!empty($arrayfields[
'sp.multicurrency_total_ht'][
'checked'])) {
1002 print_liste_field_titre($arrayfields[
'sp.multicurrency_total_ht'][
'label'], $_SERVER[
'PHP_SELF'],
'sp.multicurrency_total_ht',
'', $param,
'class="right"', $sortfield, $sortorder);
1003 $totalarray[
'nbfield']++;
1005 if (!empty($arrayfields[
'sp.multicurrency_total_vat'][
'checked'])) {
1006 print_liste_field_titre($arrayfields[
'sp.multicurrency_total_vat'][
'label'], $_SERVER[
'PHP_SELF'],
'sp.multicurrency_total_tva',
'', $param,
'class="right"', $sortfield, $sortorder);
1007 $totalarray[
'nbfield']++;
1009 if (!empty($arrayfields[
'sp.multicurrency_total_ttc'][
'checked'])) {
1010 print_liste_field_titre($arrayfields[
'sp.multicurrency_total_ttc'][
'label'], $_SERVER[
'PHP_SELF'],
'sp.multicurrency_total_ttc',
'', $param,
'class="right"', $sortfield, $sortorder);
1011 $totalarray[
'nbfield']++;
1013 if (!empty($arrayfields[
'u.login'][
'checked'])) {
1014 print_liste_field_titre($arrayfields[
'u.login'][
'label'], $_SERVER[
"PHP_SELF"],
'u.login',
'', $param,
'', $sortfield, $sortorder,
'center ');
1015 $totalarray[
'nbfield']++;
1018 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
1020 $parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
1021 $reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1022 print $hookmanager->resPrint;
1023 if (!empty($arrayfields[
'sp.datec'][
'checked'])) {
1024 print_liste_field_titre($arrayfields[
'sp.datec'][
'label'], $_SERVER[
"PHP_SELF"],
"sp.datec",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
1025 $totalarray[
'nbfield']++;
1027 if (!empty($arrayfields[
'sp.tms'][
'checked'])) {
1028 print_liste_field_titre($arrayfields[
'sp.tms'][
'label'], $_SERVER[
"PHP_SELF"],
"sp.tms",
"", $param,
'', $sortfield, $sortorder,
'center nowrap');
1029 $totalarray[
'nbfield']++;
1031 if (!empty($arrayfields[
'sp.fk_statut'][
'checked'])) {
1032 print_liste_field_titre($arrayfields[
'sp.fk_statut'][
'label'], $_SERVER[
"PHP_SELF"],
"sp.fk_statut",
"", $param,
'', $sortfield, $sortorder,
'center ');
1033 $totalarray[
'nbfield']++;
1037 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1038 $totalarray[
'nbfield']++;
1047 $userstatic =
new User($db);
1049 $projectstatic =
new Project($db);
1051 $savnbfield = $totalarray[
'nbfield'];
1052 $totalarray = array(
'nbfield' => 0,
'val' => array(),
'pos' => array());
1053 $totalarray[
'val'][
'sp.total_ht'] = 0;
1054 $totalarray[
'val'][
'sp.total_tva'] = 0;
1055 $totalarray[
'val'][
'sp.total_ttc'] = 0;
1057 $imaxinloop = ($limit ? min($num, $limit) : $num);
1058 while ($i < $imaxinloop) {
1059 $obj = $db->fetch_object($resql);
1061 $objectstatic->id = $obj->rowid;
1062 $objectstatic->ref = $obj->ref;
1063 $objectstatic->note_public = $obj->note_public;
1064 $objectstatic->note_private = $obj->note_private;
1065 $objectstatic->status = $obj->status;
1068 $companystatic->id = $obj->socid;
1069 $companystatic->name = $obj->name;
1070 $companystatic->name_alias = $obj->alias;
1071 $companystatic->client = $obj->client;
1072 $companystatic->code_client = $obj->code_client;
1074 if ($mode ==
'kanban') {
1076 print
'<tr class="trkanban"><td colspan="'.$savnbfield.
'">';
1077 print
'<div class="box-flex-container kanban">';
1081 $userstatic->fetch($obj->fk_user_author);
1082 $objectstatic->delivery_date = $obj->dp;
1083 print $objectstatic->getKanbanView(
'', array(
'thirdparty' => $companystatic,
'userauthor' => $userstatic,
'selected' => in_array($obj->rowid, $arrayofselected)));
1084 if ($i == ($imaxinloop - 1)) {
1089 print
'<tr class="oddeven">';
1092 print
'<td class="nowrap center">';
1093 if ($massactionbutton || $massaction) {
1095 if (in_array($obj->rowid, $arrayofselected)) {
1098 print
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1102 if (!empty($arrayfields[
'sp.ref'][
'checked'])) {
1103 print
'<td class="nowraponall">';
1105 print
'<table class="nobordernopadding"><tr class="nocellnopadd">';
1107 print
'<td class="nobordernopadding nowraponall">';
1108 print $objectstatic->getNomUrl(1,
'',
'', 0, -1, 1);
1114 print
'<td style="min-width: 20px" class="nobordernopadding nowrap">';
1119 print
'<td width="16" class="right nobordernopadding hideonsmartphone">';
1122 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$obj->rowid;
1123 print $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1124 print
'</td></tr></table>';
1128 $totalarray[
'nbfield']++;
1133 if (!empty($arrayfields[
'sp.fk_projet'][
'checked'])) {
1134 $projectstatic->id = $obj->project_id;
1135 $projectstatic->ref = $obj->project_ref;
1136 $projectstatic->title = $obj->project_title;
1138 if ($obj->project_id > 0) {
1139 print $projectstatic->getNomUrl(1);
1143 $totalarray[
'nbfield']++;
1148 if (!empty($arrayfields[
's.nom'][
'checked'])) {
1149 print
'<td class="tdoverflowmax200">';
1150 print $companystatic->getNomUrl(1,
'supplier', 0, 0, -1, empty($arrayfields[
's.name_alias'][
'checked']) ? 0 : 1);
1153 $totalarray[
'nbfield']++;
1158 if (!empty($arrayfields[
's.name_alias'][
'checked'])) {
1159 print
'<td class="tdoverflowmax200">';
1160 print $companystatic->name_alias;
1163 $totalarray[
'nbfield']++;
1168 if (!empty($arrayfields[
's.town'][
'checked'])) {
1169 print
'<td class="nocellnopadd">';
1173 $totalarray[
'nbfield']++;
1177 if (!empty($arrayfields[
's.zip'][
'checked'])) {
1178 print
'<td class="nocellnopadd">';
1182 $totalarray[
'nbfield']++;
1186 if (!empty($arrayfields[
'state.nom'][
'checked'])) {
1187 print
"<td>".$obj->state_name.
"</td>\n";
1189 $totalarray[
'nbfield']++;
1193 if (!empty($arrayfields[
'country.code_iso'][
'checked'])) {
1194 print
'<td class="center">';
1195 $tmparray =
getCountry($obj->fk_pays,
'all');
1196 print $tmparray[
'label'];
1199 $totalarray[
'nbfield']++;
1203 if (!empty($arrayfields[
'typent.code'][
'checked'])) {
1204 print
'<td class="center">';
1205 if (empty($typenArray) || !is_array($typenArray) || count($typenArray) == 0) {
1206 $typenArray = $formcompany->typent_array(1);
1208 print $typenArray[$obj->typent_code];
1211 $totalarray[
'nbfield']++;
1216 if (!empty($arrayfields[
'sp.date_valid'][
'checked'])) {
1217 print
'<td class="center">';
1221 $totalarray[
'nbfield']++;
1226 if (!empty($arrayfields[
'sp.date_livraison'][
'checked'])) {
1227 print
'<td class="center">';
1231 $totalarray[
'nbfield']++;
1236 if (!empty($arrayfields[
'sp.total_ht'][
'checked'])) {
1237 print
'<td class="right"><span class="amount">'.price($obj->total_ht).
"</span></td>\n";
1239 $totalarray[
'nbfield']++;
1242 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'sp.total_ht';
1244 $totalarray[
'val'][
'sp.total_ht'] += $obj->total_ht;
1247 if (!empty($arrayfields[
'sp.total_tva'][
'checked'])) {
1248 print
'<td class="right"><span class="amount">'.price($obj->total_tva).
"</span></td>\n";
1250 $totalarray[
'nbfield']++;
1253 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'sp.total_tva';
1255 $totalarray[
'val'][
'sp.total_tva'] += $obj->total_tva;
1258 if (!empty($arrayfields[
'sp.total_ttc'][
'checked'])) {
1259 print
'<td class="right"><span class="amount">'.price($obj->total_ttc).
"</span></td>\n";
1261 $totalarray[
'nbfield']++;
1264 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'sp.total_ttc';
1266 $totalarray[
'val'][
'sp.total_ttc'] += $obj->total_ttc;
1270 if (!empty($arrayfields[
'sp.multicurrency_code'][
'checked'])) {
1271 print
'<td class="nowrap">'.$obj->multicurrency_code.
' - '.$langs->trans(
'Currency'.$obj->multicurrency_code).
"</td>\n";
1273 $totalarray[
'nbfield']++;
1278 if (!empty($arrayfields[
'sp.multicurrency_tx'][
'checked'])) {
1279 print
'<td class="nowrap">';
1280 $form->form_multicurrency_rate($_SERVER[
'PHP_SELF'].
'?id='.$obj->rowid, $obj->multicurrency_tx,
'none', $obj->multicurrency_code);
1283 $totalarray[
'nbfield']++;
1287 if (!empty($arrayfields[
'sp.multicurrency_total_ht'][
'checked'])) {
1288 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_ht).
"</span></td>\n";
1290 $totalarray[
'nbfield']++;
1294 if (!empty($arrayfields[
'sp.multicurrency_total_vat'][
'checked'])) {
1295 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_vat).
"</span></td>\n";
1297 $totalarray[
'nbfield']++;
1301 if (!empty($arrayfields[
'sp.multicurrency_total_ttc'][
'checked'])) {
1302 print
'<td class="right nowrap"><span class="amount">'.price($obj->multicurrency_total_ttc).
"</span></td>\n";
1304 $totalarray[
'nbfield']++;
1308 $userstatic->id = $obj->fk_user_author;
1309 $userstatic->login = $obj->login;
1310 $userstatic->status = $obj->ustatus;
1311 $userstatic->lastname = $obj->name;
1312 $userstatic->firstname = $obj->firstname;
1313 $userstatic->photo = $obj->photo;
1314 $userstatic->admin = $obj->admin;
1315 $userstatic->ref = $obj->fk_user_author;
1316 $userstatic->employee = $obj->employee;
1317 $userstatic->email = $obj->uemail;
1320 if (!empty($arrayfields[
'u.login'][
'checked'])) {
1321 print
'<td class="tdoverflowmax125">';
1322 if ($userstatic->id > 0) {
1323 print $userstatic->getNomUrl(-1,
'', 0, 0, 24, 1,
'login',
'', 1);
1327 $totalarray[
'nbfield']++;
1332 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_print_fields.tpl.php';
1334 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &$totalarray);
1335 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1336 print $hookmanager->resPrint;
1338 if (!empty($arrayfields[
'sp.datec'][
'checked'])) {
1339 print
'<td class="center nowraponall">';
1340 print
dol_print_date($db->jdate($obj->date_creation),
'dayhour',
'tzuser');
1343 $totalarray[
'nbfield']++;
1347 if (!empty($arrayfields[
'sp.tms'][
'checked'])) {
1348 print
'<td class="center nowraponall">';
1349 print
dol_print_date($db->jdate($obj->date_modification),
'dayhour',
'tzuser');
1352 $totalarray[
'nbfield']++;
1356 if (!empty($arrayfields[
'sp.fk_statut'][
'checked'])) {
1357 print
'<td class="center">'.$objectstatic->getLibStatut(5).
"</td>\n";
1359 $totalarray[
'nbfield']++;
1365 print
'<td class="nowrap center">';
1366 if ($massactionbutton || $massaction) {
1368 if (in_array($obj->rowid, $arrayofselected)) {
1371 print
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1376 $totalarray[
'nbfield']++;
1381 $total += $obj->total_ht;
1382 $subtotal += $obj->total_ht;
1388 include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1393 foreach ($arrayfields as $key => $val) {
1394 if (!empty($val[
'checked'])) {
1398 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1403 $parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
1404 $reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters);
1405 print $hookmanager->resPrint;
1407 print
'</table>'.
"\n";
1408 print
'</div>'.
"\n";
1410 print
'</form>'.
"\n";
1412 $hidegeneratedfilelistifempty = 1;
1413 if ($massaction ==
'builddoc' || $action ==
'remove_file' || $show_files) {
1414 $hidegeneratedfilelistifempty = 0;
1418 $urlsource = $_SERVER[
'PHP_SELF'].
'?sortfield='.$sortfield.
'&sortorder='.$sortorder;
1419 $urlsource .= str_replace(
'&',
'&', $param);
1421 $filedir = $diroutputmassaction;
1423 $genallowed = $user->hasRight(
'supplier_proposal',
'lire');
1424 $delallowed = $user->hasRight(
'supplier_proposal',
'creer');
1426 print $formfile->showdocuments(
'massfilesarea_supplier_proposal',
'', $filedir, $urlsource, 0, $delallowed,
'', 1, 1, 0, 48, 1, $param, $title,
'',
'',
'',
null, $hidegeneratedfilelistifempty);
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Class to manage projects.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage price ask supplier.
Class to manage Dolibarr users.
getCountry($searchkey, $withcode='', $dbtouse=null, $outputlangs=null, $entconv=1, $searchlabel='')
Return country label, code or id from an id, code or label.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
natural_search($fields, $value, $mode=0, $nofirstand=0)
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by the value of a given key, which produces ascending (default) or descending out...
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
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 dolibarr global constant string value.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.