diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index e3298a7fe12..93edb0d1f07 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -3422,7 +3422,7 @@ class Propal extends CommonObject $response->label = $label; $response->labelShort = $labelShort; $response->url = DOL_URL_ROOT.'/comm/propal/list.php?search_status='.$status.'&mainmenu=commercial&leftmenu=propals'; - $response->url_late = DOL_URL_ROOT.'/comm/propal/list.php?search_status='.$status.'&mainmenu=commercial&leftmenu=propals&sortfield=p.datep&sortorder=asc'; + $response->url_late = DOL_URL_ROOT.'/comm/propal/list.php?search_option=late&mainmenu=commercial&leftmenu=propals&sortfield=p.datep&sortorder=asc'; $response->img = img_object('', "propal"); // This assignment in condition is not a bug. It allows walking the results. diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index bfdff73df75..69c0204929b 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -18,6 +18,7 @@ * Copyright (C) 2021-2024 Frédéric France * Copyright (C) 2022 Josep Lluís Amador * Copyright (C) 2024 MDW + * Copyright (C) 2024 William Mead * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -146,6 +147,12 @@ $search_date_signature_end = dol_mktime(23, 59, 59, $search_date_signature_endmo $search_status = GETPOST('search_status', 'alpha'); $search_note_public = GETPOST('search_note_public', 'alpha'); +$search_option = GETPOST('search_option', 'alpha'); +if ($search_option == 'late') { + $search_status = '1'; + $object_statut = '1'; +} + // Pagination $limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'aZ09comma'); @@ -257,11 +264,11 @@ $arrayfields = array( // List of fields to search into when doing a "search in all" /*$fieldstosearchall = array(); -foreach ($object->fields as $key => $val) { - if (!empty($val['searchall'])) { - $fieldstosearchall['t.'.$key] = $val['label']; - } -}*/ + foreach ($object->fields as $key => $val) { + if (!empty($val['searchall'])) { + $fieldstosearchall['t.'.$key] = $val['label']; + } + }*/ // Definition of array of fields for columns /*$arrayfields = array(); @@ -375,6 +382,7 @@ if (empty($reshook)) { $search_date_delivery_start = ''; $search_date_delivery_end = ''; $search_availability = ''; + $search_option = ''; $search_status = ''; $search_categ_cus = 0; $search_fk_cond_reglement = ''; @@ -800,6 +808,9 @@ if (!empty($searchCategoryProductList)) { } } } +if ($search_option == 'late') { + $sql .= " AND p.fin_validite < '".$db->idate(dol_now() - $conf->propal->cloture->warning_delay)."'"; +} // Add where from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; //print $sql; @@ -1703,10 +1714,11 @@ if (isModEnabled('margin') && ( || !empty($arrayfields['total_margin']['checked']) || !empty($arrayfields['total_margin_rate']['checked']) || !empty($arrayfields['total_mark_rate']['checked']) -) -) { - $with_margin_info = true; + ) + ) { + $with_margin_info = true; } + $total_ht = 0; $total_margin = 0; @@ -1720,6 +1732,9 @@ while ($i < $imaxinloop) { if (empty($obj)) { break; // Should not happen } + if ($search_option) { + $param .= "&search_option=".urlencode($search_option); + } $objectstatic->id = $obj->rowid; $objectstatic->ref = $obj->ref; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 1b161b867bb..f5adbc2b460 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -11,9 +11,10 @@ * Copyright (C) 2014-2015 Marcos García * Copyright (C) 2018 Nicolas ZABOURI * Copyright (C) 2016-2022 Ferran Marcet - * Copyright (C) 2021-2024 Frédéric France - * Copyright (C) 2022 Gauthier VERDOL - * Copyright (C) 2024 MDW + * Copyright (C) 2021-2024 Frédéric France + * Copyright (C) 2022 Gauthier VERDOL + * Copyright (C) 2024 MDW + * Copyright (C) 2024 William Mead * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -3595,10 +3596,12 @@ class Commande extends CommonOrder } $response = new WorkboardResponse(); + $response->warning_delay = $delay_warning; $response->label = $label; $response->labelShort = $labelShort; $response->url = $url; + $response->url_late = DOL_URL_ROOT.'/commande/list.php?search_option=late&mainmenu=commercial&leftmenu=orders'; $response->img = img_object('', "order"); $generic_commande = new Commande($this->db); diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 97511bee9a1..61f1a5f767f 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -16,6 +16,7 @@ * Copyright (C) 2024 Noé Cendrier * Copyright (C) 2024 Benjamin Falière * Copyright (C) 2024 Alexandre Spangaro + * Copyright (C) 2024 William Mead * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -126,6 +127,11 @@ $search_fk_shipping_method = GETPOST('search_fk_shipping_method', 'intcomma'); $search_fk_mode_reglement = GETPOST('search_fk_mode_reglement', 'intcomma'); $search_fk_input_reason = GETPOST('search_fk_input_reason', 'intcomma'); +$search_option = GETPOST('search_option', 'alpha'); +if ($search_option == 'late') { + $search_status = '-2'; +} + $diroutputmassaction = $conf->commande->multidir_output[$conf->entity].'/temp/massgeneration/'.$user->id; // Load variable for pagination @@ -316,6 +322,7 @@ if (empty($reshook)) { $search_fk_shipping_method = ''; $search_fk_mode_reglement = ''; $search_fk_input_reason = ''; + $search_option = ''; } if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha') || GETPOST('button_search_x', 'alpha') || GETPOST('button_search.x', 'alpha') || GETPOST('button_search', 'alpha')) { @@ -642,6 +649,9 @@ if (empty($reshook)) { if ($search_status != '') { $param .= '&search_status='.urlencode($search_status); } + if ($search_option) { + $param .= "&search_option=".urlencode($search_option); + } if ($search_orderday) { $param .= '&search_orderday='.urlencode($search_orderday); } @@ -939,7 +949,9 @@ if ($search_status != '') { $sql .= ' AND (c.fk_statut IN (1,2,3))'; // validated, in process or closed } } - +if ($search_option == 'late') { + $sql .= " AND c.date_commande < '".$db->idate(dol_now() - $conf->commande->client->warning_delay)."'"; +} if ($search_datecloture_start) { $sql .= " AND c.date_cloture >= '".$db->idate($search_datecloture_start)."'"; } @@ -1229,6 +1241,9 @@ if ($socid > 0) { if ($search_status != '') { $param .= '&search_status='.urlencode($search_status); } +if ($search_option) { + $param .= "&search_option=".urlencode($search_option); +} if ($search_datecloture_start) { $param .= '&search_datecloture_startday='.dol_print_date($search_datecloture_start, '%d').'&search_datecloture_startmonth='.dol_print_date($search_datecloture_start, '%m').'&search_datecloture_startyear='.dol_print_date($search_datecloture_start, '%Y'); } @@ -1530,6 +1545,7 @@ if (isModEnabled('stock') && getDolGlobalString('WAREHOUSE_ASK_WAREHOUSE_DURING_ $moreforfilter .= img_picto($tmptitle, 'stock', 'class="pictofixedwidth"').$formproduct->selectWarehouses($search_warehouse, 'search_warehouse', '', 1, 0, 0, $tmptitle, 0, 0, array(), 'maxwidth250 widthcentpercentminusx'); $moreforfilter .= ''; } + $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) {