2004-11-26 15:20:43 +01:00
< ? php
/* Copyright ( C ) 2001 - 2004 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2020-05-04 17:07:18 +02:00
* Copyright ( C ) 2004 - 2020 Laurent Destailleur < eldy @ users . sourceforge . net >
2018-10-27 14:43:12 +02:00
* Copyright ( C ) 2005 - 2012 Regis Houssin < regis . houssin @ inodbox . com >
2013-09-10 16:43:06 +02:00
* Copyright ( C ) 2013 Cédric Salvador < csalvador @ gpcsolutions . fr >
2019-05-11 16:58:00 +02:00
* Copyright ( C ) 2014 - 2019 Juanjo Menent < jmenent @ 2 byte . es >
2015-10-17 00:52:35 +02:00
* Copyright ( C ) 2015 Claudio Aschieri < c . aschieri @ 19. coop >
* Copyright ( C ) 2015 Jean - François Ferry < jfefe @ aternatik . fr >
2018-04-20 10:38:16 +02:00
* Copyright ( C ) 2016 - 2018 Ferran Marcet < fmarcet @ 2 byte . es >
2021-08-19 04:47:08 +02:00
* Copyright ( C ) 2019 Nicolas Zabouri < info @ inovea - conseil . com >
* Copyright ( C ) 2021 Alexandre Spangaro < aspangaro @ open - dsi . fr >
2004-11-26 15:20:43 +01:00
*
* 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
2013-01-16 15:36:08 +01:00
* the Free Software Foundation ; either version 3 of the License , or
2004-11-26 15:20:43 +01:00
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
2019-09-23 21:55:30 +02:00
* along with this program . If not , see < https :// www . gnu . org / licenses />.
2004-11-26 15:20:43 +01:00
*/
2005-04-23 00:39:11 +02:00
/**
2014-09-18 20:33:37 +02:00
* \file htdocs / contrat / list . php
2008-10-27 20:19:51 +01:00
* \ingroup contrat
2019-03-25 09:14:28 +01:00
* \brief Page to list contracts
2008-10-27 20:19:51 +01:00
*/
2004-11-26 15:20:43 +01:00
2022-09-07 20:08:59 +02:00
// Load Dolibarr environment
2018-07-26 11:57:25 +02:00
require '../main.inc.php' ;
2017-09-16 15:39:52 +02:00
require_once DOL_DOCUMENT_ROOT . '/contrat/class/contrat.class.php' ;
2015-02-23 20:26:34 +01:00
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php' ;
2017-09-16 15:39:52 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php' ;
2021-02-09 21:35:50 +01:00
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formcompany.class.php' ;
2016-08-17 11:58:55 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php' ;
2016-09-02 14:47:59 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/company.lib.php' ;
2023-04-18 20:23:34 +02:00
if ( isModEnabled ( " categorie " )) {
2022-04-22 16:09:52 +02:00
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php' ;
}
2004-11-26 15:20:43 +01:00
2018-05-26 20:32:23 +02:00
// Load translation files required by the page
$langs -> loadLangs ( array ( 'contracts' , 'products' , 'companies' , 'compta' ));
2004-11-26 15:20:43 +01:00
2020-09-16 19:39:50 +02:00
$action = GETPOST ( 'action' , 'aZ09' );
2019-11-12 09:46:08 +01:00
$massaction = GETPOST ( 'massaction' , 'alpha' );
$show_files = GETPOST ( 'show_files' , 'int' );
$confirm = GETPOST ( 'confirm' , 'alpha' );
2016-09-02 14:47:59 +02:00
$toselect = GETPOST ( 'toselect' , 'array' );
2023-12-04 12:01:45 +01:00
$contextpage = GETPOST ( 'contextpage' , 'aZ' ) ? GETPOST ( 'contextpage' , 'aZ' ) : 'contractlist' ; // To manage different context of search
2023-02-19 02:18:46 +01:00
$optioncss = GETPOST ( 'optioncss' , 'alpha' );
2023-01-09 18:23:33 +01:00
$mode = GETPOST ( 'mode' , 'alpha' );
2019-11-12 09:46:08 +01:00
$search_name = GETPOST ( 'search_name' , 'alpha' );
$search_email = GETPOST ( 'search_email' , 'alpha' );
$search_town = GETPOST ( 'search_town' , 'alpha' );
$search_zip = GETPOST ( 'search_zip' , 'alpha' );
2020-08-28 21:27:50 +02:00
$search_state = GETPOST ( " search_state " , 'alpha' );
2019-11-12 09:46:08 +01:00
$search_country = GETPOST ( " search_country " , 'int' );
$search_type_thirdparty = GETPOST ( " search_type_thirdparty " , 'int' );
$search_contract = GETPOST ( 'search_contract' , 'alpha' );
$search_ref_customer = GETPOST ( 'search_ref_customer' , 'alpha' );
$search_ref_supplier = GETPOST ( 'search_ref_supplier' , 'alpha' );
2023-01-25 14:48:41 +01:00
$search_all = ( GETPOST ( 'search_all' , 'alphanohtml' ) != '' ) ? GETPOST ( 'search_all' , 'alphanohtml' ) : GETPOST ( 'sall' , 'alphanohtml' );
2019-11-12 09:46:08 +01:00
$search_status = GETPOST ( 'search_status' , 'alpha' );
$socid = GETPOST ( 'socid' , 'int' );
$search_user = GETPOST ( 'search_user' , 'int' );
$search_sale = GETPOST ( 'search_sale' , 'int' );
$search_product_category = GETPOST ( 'search_product_category' , 'int' );
$search_dfmonth = GETPOST ( 'search_dfmonth' , 'int' );
$search_dfyear = GETPOST ( 'search_dfyear' , 'int' );
$search_op2df = GETPOST ( 'search_op2df' , 'alpha' );
2021-08-19 04:47:08 +02:00
$search_date_startday = GETPOST ( 'search_date_startday' , 'int' );
$search_date_startmonth = GETPOST ( 'search_date_startmonth' , 'int' );
$search_date_startyear = GETPOST ( 'search_date_startyear' , 'int' );
$search_date_endday = GETPOST ( 'search_date_endday' , 'int' );
$search_date_endmonth = GETPOST ( 'search_date_endmonth' , 'int' );
$search_date_endyear = GETPOST ( 'search_date_endyear' , 'int' );
$search_date_start = dol_mktime ( 0 , 0 , 0 , $search_date_startmonth , $search_date_startday , $search_date_startyear ); // Use tzserver
$search_date_end = dol_mktime ( 23 , 59 , 59 , $search_date_endmonth , $search_date_endday , $search_date_endyear );
2022-04-22 16:09:52 +02:00
$searchCategoryCustomerOperator = 0 ;
if ( GETPOSTISSET ( 'formfilteraction' )) {
$searchCategoryCustomerOperator = GETPOST ( 'search_category_customer_operator' , 'int' );
2023-11-27 11:39:32 +01:00
} elseif ( getDolGlobalString ( 'MAIN_SEARCH_CAT_OR_BY_DEFAULT' )) {
2024-01-05 04:18:53 +01:00
$searchCategoryCustomerOperator = getDolGlobalString ( 'MAIN_SEARCH_CAT_OR_BY_DEFAULT' );
2022-04-22 16:09:52 +02:00
}
$searchCategoryCustomerList = GETPOST ( 'search_category_customer_list' , 'array' );
2019-01-27 11:55:16 +01:00
2023-10-09 19:51:38 +02:00
$search_date_creation_startmonth = GETPOST ( 'search_date_creation_startmonth' , 'int' );
$search_date_creation_startyear = GETPOST ( 'search_date_creation_startyear' , 'int' );
$search_date_creation_startday = GETPOST ( 'search_date_creation_startday' , 'int' );
$search_date_creation_start = dol_mktime ( 0 , 0 , 0 , $search_date_creation_startmonth , $search_date_creation_startday , $search_date_creation_startyear ); // Use tzserver
$search_date_creation_endmonth = GETPOST ( 'search_date_creation_endmonth' , 'int' );
$search_date_creation_endyear = GETPOST ( 'search_date_creation_endyear' , 'int' );
$search_date_creation_endday = GETPOST ( 'search_date_creation_endday' , 'int' );
$search_date_creation_end = dol_mktime ( 23 , 59 , 59 , $search_date_creation_endmonth , $search_date_creation_endday , $search_date_creation_endyear ); // Use tzserver
$search_date_modif_startmonth = GETPOST ( 'search_date_modif_startmonth' , 'int' );
$search_date_modif_startyear = GETPOST ( 'search_date_modif_startyear' , 'int' );
$search_date_modif_startday = GETPOST ( 'search_date_modif_startday' , 'int' );
$search_date_modif_start = dol_mktime ( 0 , 0 , 0 , $search_date_modif_startmonth , $search_date_modif_startday , $search_date_modif_startyear ); // Use tzserver
$search_date_modif_endmonth = GETPOST ( 'search_date_modif_endmonth' , 'int' );
$search_date_modif_endyear = GETPOST ( 'search_date_modif_endyear' , 'int' );
$search_date_modif_endday = GETPOST ( 'search_date_modif_endday' , 'int' );
$search_date_modif_end = dol_mktime ( 23 , 59 , 59 , $search_date_modif_endmonth , $search_date_modif_endday , $search_date_modif_endyear ); // Use tzserver
2023-02-19 02:18:46 +01:00
// Load variable for pagination
2023-12-04 12:01:45 +01:00
$limit = GETPOST ( 'limit' , 'int' ) ? GETPOST ( 'limit' , 'int' ) : $conf -> liste_limit ;
2022-01-13 11:09:37 +01:00
$sortfield = GETPOST ( 'sortfield' , 'aZ09comma' );
$sortorder = GETPOST ( 'sortorder' , 'aZ09comma' );
2020-03-13 13:07:11 +01:00
$page = GETPOSTISSET ( 'pageplusone' ) ? ( GETPOST ( 'pageplusone' ) - 1 ) : GETPOST ( " page " , 'int' );
2023-02-19 02:18:46 +01:00
if ( empty ( $page ) || $page < 0 || GETPOST ( 'button_search' , 'alpha' ) || GETPOST ( 'button_removefilter' , 'alpha' )) {
// If $page is not defined, or '' or -1 or if we click on clear filters
2021-02-23 21:24:38 +01:00
$page = 0 ;
2023-02-19 02:18:46 +01:00
}
2016-02-11 20:40:33 +01:00
$offset = $limit * $page ;
$pageprev = $page - 1 ;
$pagenext = $page + 1 ;
2021-02-23 21:24:38 +01:00
if ( ! $sortfield ) {
$sortfield = 'c.ref' ;
}
if ( ! $sortorder ) {
$sortorder = 'DESC' ;
}
2005-04-23 00:39:11 +02:00
2008-02-25 17:30:43 +01:00
// Security check
2019-11-12 09:46:08 +01:00
$id = GETPOST ( 'id' , 'int' );
2021-02-23 21:24:38 +01:00
if ( $user -> socid ) {
$socid = $user -> socid ;
}
2012-07-25 11:46:33 +02:00
$result = restrictedArea ( $user , 'contrat' , $id );
2004-11-26 15:20:43 +01:00
2019-11-12 09:46:08 +01:00
$diroutputmassaction = $conf -> contrat -> dir_output . '/temp/massgeneration/' . $user -> id ;
2017-09-16 15:39:52 +02:00
2019-11-12 09:46:08 +01:00
$staticcontrat = new Contrat ( $db );
$staticcontratligne = new ContratLigne ( $db );
2006-03-18 18:41:36 +01:00
2021-02-23 21:24:38 +01:00
if ( $search_status == '' ) {
$search_status = 1 ;
}
2014-11-03 06:05:51 +01:00
2017-06-10 12:56:28 +02:00
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
2018-03-31 18:48:27 +02:00
$object = new Contrat ( $db );
$hookmanager -> initHooks ( array ( 'contractlist' ));
2016-07-13 12:02:45 +02:00
$extrafields = new ExtraFields ( $db );
// fetch optionals attributes and labels
2020-08-04 12:47:09 +02:00
$extrafields -> fetch_name_optionals_label ( $object -> table_element );
2019-10-06 14:41:52 +02:00
2019-11-12 09:46:08 +01:00
$search_array_options = $extrafields -> getOptionalsFromPost ( $object -> table_element , '' , 'search_' );
2015-10-17 00:52:35 +02:00
// List of fields to search into when doing a "search in all"
2023-01-25 15:27:10 +01:00
$fieldstosearchall = array ();
foreach ( $object -> fields as $key => $val ) {
if ( ! empty ( $val [ 'searchall' ])) {
$fieldstosearchall [ 'c.' . $key ] = $val [ 'label' ];
}
}
$fieldstosearchall [ " s.nom " ] = " ThirdParty " ;
2021-02-23 21:24:38 +01:00
if ( empty ( $user -> socid )) {
$fieldstosearchall [ " c.note_private " ] = " NotePrivate " ;
}
2023-01-25 15:27:10 +01:00
$parameters = array ( 'fieldstosearchall' => $fieldstosearchall );
$reshook = $hookmanager -> executeHooks ( 'completeFieldsToSearchAll' , $parameters , $object , $action ); // Note that $action and $object may have been modified by some hooks
if ( $reshook > 0 ) {
$fieldstosearchall = $hookmanager -> resArray [ 'fieldstosearchall' ];
} elseif ( $reshook == 0 ) {
2023-02-21 16:14:14 +01:00
if ( ! empty ( $hookmanager -> resArray [ 'fieldstosearchall' ])) {
$fieldstosearchall = array_merge ( $fieldstosearchall , $hookmanager -> resArray [ 'fieldstosearchall' ]);
}
2023-01-25 15:27:10 +01:00
}
2015-10-17 00:52:35 +02:00
2019-11-12 09:46:08 +01:00
$arrayfields = array (
2020-12-09 19:26:41 +01:00
'c.ref' => array ( 'label' => $langs -> trans ( " Ref " ), 'checked' => 1 , 'position' => 10 ),
'c.ref_customer' => array ( 'label' => $langs -> trans ( " RefCustomer " ), 'checked' => 1 , 'position' => 12 ),
'c.ref_supplier' => array ( 'label' => $langs -> trans ( " RefSupplier " ), 'checked' => 1 , 'position' => 14 ),
's.nom' => array ( 'label' => $langs -> trans ( " ThirdParty " ), 'checked' => 1 , 'position' => 30 ),
's.email' => array ( 'label' => $langs -> trans ( " ThirdPartyEmail " ), 'checked' => 0 , 'position' => 30 ),
's.town' => array ( 'label' => $langs -> trans ( " Town " ), 'checked' => 0 , 'position' => 31 ),
2021-05-18 18:18:00 +02:00
's.zip' => array ( 'label' => $langs -> trans ( " Zip " ), 'checked' => 1 , 'position' => 32 ),
2020-12-09 19:26:41 +01:00
'state.nom' => array ( 'label' => $langs -> trans ( " StateShort " ), 'checked' => 0 , 'position' => 33 ),
'country.code_iso' => array ( 'label' => $langs -> trans ( " Country " ), 'checked' => 0 , 'position' => 34 ),
2021-05-18 18:18:00 +02:00
'sale_representative' => array ( 'label' => $langs -> trans ( " SaleRepresentativesOfThirdParty " ), 'checked' =>- 1 , 'position' => 80 ),
2020-12-09 19:26:41 +01:00
'c.date_contrat' => array ( 'label' => $langs -> trans ( " DateContract " ), 'checked' => 1 , 'position' => 45 ),
2017-10-13 13:28:26 +02:00
'c.datec' => array ( 'label' => $langs -> trans ( " DateCreation " ), 'checked' => 0 , 'position' => 500 ),
'c.tms' => array ( 'label' => $langs -> trans ( " DateModificationShort " ), 'checked' => 0 , 'position' => 500 ),
2017-11-07 13:33:24 +01:00
'lower_planned_end_date' => array ( 'label' => $langs -> trans ( " LowerDateEndPlannedShort " ), 'checked' => 1 , 'position' => 900 , 'help' => $langs -> trans ( " LowerDateEndPlannedShort " )),
2017-10-13 13:28:26 +02:00
'status' => array ( 'label' => $langs -> trans ( " Status " ), 'checked' => 1 , 'position' => 1000 ),
2016-09-02 14:47:59 +02:00
);
// Extra fields
2020-12-23 19:14:47 +01:00
include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_list_array_fields.tpl.php' ;
2019-09-02 03:58:00 +02:00
$object -> fields = dol_sort_array ( $object -> fields , 'position' );
$arrayfields = dol_sort_array ( $arrayfields , 'position' );
2016-09-02 14:47:59 +02:00
2023-11-24 16:30:31 +01:00
if ( ! $user -> hasRight ( 'societe' , 'client' , 'voir' )) {
$search_sale = $user -> id ;
}
2023-06-19 23:05:59 +02:00
$permissiontoread = $user -> hasRight ( 'contrat' , 'lire' );
$permissiontoadd = $user -> hasRight ( 'contrat' , 'creer' );
2023-06-19 23:11:08 +02:00
$permissiontodelete = $user -> hasRight ( 'contrat' , 'supprimer' );
2023-01-25 14:48:41 +01:00
2023-10-18 17:49:13 +02:00
$result = restrictedArea ( $user , 'contrat' , 0 );
2004-11-26 15:20:43 +01:00
2016-07-13 12:02:45 +02:00
/*
2023-01-25 14:48:41 +01:00
* Actions
2016-07-13 12:02:45 +02:00
*/
2021-02-23 21:24:38 +01:00
if ( GETPOST ( 'cancel' , 'alpha' )) {
2023-02-19 02:18:46 +01:00
$action = 'list' ;
$massaction = '' ;
2021-02-23 21:24:38 +01:00
}
if ( ! GETPOST ( 'confirmmassaction' , 'alpha' ) && $massaction != 'presend' && $massaction != 'confirm_presend' ) {
$massaction = '' ;
}
2016-09-02 14:47:59 +02:00
2019-11-12 09:46:08 +01:00
$parameters = array ( 'socid' => $socid );
$reshook = $hookmanager -> executeHooks ( 'doActions' , $parameters , $object , $action ); // Note that $action and $object may have been modified by some hooks
2021-02-23 21:24:38 +01:00
if ( $reshook < 0 ) {
setEventMessages ( $hookmanager -> error , $hookmanager -> errors , 'errors' );
}
2016-07-13 12:02:45 +02:00
include DOL_DOCUMENT_ROOT . '/core/actions_changeselectedfields.inc.php' ;
2016-09-02 14:47:59 +02:00
// Purge search criteria
2021-02-23 21:24:38 +01:00
if ( GETPOST ( 'button_removefilter_x' , 'alpha' ) || GETPOST ( 'button_removefilter.x' , 'alpha' ) || GETPOST ( 'button_removefilter' , 'alpha' )) { // All test are required to be compatible with all browsers
2019-11-12 09:46:08 +01:00
$search_dfmonth = '' ;
$search_dfyear = '' ;
$search_op2df = '' ;
$search_name = " " ;
$search_email = " " ;
$search_town = '' ;
$search_zip = " " ;
$search_state = " " ;
$search_type = '' ;
$search_country = '' ;
$search_contract = " " ;
$search_ref_customer = " " ;
$search_ref_supplier = " " ;
$search_user = '' ;
$search_sale = '' ;
$search_product_category = '' ;
2021-08-19 04:47:08 +02:00
$search_date_startday = '' ;
$search_date_startmonth = '' ;
$search_date_startyear = '' ;
$search_date_endday = '' ;
$search_date_endmonth = '' ;
$search_date_endyear = '' ;
$search_date_start = '' ;
$search_date_end = '' ;
2023-01-25 14:48:41 +01:00
$search_all = " " ;
2023-10-09 19:51:38 +02:00
$search_date_creation_startmonth = " " ;
$search_date_creation_startyear = " " ;
$search_date_creation_startday = " " ;
$search_date_creation_start = " " ;
$search_date_creation_endmonth = " " ;
$search_date_creation_endyear = " " ;
$search_date_creation_endday = " " ;
$search_date_creation_end = " " ;
$search_date_modif_startmonth = " " ;
$search_date_modif_startyear = " " ;
$search_date_modif_startday = " " ;
$search_date_modif_start = " " ;
$search_date_modif_endmonth = " " ;
$search_date_modif_endyear = " " ;
$search_date_modif_endday = " " ;
$search_date_modif_end = " " ;
2019-11-12 09:46:08 +01:00
$search_status = " " ;
2022-05-08 18:25:22 +02:00
$toselect = array ();
2021-02-04 09:48:17 +01:00
$search_type_thirdparty = '' ;
2022-04-22 16:09:52 +02:00
$searchCategoryCustomerList = array ();
2019-11-12 09:46:08 +01:00
$search_array_options = array ();
2016-09-02 14:47:59 +02:00
}
2021-02-23 21:24:38 +01:00
if ( empty ( $reshook )) {
2019-11-12 09:46:08 +01:00
$objectclass = 'Contrat' ;
$objectlabel = 'Contracts' ;
2017-10-13 13:28:26 +02:00
$uploaddir = $conf -> contrat -> dir_output ;
include DOL_DOCUMENT_ROOT . '/core/actions_massactions.inc.php' ;
2016-07-13 12:02:45 +02:00
}
2006-03-18 18:41:36 +01:00
/*
2008-10-27 20:19:51 +01:00
* View
2006-03-18 18:41:36 +01:00
*/
2017-09-16 15:39:52 +02:00
$form = new Form ( $db );
$formfile = new FormFile ( $db );
2015-02-23 20:26:34 +01:00
$formother = new FormOther ( $db );
$socstatic = new Societe ( $db );
2021-02-04 09:48:17 +01:00
$formcompany = new FormCompany ( $db );
2017-03-02 13:24:56 +01:00
$contracttmp = new Contrat ( $db );
2023-02-19 02:18:46 +01:00
$now = dol_now ();
2021-10-23 23:12:42 +02:00
$title = " " ;
2009-02-09 20:31:06 +01:00
2005-07-03 15:07:59 +02:00
$sql = 'SELECT' ;
2024-02-15 14:08:08 +01:00
$sql .= " c.rowid, c.ref, c.datec as date_creation, c.tms as date_modification, c.date_contrat, c.statut, c.ref_customer, c.ref_supplier, c.note_private, c.note_public, c.entity, " ;
2020-12-20 18:21:34 +01:00
$sql .= ' s.rowid as socid, s.nom as name, s.name_alias, s.email, s.town, s.zip, s.fk_pays as country_id, s.client, s.code_client, s.status as company_status, s.logo as company_logo,' ;
2019-11-12 09:46:08 +01:00
$sql .= " typent.code as typent_code, " ;
$sql .= " state.code_departement as state_code, state.nom as state_name, " ;
$sql .= " MIN( " . $db -> ifsql ( " cd.statut=4 " , " cd.date_fin_validite " , " null " ) . " ) as lower_planned_end_date, " ;
2021-08-28 00:55:51 +02:00
$sql .= " SUM( " . $db -> ifsql ( " cd.statut=0 " , 1 , 0 ) . ') as nb_initial,' ;
$sql .= " SUM( " . $db -> ifsql ( " cd.statut=4 AND (cd.date_fin_validite IS NULL OR cd.date_fin_validite >= ' " . $db -> idate ( $now ) . " ') " , 1 , 0 ) . ') as nb_running,' ;
$sql .= " SUM( " . $db -> ifsql ( " cd.statut=4 AND (cd.date_fin_validite IS NOT NULL AND cd.date_fin_validite < ' " . $db -> idate ( $now ) . " ') " , 1 , 0 ) . ') as nb_expired,' ;
$sql .= " SUM( " . $db -> ifsql ( " cd.statut=4 AND (cd.date_fin_validite IS NOT NULL AND cd.date_fin_validite < ' " . $db -> idate ( $now - $conf -> contrat -> services -> expires -> warning_delay ) . " ') " , 1 , 0 ) . ') as nb_late,' ;
$sql .= " SUM( " . $db -> ifsql ( " cd.statut=5 " , 1 , 0 ) . ') as nb_closed' ;
2016-09-02 14:47:59 +02:00
// Add fields from extrafields
2019-11-12 09:46:08 +01:00
if ( ! empty ( $extrafields -> attributes [ $object -> table_element ][ 'label' ])) {
2021-02-23 21:24:38 +01:00
foreach ( $extrafields -> attributes [ $object -> table_element ][ 'label' ] as $key => $val ) {
2021-08-27 22:42:04 +02:00
$sql .= ( $extrafields -> attributes [ $object -> table_element ][ 'type' ][ $key ] != 'separate' ? " , ef. " . $key . " as options_ " . $key : '' );
2021-02-23 21:24:38 +01:00
}
2019-10-16 03:34:32 +02:00
}
2016-09-02 14:47:59 +02:00
// Add fields from hooks
2019-11-12 09:46:08 +01:00
$parameters = array ();
2022-10-18 10:45:48 +02:00
$reshook = $hookmanager -> executeHooks ( 'printFieldListSelect' , $parameters , $object , $action ); // Note that $action and $object may have been modified by hook
2023-03-16 14:58:44 +01:00
$sql .= $hookmanager -> resPrint ;
2023-02-19 02:18:46 +01:00
$sql = preg_replace ( '/,\s*$/' , '' , $sql );
2023-01-25 14:48:41 +01:00
$sqlfields = $sql ; // $sql fields to remove for count total
2019-11-12 09:46:08 +01:00
$sql .= " FROM " . MAIN_DB_PREFIX . " societe as s " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " c_country as country on (country.rowid = s.fk_pays) " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " c_typent as typent on (typent.id = s.fk_typent) " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " c_departements as state on (state.rowid = s.fk_departement) " ;
$sql .= " , " . MAIN_DB_PREFIX . " contrat as c " ;
2021-10-23 23:12:42 +02:00
if ( ! empty ( $extrafields -> attributes [ $object -> table_element ][ 'label' ]) && is_array ( $extrafields -> attributes [ $object -> table_element ][ 'label' ]) && count ( $extrafields -> attributes [ $object -> table_element ][ 'label' ])) {
2021-02-23 21:24:38 +01:00
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . $object -> table_element . " _extrafields as ef on (c.rowid = ef.fk_object) " ;
}
2019-11-12 09:46:08 +01:00
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " contratdet as cd ON c.rowid = cd.fk_contrat " ;
2021-02-23 21:24:38 +01:00
if ( $search_user > 0 ) {
2019-11-12 09:46:08 +01:00
$sql .= " , " . MAIN_DB_PREFIX . " element_contact as ec " ;
$sql .= " , " . MAIN_DB_PREFIX . " c_type_contact as tc " ;
2015-10-09 20:00:43 +02:00
}
2019-11-12 09:46:08 +01:00
$sql .= " WHERE c.fk_soc = s.rowid " ;
$sql .= ' AND c.entity IN (' . getEntity ( 'contract' ) . ')' ;
2021-02-23 21:24:38 +01:00
if ( $search_type_thirdparty != '' && $search_type_thirdparty > 0 ) {
$sql .= " AND s.fk_typent IN ( " . $db -> sanitize ( $db -> escape ( $search_type_thirdparty )) . ')' ;
}
2023-11-24 16:30:31 +01:00
if ( $socid > 0 ) {
2021-06-09 15:36:47 +02:00
$sql .= " AND s.rowid = " . (( int ) $socid );
2021-02-23 21:24:38 +01:00
}
2021-08-19 04:47:08 +02:00
if ( $search_date_start ) {
$sql .= " AND c.date_contrat >= ' " . $db -> idate ( $search_date_start ) . " ' " ;
}
if ( $search_date_end ) {
$sql .= " AND c.date_contrat <= ' " . $db -> idate ( $search_date_end ) . " ' " ;
}
2021-02-23 21:24:38 +01:00
if ( $search_name ) {
$sql .= natural_search ( 's.nom' , $search_name );
}
if ( $search_email ) {
$sql .= natural_search ( 's.email' , $search_email );
}
if ( $search_contract ) {
$sql .= natural_search ( array ( 'c.rowid' , 'c.ref' ), $search_contract );
}
if ( ! empty ( $search_ref_customer )) {
$sql .= natural_search ( array ( 'c.ref_customer' ), $search_ref_customer );
}
if ( ! empty ( $search_ref_supplier )) {
$sql .= natural_search ( array ( 'c.ref_supplier' ), $search_ref_supplier );
}
2021-05-25 20:17:54 +02:00
if ( $search_zip ) {
$sql .= natural_search ( array ( 's.zip' ), $search_zip );
}
if ( $search_town ) {
$sql .= natural_search ( array ( 's.town' ), $search_town );
}
2022-05-05 08:43:22 +02:00
if ( $search_country && $search_country != '-1' ) {
$sql .= " AND s.fk_pays IN ( " . $db -> sanitize ( $search_country ) . ')' ;
}
2023-11-24 16:30:31 +01:00
/* if ( $search_sale > 0 ) {
2021-06-09 15:36:47 +02:00
$sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " . (( int ) $search_sale );
2023-11-24 16:30:31 +01:00
} */
2023-01-25 14:48:41 +01:00
if ( $search_all ) {
$sql .= natural_search ( array_keys ( $fieldstosearchall ), $search_all );
2021-02-23 21:24:38 +01:00
}
if ( $search_user > 0 ) {
2021-06-09 15:36:47 +02:00
$sql .= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='contrat' AND tc.source='internal' AND ec.element_id = c.rowid AND ec.fk_socpeople = " . (( int ) $search_user );
2021-02-23 21:24:38 +01:00
}
2023-11-24 16:30:31 +01:00
// Search on sale representative
if ( $search_sale && $search_sale != '-1' ) {
if ( $search_sale == - 2 ) {
$sql .= " AND NOT EXISTS (SELECT sc.fk_soc FROM " . MAIN_DB_PREFIX . " societe_commerciaux as sc WHERE sc.fk_soc = c.fk_soc) " ;
} elseif ( $search_sale > 0 ) {
$sql .= " AND EXISTS (SELECT sc.fk_soc FROM " . MAIN_DB_PREFIX . " societe_commerciaux as sc WHERE sc.fk_soc = c.fk_soc AND sc.fk_user = " . (( int ) $search_sale ) . " ) " ;
}
}
2022-10-31 14:52:54 +01:00
// Search for tag/category ($searchCategoryProductList is an array of ID)
$searchCategoryProductOperator = - 1 ;
$searchCategoryProductList = array ( $search_product_category );
if ( ! empty ( $searchCategoryProductList )) {
$searchCategoryProductSqlList = array ();
$listofcategoryid = '' ;
foreach ( $searchCategoryProductList as $searchCategoryProduct ) {
if ( intval ( $searchCategoryProduct ) == - 2 ) {
$searchCategoryProductSqlList [] = " NOT EXISTS (SELECT ck.fk_product FROM " . MAIN_DB_PREFIX . " categorie_product as ck, " . MAIN_DB_PREFIX . " contratdet as cd WHERE cd.fk_contrat = c.rowid AND cd.fk_product = ck.fk_product) " ;
} elseif ( intval ( $searchCategoryProduct ) > 0 ) {
if ( $searchCategoryProductOperator == 0 ) {
$searchCategoryProductSqlList [] = " EXISTS (SELECT ck.fk_product FROM " . MAIN_DB_PREFIX . " categorie_product as ck, " . MAIN_DB_PREFIX . " contratdet as cd WHERE cd.fk_contrat = c.rowid AND cd.fk_product = ck.fk_product AND ck.fk_categorie = " . (( int ) $searchCategoryProduct ) . " ) " ;
} else {
$listofcategoryid .= ( $listofcategoryid ? ', ' : '' ) . (( int ) $searchCategoryProduct );
}
}
}
if ( $listofcategoryid ) {
$searchCategoryProductSqlList [] = " EXISTS (SELECT ck.fk_product FROM " . MAIN_DB_PREFIX . " categorie_product as ck, " . MAIN_DB_PREFIX . " contratdet as cd WHERE cd.fk_contrat = c.rowid AND cd.fk_product = ck.fk_product AND ck.fk_categorie IN ( " . $db -> sanitize ( $listofcategoryid ) . " )) " ;
}
if ( $searchCategoryProductOperator == 1 ) {
if ( ! empty ( $searchCategoryProductSqlList )) {
$sql .= " AND ( " . implode ( ' OR ' , $searchCategoryProductSqlList ) . " ) " ;
}
} else {
if ( ! empty ( $searchCategoryProductSqlList )) {
$sql .= " AND ( " . implode ( ' AND ' , $searchCategoryProductSqlList ) . " ) " ;
}
}
}
2022-04-22 16:09:52 +02:00
$searchCategoryCustomerSqlList = array ();
if ( $searchCategoryCustomerOperator == 1 ) {
$existsCategoryCustomerList = array ();
foreach ( $searchCategoryCustomerList as $searchCategoryCustomer ) {
if ( intval ( $searchCategoryCustomer ) == - 2 ) {
$sqlCategoryCustomerNotExists = " NOT EXISTS ( " ;
$sqlCategoryCustomerNotExists .= " SELECT cat_cus.fk_soc " ;
$sqlCategoryCustomerNotExists .= " FROM " . $db -> prefix () . " categorie_societe AS cat_cus " ;
$sqlCategoryCustomerNotExists .= " WHERE cat_cus.fk_soc = s.rowid " ;
$sqlCategoryCustomerNotExists .= " ) " ;
$searchCategoryCustomerSqlList [] = $sqlCategoryCustomerNotExists ;
} elseif ( intval ( $searchCategoryCustomer ) > 0 ) {
$existsCategoryCustomerList [] = $db -> escape ( $searchCategoryCustomer );
}
}
if ( ! empty ( $existsCategoryCustomerList )) {
$sqlCategoryCustomerExists = " EXISTS ( " ;
$sqlCategoryCustomerExists .= " SELECT cat_cus.fk_soc " ;
$sqlCategoryCustomerExists .= " FROM " . $db -> prefix () . " categorie_societe AS cat_cus " ;
$sqlCategoryCustomerExists .= " WHERE cat_cus.fk_soc = s.rowid " ;
$sqlCategoryCustomerExists .= " AND cat_cus.fk_categorie IN ( " . $db -> sanitize ( implode ( ',' , $existsCategoryCustomerList )) . " ) " ;
$sqlCategoryCustomerExists .= " ) " ;
$searchCategoryCustomerSqlList [] = $sqlCategoryCustomerExists ;
}
if ( ! empty ( $searchCategoryCustomerSqlList )) {
$sql .= " AND ( " . implode ( ' OR ' , $searchCategoryCustomerSqlList ) . " ) " ;
}
} else {
foreach ( $searchCategoryCustomerList as $searchCategoryCustomer ) {
if ( intval ( $searchCategoryCustomer ) == - 2 ) {
$sqlCategoryCustomerNotExists = " NOT EXISTS ( " ;
$sqlCategoryCustomerNotExists .= " SELECT cat_cus.fk_soc " ;
$sqlCategoryCustomerNotExists .= " FROM " . $db -> prefix () . " categorie_societe AS cat_cus " ;
$sqlCategoryCustomerNotExists .= " WHERE cat_cus.fk_soc = s.rowid " ;
$sqlCategoryCustomerNotExists .= " ) " ;
$searchCategoryCustomerSqlList [] = $sqlCategoryCustomerNotExists ;
} elseif ( intval ( $searchCategoryCustomer ) > 0 ) {
$searchCategoryCustomerSqlList [] = " s.rowid IN (SELECT fk_soc FROM " . $db -> prefix () . " categorie_societe WHERE fk_categorie = " . (( int ) $searchCategoryCustomer ) . " ) " ;
}
}
if ( ! empty ( $searchCategoryCustomerSqlList )) {
$sql .= " AND ( " . implode ( ' AND ' , $searchCategoryCustomerSqlList ) . " ) " ;
}
}
2023-10-09 19:51:38 +02:00
if ( $search_date_creation_start ) {
$sql .= " AND c.datec >= ' " . $db -> idate ( $search_date_creation_start ) . " ' " ;
}
if ( $search_date_creation_end ) {
$sql .= " AND c.datec <= ' " . $db -> idate ( $search_date_creation_end ) . " ' " ;
}
if ( $search_date_modif_start ) {
$sql .= " AND c.tms >= ' " . $db -> idate ( $search_date_modif_start ) . " ' " ;
}
if ( $search_date_modif_end ) {
$sql .= " AND c.tms <= ' " . $db -> idate ( $search_date_modif_end ) . " ' " ;
}
2016-09-02 14:47:59 +02:00
// Add where from extra fields
2017-11-27 15:24:29 +01:00
include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_list_search_sql.tpl.php' ;
2016-09-02 14:47:59 +02:00
// Add where from hooks
2019-11-12 09:46:08 +01:00
$parameters = array ();
2022-10-18 10:45:48 +02:00
$reshook = $hookmanager -> executeHooks ( 'printFieldListWhere' , $parameters , $object , $action ); // Note that $action and $object may have been modified by hook
2019-11-12 09:46:08 +01:00
$sql .= $hookmanager -> resPrint ;
2021-02-10 14:01:52 +01:00
$sql .= " GROUP BY c.rowid, c.ref, c.datec, c.tms, c.date_contrat, c.statut, c.ref_customer, c.ref_supplier, c.note_private, c.note_public, c.entity, " ;
2020-12-20 18:21:34 +01:00
$sql .= ' s.rowid, s.nom, s.name_alias, s.email, s.town, s.zip, s.fk_pays, s.client, s.code_client, s.status, s.logo,' ;
2019-11-12 09:46:08 +01:00
$sql .= " typent.code, " ;
$sql .= " state.code_departement, state.nom " ;
2017-09-18 15:46:17 +02:00
// Add fields from extrafields
2019-11-12 09:46:08 +01:00
if ( ! empty ( $extrafields -> attributes [ $object -> table_element ][ 'label' ])) {
2021-02-23 21:24:38 +01:00
foreach ( $extrafields -> attributes [ $object -> table_element ][ 'label' ] as $key => $val ) {
$sql .= ( $extrafields -> attributes [ $object -> table_element ][ 'type' ][ $key ] != 'separate' ? " , ef. " . $key : '' );
}
2019-10-08 18:43:22 +02:00
}
2016-09-02 14:47:59 +02:00
// Add where from hooks
2022-04-07 15:39:03 +02:00
$parameters = array ( 'search_dfyear' => $search_dfyear , 'search_op2df' => $search_op2df );
$reshook = $hookmanager -> executeHooks ( 'printFieldListGroupBy' , $parameters , $object ); // Note that $action and $object may have been modified by hook
2019-11-12 09:46:08 +01:00
$sql .= $hookmanager -> resPrint ;
2022-04-07 15:39:03 +02:00
// Add HAVING from hooks
$parameters = array ( 'search_dfyear' => $search_dfyear , 'search_op2df' => $search_op2df );
2022-10-18 10:45:48 +02:00
$reshook = $hookmanager -> executeHooks ( 'printFieldListHaving' , $parameters , $object , $action ); // Note that $action and $object may have been modified by hook
2022-04-07 15:39:03 +02:00
if ( empty ( $reshook )) {
if ( $search_dfyear > 0 && $search_op2df ) {
if ( $search_op2df == '<=' ) {
$sql .= " HAVING MIN( " . $db -> ifsql ( " cd.statut=4 " , " cd.date_fin_validite " , " null " ) . " ) <= ' " . $db -> idate ( dol_get_last_day ( $search_dfyear , $search_dfmonth , false )) . " ' " ;
} elseif ( $search_op2df == '>=' ) {
$sql .= " HAVING MIN( " . $db -> ifsql ( " cd.statut=4 " , " cd.date_fin_validite " , " null " ) . " ) >= ' " . $db -> idate ( dol_get_first_day ( $search_dfyear , $search_dfmonth , false )) . " ' " ;
} else {
$sql .= " HAVING MIN( " . $db -> ifsql ( " cd.statut=4 " , " cd.date_fin_validite " , " null " ) . " ) <= ' " . $db -> idate ( dol_get_last_day ( $search_dfyear , $search_dfmonth , false )) . " ' AND MIN( " . $db -> ifsql ( " cd.statut=4 " , " cd.date_fin_validite " , " null " ) . " ) >= ' " . $db -> idate ( dol_get_first_day ( $search_dfyear , $search_dfmonth , false )) . " ' " ;
}
2021-02-23 21:24:38 +01:00
}
2017-09-22 02:43:42 +02:00
}
2022-04-07 15:39:03 +02:00
$sql .= $hookmanager -> resPrint ;
2016-02-11 20:40:33 +01:00
2023-02-19 02:18:46 +01:00
// Count total nb of records
2017-01-15 20:49:20 +01:00
$nbtotalofrecords = '' ;
2023-04-28 16:05:25 +02:00
if ( ! getDolGlobalInt ( 'MAIN_DISABLE_FULL_SCANLIST' )) {
2022-03-19 14:41:10 +01:00
//$result = $db->query($sql);
//$nbtotalofrecords = $db->num_rows($result);
if ( $search_dfyear > 0 && $search_op2df ) {
$resql = $db -> query ( $sql , 0 , 'auto' , 1 );
while ( $db -> fetch_object ( $resql )) {
if ( empty ( $nbtotalofrecords )) {
$nbtotalofrecords = 1 ; // We can't make +1 because init value is ''
} else {
$nbtotalofrecords ++ ;
}
}
} else {
2023-01-25 14:48:41 +01:00
/* The fast and low memory method to get and count full list converts the sql into a sql count */
$sqlforcount = preg_replace ( '/^' . preg_quote ( $sqlfields , '/' ) . '/' , 'SELECT COUNT(*) as nbtotalofrecords' , $sql );
2023-01-29 18:45:09 +01:00
$sqlforcount = preg_replace ( '/LEFT JOIN ' . MAIN_DB_PREFIX . 'contratdet as cd ON c.rowid = cd.fk_contrat /' , '' , $sqlforcount );
2022-03-19 14:41:10 +01:00
$sqlforcount = preg_replace ( '/GROUP BY.*$/' , '' , $sqlforcount );
$resql = $db -> query ( $sqlforcount );
2023-01-25 14:48:41 +01:00
if ( $resql ) {
$objforcount = $db -> fetch_object ( $resql );
$nbtotalofrecords = $objforcount -> nbtotalofrecords ;
} else {
dol_print_error ( $db );
}
2022-03-19 14:41:10 +01:00
}
2021-02-23 21:24:38 +01:00
if (( $page * $limit ) > $nbtotalofrecords ) { // if total resultset is smaller then paging size (filtering), goto and load page 0
2018-04-24 11:37:57 +02:00
$page = 0 ;
$offset = 0 ;
}
2023-02-19 02:18:46 +01:00
$db -> free ( $resql );
2016-02-11 20:40:33 +01:00
}
2023-02-19 02:18:46 +01:00
// Complete request and execute it with limit
2022-03-19 14:41:10 +01:00
$sql .= $db -> order ( $sortfield , $sortorder );
if ( $limit ) {
$sql .= $db -> plimit ( $limit + 1 , $offset );
}
2004-11-26 15:20:43 +01:00
2019-11-12 09:46:08 +01:00
$resql = $db -> query ( $sql );
2021-02-23 21:24:38 +01:00
if ( ! $resql ) {
2018-03-24 18:28:06 +01:00
dol_print_error ( $db );
exit ;
}
2005-07-03 15:07:59 +02:00
2018-03-24 18:28:06 +01:00
$num = $db -> num_rows ( $resql );
2017-06-14 11:28:42 +02:00
2018-03-24 18:28:06 +01:00
// Direct jump if only one record found
2023-11-27 11:39:32 +01:00
if ( $num == 1 && getDolGlobalString ( 'MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE' ) && $search_all && ! $page ) {
2018-03-24 18:28:06 +01:00
$obj = $db -> fetch_object ( $resql );
$id = $obj -> rowid ;
header ( " Location: " . DOL_URL_ROOT . '/contrat/card.php?id=' . $id );
exit ;
}
2017-07-23 19:09:00 +02:00
2017-10-13 13:28:26 +02:00
2018-03-24 18:28:06 +01:00
// Output page
// --------------------------------------------------------------------
2017-10-13 13:28:26 +02:00
2018-03-24 18:28:06 +01:00
llxHeader ( '' , $langs -> trans ( " Contracts " ));
2017-06-14 11:28:42 +02:00
2018-03-24 18:28:06 +01:00
$i = 0 ;
2017-06-14 11:28:42 +02:00
2019-11-12 09:46:08 +01:00
$arrayofselected = is_array ( $toselect ) ? $toselect : array ();
2018-03-24 18:28:06 +01:00
2021-02-23 21:24:38 +01:00
if ( $socid > 0 ) {
2018-03-24 18:28:06 +01:00
$soc = new Societe ( $db );
$soc -> fetch ( $socid );
2021-02-23 21:24:38 +01:00
if ( empty ( $search_name )) {
$search_name = $soc -> name ;
}
2018-03-24 18:28:06 +01:00
}
2019-11-12 09:46:08 +01:00
$param = '' ;
2023-01-09 18:23:33 +01:00
if ( ! empty ( $mode )) {
$param .= '&mode=' . urlencode ( $mode );
}
2021-02-23 21:24:38 +01:00
if ( ! empty ( $contextpage ) && $contextpage != $_SERVER [ " PHP_SELF " ]) {
$param .= '&contextpage=' . urlencode ( $contextpage );
}
if ( $limit > 0 && $limit != $conf -> liste_limit ) {
2023-04-08 01:43:21 +02:00
$param .= '&limit=' . (( int ) $limit );
2021-02-23 21:24:38 +01:00
}
2023-01-25 14:48:41 +01:00
if ( $search_all != '' ) {
$param .= '&search_all=' . urlencode ( $search_all );
2021-02-23 21:24:38 +01:00
}
if ( $search_contract != '' ) {
$param .= '&search_contract=' . urlencode ( $search_contract );
}
if ( $search_name != '' ) {
$param .= '&search_name=' . urlencode ( $search_name );
}
if ( $search_email != '' ) {
$param .= '&search_email=' . urlencode ( $search_email );
}
if ( $search_ref_customer != '' ) {
$param .= '&search_ref_customer=' . urlencode ( $search_ref_customer );
}
if ( $search_ref_supplier != '' ) {
$param .= '&search_ref_supplier=' . urlencode ( $search_ref_supplier );
}
if ( $search_op2df != '' ) {
$param .= '&search_op2df=' . urlencode ( $search_op2df );
}
2023-10-09 19:51:38 +02:00
if ( $search_date_creation_startmonth ) {
$param .= '&search_date_creation_startmonth=' . urlencode ( $search_date_creation_startmonth );
}
if ( $search_date_creation_startyear ) {
$param .= '&search_date_creation_startyear=' . urlencode ( $search_date_creation_startyear );
}
if ( $search_date_creation_startday ) {
$param .= '&search_date_creation_startday=' . urlencode ( $search_date_creation_startday );
}
if ( $search_date_creation_start ) {
$param .= '&search_date_creation_start=' . urlencode ( $search_date_creation_start );
}
if ( $search_date_creation_endmonth ) {
$param .= '&search_date_creation_endmonth=' . urlencode ( $search_date_creation_endmonth );
}
if ( $search_date_creation_endyear ) {
$param .= '&search_date_creation_endyear=' . urlencode ( $search_date_creation_endyear );
}
if ( $search_date_creation_endday ) {
$param .= '&search_date_creation_endday=' . urlencode ( $search_date_creation_endday );
}
if ( $search_date_creation_end ) {
$param .= '&search_date_creation_end=' . urlencode ( $search_date_creation_end );
}
if ( $search_date_modif_startmonth ) {
$param .= '&search_date_modif_startmonth=' . urlencode ( $search_date_modif_startmonth );
}
if ( $search_date_modif_startyear ) {
$param .= '&search_date_modif_startyear=' . urlencode ( $search_date_modif_startyear );
}
if ( $search_date_modif_startday ) {
$param .= '&search_date_modif_startday=' . urlencode ( $search_date_modif_startday );
}
if ( $search_date_modif_start ) {
$param .= '&search_date_modif_start=' . urlencode ( $search_date_modif_start );
}
if ( $search_date_modif_endmonth ) {
$param .= '&search_date_modif_endmonth=' . urlencode ( $search_date_modif_endmonth );
}
if ( $search_date_modif_endyear ) {
$param .= '&search_date_modif_endyear=' . urlencode ( $search_date_modif_endyear );
}
if ( $search_date_modif_endday ) {
$param .= '&search_date_modif_endday=' . urlencode ( $search_date_modif_endday );
}
if ( $search_date_modif_end ) {
$param .= '&search_date_modif_end=' . urlencode ( $search_date_modif_end );
}
2021-09-29 12:46:30 +02:00
if ( $search_date_startday > 0 ) {
2021-08-19 04:47:08 +02:00
$param .= '&search_date_startday=' . urlencode ( $search_date_startday );
}
2021-09-29 12:46:30 +02:00
if ( $search_date_startmonth > 0 ) {
2021-08-19 04:47:08 +02:00
$param .= '&search_date_startmonth=' . urlencode ( $search_date_startmonth );
}
2021-09-29 12:46:30 +02:00
if ( $search_date_startyear > 0 ) {
2021-08-19 04:47:08 +02:00
$param .= '&search_date_startyear=' . urlencode ( $search_date_startyear );
}
2021-09-29 12:46:30 +02:00
if ( $search_date_endday > 0 ) {
2021-08-19 04:47:08 +02:00
$param .= '&search_date_endday=' . urlencode ( $search_date_endday );
}
2021-09-29 12:46:30 +02:00
if ( $search_date_endmonth > 0 ) {
2021-08-19 04:47:08 +02:00
$param .= '&search_date_endmonth=' . urlencode ( $search_date_endmonth );
}
2021-09-29 12:46:30 +02:00
if ( $search_date_endyear > 0 ) {
2021-08-19 04:47:08 +02:00
$param .= '&search_date_endyear=' . urlencode ( $search_date_endyear );
}
2021-09-29 12:46:30 +02:00
if ( $search_dfyear > 0 ) {
2021-02-23 21:24:38 +01:00
$param .= '&search_dfyear=' . urlencode ( $search_dfyear );
}
2021-09-29 12:46:30 +02:00
if ( $search_dfmonth > 0 ) {
2021-02-23 21:24:38 +01:00
$param .= '&search_dfmonth=' . urlencode ( $search_dfmonth );
}
2021-09-29 12:31:25 +02:00
if ( $search_sale > 0 ) {
2021-02-23 21:24:38 +01:00
$param .= '&search_sale=' . urlencode ( $search_sale );
}
2021-09-29 12:31:25 +02:00
if ( $search_user > 0 ) {
2021-02-23 21:24:38 +01:00
$param .= '&search_user=' . urlencode ( $search_user );
}
2021-09-29 12:31:25 +02:00
if ( $search_type_thirdparty > 0 ) {
2021-02-23 21:24:38 +01:00
$param .= '&search_type_thirdparty=' . urlencode ( $search_type_thirdparty );
}
2022-05-05 08:43:22 +02:00
if ( $search_country != '' ) {
$param .= " &search_country= " . urlencode ( $search_country );
}
2021-09-29 12:31:25 +02:00
if ( $search_product_category > 0 ) {
2021-02-23 21:24:38 +01:00
$param .= '&search_product_category=' . urlencode ( $search_product_category );
}
if ( $show_files ) {
$param .= '&show_files=' . urlencode ( $show_files );
}
if ( $optioncss != '' ) {
$param .= '&optioncss=' . urlencode ( $optioncss );
}
2022-04-22 16:09:52 +02:00
foreach ( $searchCategoryCustomerList as $searchCategoryCustomer ) {
$param .= " &search_category_customer_list[]= " . urlencode ( $searchCategoryCustomer );
}
2018-03-24 18:28:06 +01:00
// Add $param from extra fields
include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_list_search_param.tpl.php' ;
// List of mass actions available
2019-11-12 09:46:08 +01:00
$arrayofmassactions = array (
2021-04-14 12:28:01 +02:00
'generate_doc' => img_picto ( '' , 'pdf' , 'class="pictofixedwidth"' ) . $langs -> trans ( " ReGeneratePDF " ),
'builddoc' => img_picto ( '' , 'pdf' , 'class="pictofixedwidth"' ) . $langs -> trans ( " PDFMerge " ),
'presend' => img_picto ( '' , 'email' , 'class="pictofixedwidth"' ) . $langs -> trans ( " SendByMail " ),
2018-03-24 18:28:06 +01:00
);
2023-01-25 14:48:41 +01:00
if ( ! empty ( $permissiontodelete )) {
2021-04-14 12:28:01 +02:00
$arrayofmassactions [ 'predelete' ] = img_picto ( '' , 'delete' , 'class="pictofixedwidth"' ) . $langs -> trans ( " Delete " );
2021-02-23 21:24:38 +01:00
}
2023-01-25 14:48:41 +01:00
if ( GETPOST ( 'nomassaction' , 'int' ) || in_array ( $massaction , array ( 'presend' , 'predelete' ))) {
2021-02-23 21:24:38 +01:00
$arrayofmassactions = array ();
}
2019-11-12 09:46:08 +01:00
$massactionbutton = $form -> selectMassAction ( '' , $arrayofmassactions );
2018-03-24 18:28:06 +01:00
2020-09-18 10:46:23 +02:00
$url = DOL_URL_ROOT . '/contrat/card.php?action=create' ;
2021-02-23 21:24:38 +01:00
if ( ! empty ( $socid )) {
2021-11-07 20:40:02 +01:00
$url .= '&socid=' . (( int ) $socid );
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
$newcardbutton = '' ;
$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' ));
$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' ));
2023-10-20 03:20:44 +02:00
$newcardbutton .= dolGetButtonTitleSeparator ();
2023-10-15 15:43:49 +02:00
$newcardbutton .= dolGetButtonTitle ( $langs -> trans ( 'NewContractSubscription' ), '' , 'fa fa-plus-circle' , $url , '' , $user -> hasRight ( 'contrat' , 'creer' ));
2018-03-30 16:54:38 +02:00
2023-02-19 02:18:46 +01:00
print '<form method="POST" id="searchFormList" action="' . $_SERVER [ 'PHP_SELF' ] . '">' . " \n " ;
2021-02-23 21:24:38 +01:00
if ( $optioncss != '' ) {
print '<input type="hidden" name="optioncss" value="' . $optioncss . '">' ;
}
2019-12-18 23:12:31 +01:00
print '<input type="hidden" name="token" value="' . newToken () . '">' ;
2018-03-24 18:28:06 +01:00
print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">' ;
print '<input type="hidden" name="action" value="list">' ;
print '<input type="hidden" name="sortfield" value="' . $sortfield . '">' ;
print '<input type="hidden" name="sortorder" value="' . $sortorder . '">' ;
2023-01-25 14:48:41 +01:00
print '<input type="hidden" name="page" value="' . $page . '">' ;
2018-06-08 19:35:53 +02:00
print '<input type="hidden" name="contextpage" value="' . $contextpage . '">' ;
2023-01-25 14:48:41 +01:00
print '<input type="hidden" name="page_y" value="">' ;
2023-01-09 18:23:33 +01:00
print '<input type="hidden" name="mode" value="' . $mode . '">' ;
2018-03-24 18:28:06 +01:00
2024-02-21 18:14:29 +01:00
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
2022-12-22 20:36:11 +01:00
print_barre_liste ( $langs -> trans ( " Contracts " ), $page , $_SERVER [ " PHP_SELF " ], $param , $sortfield , $sortorder , $massactionbutton , $num , $nbtotalofrecords , 'contract' , 0 , $newcardbutton , '' , $limit , 0 , 0 , 1 );
2018-03-24 18:28:06 +01:00
2019-11-12 09:46:08 +01:00
$topicmail = " SendContractRef " ;
$modelmail = " contract " ;
$objecttmp = new Contrat ( $db );
$trackid = 'con' . $object -> id ;
2018-03-24 18:28:06 +01:00
include DOL_DOCUMENT_ROOT . '/core/tpl/massactions_pre.tpl.php' ;
2023-01-25 14:48:41 +01:00
if ( $search_all ) {
$setupstring = '' ;
2021-02-23 21:24:38 +01:00
foreach ( $fieldstosearchall as $key => $val ) {
$fieldstosearchall [ $key ] = $langs -> trans ( $val );
2023-01-25 14:48:41 +01:00
$setupstring .= $key . " = " . $val . " ; " ;
2021-02-23 21:24:38 +01:00
}
2023-01-25 15:27:10 +01:00
print '<!-- Search done like if CONTRACT_QUICKSEARCH_ON_FIELDS = ' . $setupstring . ' -->' . " \n " ;
Qual: Apply automatic phan fixes (deprecations, unneeded imports) (#28154)
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
* Qual: Apply automatic phan fixes (deprecations, unneeded imports)
# Qual: Apply automatic phan fixes (deprecations, unneeded imports)
This applies automatic fixes by phan for deprecated functions, unneeded imports).
2024-02-13 21:46:12 +01:00
print '<div class="divsearchfieldfilter">' . $langs -> trans ( " FilterOnInto " , $search_all ) . implode ( ', ' , $fieldstosearchall ) . '</div>' . " \n " ;
2018-03-24 18:28:06 +01:00
}
2019-11-12 09:46:08 +01:00
$moreforfilter = '' ;
2018-03-24 18:28:06 +01:00
// If the user can view prospects other than his'
2023-10-15 15:43:49 +02:00
if ( $user -> hasRight ( 'user' , 'user' , 'lire' )) {
2018-03-24 18:28:06 +01:00
$langs -> load ( " commercial " );
2019-11-12 09:46:08 +01:00
$moreforfilter .= '<div class="divsearchfield">' ;
2021-05-26 23:36:36 +02:00
$tmptitle = $langs -> trans ( 'ThirdPartiesOfSaleRepresentative' );
2021-06-26 00:08:19 +02:00
$moreforfilter .= img_picto ( $tmptitle , 'user' , 'class="pictofixedwidth"' ) . $formother -> select_salesrepresentatives ( $search_sale , 'search_sale' , $user , 0 , $tmptitle , 'widthcentpercentminusx maxwidth300' );
2019-11-12 09:46:08 +01:00
$moreforfilter .= '</div>' ;
2018-03-24 18:28:06 +01:00
}
// If the user can view other users
2023-10-15 15:43:49 +02:00
if ( $user -> hasRight ( 'user' , 'user' , 'lire' )) {
2019-11-12 09:46:08 +01:00
$moreforfilter .= '<div class="divsearchfield">' ;
2021-05-26 23:36:36 +02:00
$tmptitle = $langs -> trans ( 'LinkedToSpecificUsers' );
2021-06-26 00:08:19 +02:00
$moreforfilter .= img_picto ( $tmptitle , 'user' , 'class="pictofixedwidth"' ) . $form -> select_dolusers ( $search_user , 'search_user' , $tmptitle , '' , 0 , '' , '' , 0 , 0 , 0 , '' , 0 , '' , 'widthcentpercentminusx maxwidth300' );
2021-02-23 21:24:38 +01:00
$moreforfilter .= '</div>' ;
2018-03-24 18:28:06 +01:00
}
// If the user can view categories of products
2023-06-06 00:54:43 +02:00
if ( isModEnabled ( 'categorie' ) && $user -> hasRight ( 'categorie' , 'lire' ) && ( $user -> hasRight ( 'produit' , 'lire' ) || $user -> hasRight ( 'service' , 'lire' ))) {
2018-03-24 18:28:06 +01:00
include_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php' ;
2019-11-12 09:46:08 +01:00
$moreforfilter .= '<div class="divsearchfield">' ;
2021-05-26 23:36:36 +02:00
$tmptitle = $langs -> trans ( 'IncludingProductWithTag' );
2018-03-24 18:28:06 +01:00
$cate_arbo = $form -> select_all_categories ( Categorie :: TYPE_PRODUCT , null , 'parent' , null , null , 1 );
2021-06-26 00:08:19 +02:00
$moreforfilter .= img_picto ( $tmptitle , 'category' , 'class="pictofixedwidth"' ) . $form -> selectarray ( 'search_product_category' , $cate_arbo , $search_product_category , $tmptitle , 0 , 0 , '' , 0 , 0 , 0 , 0 , 'widthcentpercentminusx maxwidth300' , 1 );
2019-11-12 09:46:08 +01:00
$moreforfilter .= '</div>' ;
2018-03-24 18:28:06 +01:00
}
2022-04-22 16:09:52 +02:00
// Filter on customer categories
2023-11-27 11:39:32 +01:00
if ( getDolGlobalString ( 'MAIN_SEARCH_CATEGORY_CUSTOMER_ON_CONTRACT_LIST' ) && isModEnabled ( " categorie " ) && $user -> hasRight ( 'categorie' , 'lire' )) {
2022-04-22 16:09:52 +02:00
$moreforfilter .= '<div class="divsearchfield">' ;
$tmptitle = $langs -> transnoentities ( 'CustomersProspectsCategoriesShort' );
$moreforfilter .= img_picto ( $tmptitle , 'category' , 'class="pictofixedwidth"' );
2022-05-23 12:27:55 +02:00
$categoriesArr = $form -> select_all_categories ( Categorie :: TYPE_CUSTOMER , '' , '' , 64 , 0 , 1 );
$categoriesArr [ - 2 ] = '- ' . $langs -> trans ( 'NotCategorized' ) . ' -' ;
$moreforfilter .= Form :: multiselectarray ( 'search_category_customer_list' , $categoriesArr , $searchCategoryCustomerList , 0 , 0 , 'minwidth300' , 0 , 0 , '' , 'category' , $tmptitle );
2022-05-06 16:09:26 +02:00
$moreforfilter .= ' <input type="checkbox" class="valignmiddle" id="search_category_customer_operator" name="search_category_customer_operator" value="1"' . ( $searchCategoryCustomerOperator == 1 ? ' checked="checked"' : '' ) . '/>' ;
2022-05-06 16:18:55 +02:00
$moreforfilter .= $form -> textwithpicto ( '' , $langs -> trans ( 'UseOrOperatorForCategories' ) . ' : ' . $tmptitle , 1 , 'help' , '' , 0 , 2 , 'tooltip_cat_cus' ); // Tooltip on click
2022-04-22 16:09:52 +02:00
$moreforfilter .= '</div>' ;
}
2018-03-24 18:28:06 +01:00
2019-11-12 09:46:08 +01:00
$parameters = array ();
2022-10-18 10:45:48 +02:00
$reshook = $hookmanager -> executeHooks ( 'printFieldPreListTitle' , $parameters , $object , $action ); // Note that $action and $object may have been modified by hook
2021-02-23 21:24:38 +01:00
if ( empty ( $reshook )) {
$moreforfilter .= $hookmanager -> resPrint ;
} else {
$moreforfilter = $hookmanager -> resPrint ;
}
2018-03-24 18:28:06 +01:00
2021-02-23 21:24:38 +01:00
if ( ! empty ( $moreforfilter )) {
2018-03-24 18:28:06 +01:00
print '<div class="liste_titre liste_titre_bydiv centpercent">' ;
print $moreforfilter ;
print '</div>' ;
}
2019-11-12 09:46:08 +01:00
$varpage = empty ( $contextpage ) ? $_SERVER [ " PHP_SELF " ] : $contextpage ;
2022-11-19 22:42:15 +01:00
$selectedfields = $form -> multiSelectArrayWithCheckbox ( 'selectedfields' , $arrayfields , $varpage , getDolGlobalString ( 'MAIN_CHECKBOX_LEFT_COLUMN' )); // This also change content of $arrayfields
2021-02-23 21:24:38 +01:00
if ( $massactionbutton ) {
$selectedfields .= $form -> showCheckAddButtons ( 'checkforselect' , 1 );
}
2018-03-24 18:28:06 +01:00
print '<div class="div-table-responsive">' ;
2019-11-12 09:46:08 +01:00
print '<table class="tagtable liste' . ( $moreforfilter ? " listwithfilterbefore " : " " ) . '">' . " \n " ;
2018-03-24 18:28:06 +01:00
2023-02-19 02:18:46 +01:00
// Fields title search
// --------------------------------------------------------------------
2018-03-24 18:28:06 +01:00
print '<tr class="liste_titre_filter">' ;
2022-11-19 22:42:15 +01:00
// Action column
if ( getDolGlobalString ( 'MAIN_CHECKBOX_LEFT_COLUMN' )) {
2023-02-19 02:18:46 +01:00
print '<td class="liste_titre maxwidthsearch center">' ;
2022-11-19 22:42:15 +01:00
$searchpicto = $form -> showFilterButtons ( 'left' );
print $searchpicto ;
print '</td>' ;
}
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'c.ref' ][ 'checked' ])) {
2018-03-24 18:28:06 +01:00
print '<td class="liste_titre">' ;
print '<input type="text" class="flat" size="3" name="search_contract" value="' . dol_escape_htmltag ( $search_contract ) . '">' ;
print '</td>' ;
}
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'c.ref_customer' ][ 'checked' ])) {
2018-03-24 18:28:06 +01:00
print '<td class="liste_titre">' ;
print '<input type="text" class="flat" size="6" name="search_ref_customer" value="' . dol_escape_htmltag ( $search_ref_customer ) . '">' ;
print '</td>' ;
}
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'c.ref_supplier' ][ 'checked' ])) {
2018-03-24 18:28:06 +01:00
print '<td class="liste_titre">' ;
print '<input type="text" class="flat" size="6" name="search_ref_supplier" value="' . dol_escape_htmltag ( $search_ref_supplier ) . '">' ;
print '</td>' ;
}
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 's.nom' ][ 'checked' ])) {
2018-03-24 18:28:06 +01:00
print '<td class="liste_titre">' ;
print '<input type="text" class="flat" size="8" name="search_name" value="' . dol_escape_htmltag ( $search_name ) . '">' ;
print '</td>' ;
}
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 's.email' ][ 'checked' ])) {
2018-03-24 18:28:06 +01:00
print '<td class="liste_titre">' ;
print '<input type="text" class="flat" size="6" name="search_email" value="' . dol_escape_htmltag ( $search_email ) . '">' ;
print '</td>' ;
}
// Town
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 's.town' ][ 'checked' ])) {
2021-11-07 20:43:04 +01:00
print '<td class="liste_titre"><input class="flat" type="text" size="6" name="search_town" value="' . dol_escape_htmltag ( $search_town ) . '"></td>' ;
2021-02-23 21:24:38 +01:00
}
2018-03-24 18:28:06 +01:00
// Zip
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 's.zip' ][ 'checked' ])) {
2021-11-07 20:43:04 +01:00
print '<td class="liste_titre"><input class="flat" type="text" size="6" name="search_zip" value="' . dol_escape_htmltag ( $search_zip ) . '"></td>' ;
2021-02-23 21:24:38 +01:00
}
2018-03-24 18:28:06 +01:00
// State
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'state.nom' ][ 'checked' ])) {
2018-03-24 18:28:06 +01:00
print '<td class="liste_titre">' ;
print '<input class="flat" size="4" type="text" name="search_state" value="' . dol_escape_htmltag ( $search_state ) . '">' ;
print '</td>' ;
}
// Country
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'country.code_iso' ][ 'checked' ])) {
2019-03-03 09:37:43 +01:00
print '<td class="liste_titre center">' ;
2019-03-02 12:57:07 +01:00
print $form -> select_country ( $search_country , 'search_country' , '' , 0 , 'minwidth100imp maxwidth100' );
2018-03-24 18:28:06 +01:00
print '</td>' ;
}
// Company type
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'typent.code' ][ 'checked' ])) {
2019-03-03 09:37:43 +01:00
print '<td class="liste_titre maxwidthonsmartphone center">' ;
2023-12-04 12:01:45 +01:00
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 );
2018-03-24 18:28:06 +01:00
print '</td>' ;
}
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'sale_representative' ][ 'checked' ])) {
2018-03-24 18:28:06 +01:00
print '<td class="liste_titre"></td>' ;
}
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'c.date_contrat' ][ 'checked' ])) {
2021-08-19 04:47:08 +02:00
print '<td class="liste_titre center">' ;
2023-12-02 20:27:09 +01:00
print '<div class="nowrapfordate">' ;
2021-08-19 04:47:08 +02:00
print $form -> selectDate ( $search_date_start ? $search_date_start : - 1 , 'search_date_start' , 0 , 0 , 1 , '' , 1 , 0 , 0 , '' , '' , '' , '' , 1 , '' , $langs -> trans ( 'From' ));
print '</div>' ;
2023-12-02 20:27:09 +01:00
print '<div class="nowrapfordate">' ;
2021-08-19 04:47:08 +02:00
print $form -> selectDate ( $search_date_end ? $search_date_end : - 1 , 'search_date_end' , 0 , 0 , 1 , '' , 1 , 0 , 0 , '' , '' , '' , '' , 1 , '' , $langs -> trans ( 'to' ));
print '</div>' ;
2018-03-24 18:28:06 +01:00
print '</td>' ;
}
// Extra fields
include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_list_search_input.tpl.php' ;
// Fields from hook
2019-11-12 09:46:08 +01:00
$parameters = array ( 'arrayfields' => $arrayfields );
2022-10-18 10:45:48 +02:00
$reshook = $hookmanager -> executeHooks ( 'printFieldListOption' , $parameters , $object , $action ); // Note that $action and $object may have been modified by hook
2018-03-24 18:28:06 +01:00
print $hookmanager -> resPrint ;
2023-10-09 19:51:38 +02:00
// Creation date
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'c.datec' ][ 'checked' ])) {
2023-10-09 19:51:38 +02:00
print '<td class="liste_titre center nowraponall">' ;
2023-12-02 20:27:09 +01:00
print '<div class="nowrapfordate">' ;
2023-10-09 19:51:38 +02:00
print $form -> selectDate ( $search_date_creation_start ? $search_date_creation_start : - 1 , 'search_date_creation_start' , 0 , 0 , 1 , '' , 1 , 0 , 0 , '' , '' , '' , '' , 1 , '' , $langs -> trans ( 'From' ));
print '</div>' ;
2023-12-02 20:27:09 +01:00
print '<div class="nowrapfordate">' ;
2023-10-09 19:51:38 +02:00
print $form -> selectDate ( $search_date_creation_end ? $search_date_creation_end : - 1 , 'search_date_creation_end' , 0 , 0 , 1 , '' , 1 , 0 , 0 , '' , '' , '' , '' , 1 , '' , $langs -> trans ( 'to' ));
print '</div>' ;
2018-03-24 18:28:06 +01:00
print '</td>' ;
}
2023-10-09 19:51:38 +02:00
// Modification date
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'c.tms' ][ 'checked' ])) {
2023-10-09 19:51:38 +02:00
print '<td class="liste_titre center nowraponall">' ;
2023-12-02 20:27:09 +01:00
print '<div class="nowrapfordate">' ;
2023-10-09 19:51:38 +02:00
print $form -> selectDate ( $search_date_modif_start ? $search_date_modif_start : - 1 , 'search_date_modif_start' , 0 , 0 , 1 , '' , 1 , 0 , 0 , '' , '' , '' , '' , 1 , '' , $langs -> trans ( 'From' ));
print '</div>' ;
2023-12-02 20:27:09 +01:00
print '<div class="nowrapfordate">' ;
2023-10-09 19:51:38 +02:00
print $form -> selectDate ( $search_date_modif_end ? $search_date_modif_end : - 1 , 'search_date_modif_end' , 0 , 0 , 1 , '' , 1 , 0 , 0 , '' , '' , '' , '' , 1 , '' , $langs -> trans ( 'to' ));
print '</div>' ;
2018-03-24 18:28:06 +01:00
print '</td>' ;
}
// First end date
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'lower_planned_end_date' ][ 'checked' ])) {
2023-12-04 12:01:45 +01:00
print '<td class="liste_titre nowraponall center">' ;
$arrayofoperators = array ( '0' => '' , '=' => '=' , '<=' => '<=' , '>=' => '>=' );
print $form -> selectarray ( 'search_op2df' , $arrayofoperators , $search_op2df , 0 , 0 , 0 , '' , 0 , 0 , 0 , '' , 'maxwidth50imp' );
print '</br>' ;
print $formother -> select_month ( $search_dfmonth , 'search_dfmonth' , 1 , 0 );
print ' ' ;
print $formother -> selectyear ( $search_dfyear , 'search_dfyear' , 1 , 20 , 5 , 0 , 0 , '' );
print '</td>' ;
2018-03-24 18:28:06 +01:00
}
// Status
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'status' ][ 'checked' ])) {
2019-02-19 17:08:35 +01:00
print '<td class="liste_titre right" colspan="4"></td>' ;
2018-03-24 18:28:06 +01:00
}
2022-11-19 22:42:15 +01:00
// Action column
if ( ! getDolGlobalString ( 'MAIN_CHECKBOX_LEFT_COLUMN' )) {
print '<td class="liste_titre center">' ;
$searchpicto = $form -> showFilterButtons ();
print $searchpicto ;
print '</td>' ;
}
2023-02-19 02:18:46 +01:00
print '</tr>' . " \n " ;
$totalarray = array ();
$totalarray [ 'nbfield' ] = 0 ;
2018-03-24 18:28:06 +01:00
2023-02-19 02:18:46 +01:00
// Fields title label
// --------------------------------------------------------------------
2018-03-24 18:28:06 +01:00
print '<tr class="liste_titre">' ;
2022-11-19 22:42:24 +01:00
if ( getDolGlobalString ( 'MAIN_CHECKBOX_LEFT_COLUMN' )) {
2022-11-19 22:42:15 +01:00
print_liste_field_titre ( $selectedfields , $_SERVER [ " PHP_SELF " ], " " , '' , '' , '' , $sortfield , $sortorder , 'center maxwidthsearch ' );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2022-11-19 22:42:15 +01:00
}
2021-02-23 21:24:38 +01:00
if ( ! empty ( $arrayfields [ 'c.ref' ][ 'checked' ])) {
print_liste_field_titre ( $arrayfields [ 'c.ref' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " c.ref " , " " , $param , '' , $sortfield , $sortorder );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2021-02-23 21:24:38 +01:00
}
if ( ! empty ( $arrayfields [ 'c.ref_customer' ][ 'checked' ])) {
print_liste_field_titre ( $arrayfields [ 'c.ref_customer' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " c.ref_customer " , " " , $param , '' , $sortfield , $sortorder );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2021-02-23 21:24:38 +01:00
}
if ( ! empty ( $arrayfields [ 'c.ref_supplier' ][ 'checked' ])) {
print_liste_field_titre ( $arrayfields [ 'c.ref_supplier' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " c.ref_supplier " , " " , $param , '' , $sortfield , $sortorder );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2021-02-23 21:24:38 +01:00
}
if ( ! empty ( $arrayfields [ 's.nom' ][ 'checked' ])) {
print_liste_field_titre ( $arrayfields [ 's.nom' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " s.nom " , " " , $param , '' , $sortfield , $sortorder );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2021-02-23 21:24:38 +01:00
}
if ( ! empty ( $arrayfields [ 's.email' ][ 'checked' ])) {
print_liste_field_titre ( $arrayfields [ 's.email' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " s.email " , " " , $param , '' , $sortfield , $sortorder );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2021-02-23 21:24:38 +01:00
}
if ( ! empty ( $arrayfields [ 's.town' ][ 'checked' ])) {
print_liste_field_titre ( $arrayfields [ 's.town' ][ 'label' ], $_SERVER [ " PHP_SELF " ], 's.town' , '' , $param , '' , $sortfield , $sortorder );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2021-02-23 21:24:38 +01:00
}
if ( ! empty ( $arrayfields [ 's.zip' ][ 'checked' ])) {
print_liste_field_titre ( $arrayfields [ 's.zip' ][ 'label' ], $_SERVER [ " PHP_SELF " ], 's.zip' , '' , $param , '' , $sortfield , $sortorder );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2021-02-23 21:24:38 +01:00
}
if ( ! empty ( $arrayfields [ 'state.nom' ][ 'checked' ])) {
print_liste_field_titre ( $arrayfields [ 'state.nom' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " state.nom " , " " , $param , '' , $sortfield , $sortorder );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2021-02-23 21:24:38 +01:00
}
if ( ! empty ( $arrayfields [ 'country.code_iso' ][ 'checked' ])) {
print_liste_field_titre ( $arrayfields [ 'country.code_iso' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " country.code_iso " , " " , $param , '' , $sortfield , $sortorder , 'center ' );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2021-02-23 21:24:38 +01:00
}
if ( ! empty ( $arrayfields [ 'typent.code' ][ 'checked' ])) {
print_liste_field_titre ( $arrayfields [ 'typent.code' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " typent.code " , " " , $param , '' , $sortfield , $sortorder , 'center ' );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2021-02-23 21:24:38 +01:00
}
if ( ! empty ( $arrayfields [ 'sale_representative' ][ 'checked' ])) {
print_liste_field_titre ( $arrayfields [ 'sale_representative' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " " , " " , $param , '' , $sortfield , $sortorder );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2021-02-23 21:24:38 +01:00
}
if ( ! empty ( $arrayfields [ 'c.date_contrat' ][ 'checked' ])) {
print_liste_field_titre ( $arrayfields [ 'c.date_contrat' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " c.date_contrat " , " " , $param , '' , $sortfield , $sortorder , 'center ' );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2021-02-23 21:24:38 +01:00
}
2018-03-24 18:28:06 +01:00
// Extra fields
include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_list_search_title.tpl.php' ;
// Hook fields
2023-02-19 02:18:46 +01:00
$parameters = array ( 'arrayfields' => $arrayfields , 'param' => $param , 'sortfield' => $sortfield , 'sortorder' => $sortorder , 'totalarray' =>& $totalarray );
2022-10-18 10:45:48 +02:00
$reshook = $hookmanager -> executeHooks ( 'printFieldListTitle' , $parameters , $object , $action ); // Note that $action and $object may have been modified by hook
2018-03-24 18:28:06 +01:00
print $hookmanager -> resPrint ;
2020-04-10 10:59:32 +02:00
if ( ! empty ( $arrayfields [ 'c.datec' ][ 'checked' ])) {
2020-10-31 14:32:18 +01:00
print_liste_field_titre ( $arrayfields [ 'c.datec' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " c.datec " , " " , $param , '' , $sortfield , $sortorder , 'center nowrap ' );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2019-03-03 09:37:43 +01:00
}
2020-04-10 10:59:32 +02:00
if ( ! empty ( $arrayfields [ 'c.tms' ][ 'checked' ])) {
2020-10-31 14:32:18 +01:00
print_liste_field_titre ( $arrayfields [ 'c.tms' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " c.tms " , " " , $param , '' , $sortfield , $sortorder , 'center nowrap ' );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2019-03-03 09:37:43 +01:00
}
2020-04-10 10:59:32 +02:00
if ( ! empty ( $arrayfields [ 'lower_planned_end_date' ][ 'checked' ])) {
2020-10-31 14:32:18 +01:00
print_liste_field_titre ( $arrayfields [ 'lower_planned_end_date' ][ 'label' ], $_SERVER [ " PHP_SELF " ], " lower_planned_end_date " , " " , $param , '' , $sortfield , $sortorder , 'center ' );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2019-03-03 09:37:43 +01:00
}
2020-04-10 10:59:32 +02:00
if ( ! empty ( $arrayfields [ 'status' ][ 'checked' ])) {
2019-11-04 18:25:32 +01:00
print_liste_field_titre ( $staticcontratligne -> LibStatut ( 0 , 3 , - 1 , 'class="nochangebackground"' ), '' , '' , '' , '' , 'width="16"' );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2020-04-10 10:59:32 +02:00
print_liste_field_titre ( $staticcontratligne -> LibStatut ( 4 , 3 , 0 , 'class="nochangebackground"' ), '' , '' , '' , '' , 'width="16"' );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2020-04-10 10:59:32 +02:00
print_liste_field_titre ( $staticcontratligne -> LibStatut ( 4 , 3 , 1 , 'class="nochangebackground"' ), '' , '' , '' , '' , 'width="16"' );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2019-11-04 18:25:32 +01:00
print_liste_field_titre ( $staticcontratligne -> LibStatut ( 5 , 3 , - 1 , 'class="nochangebackground"' ), '' , '' , '' , '' , 'width="16"' );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2018-03-24 18:28:06 +01:00
}
2022-11-19 22:42:24 +01:00
if ( ! getDolGlobalString ( 'MAIN_CHECKBOX_LEFT_COLUMN' )) {
2022-11-19 22:42:15 +01:00
print_liste_field_titre ( $selectedfields , $_SERVER [ " PHP_SELF " ], " " , '' , '' , '' , $sortfield , $sortorder , 'center maxwidthsearch ' );
2023-02-19 02:18:46 +01:00
$totalarray [ 'nbfield' ] ++ ; // For the column action
2022-11-19 22:42:15 +01:00
}
2018-03-24 18:28:06 +01:00
print " </tr> \n " ;
2015-05-31 03:30:38 +02:00
2023-02-19 02:18:46 +01:00
// Loop on record
// --------------------------------------------------------------------
$i = 0 ;
$savnbfield = $totalarray [ 'nbfield' ];
2020-12-20 18:21:34 +01:00
$totalarray = array ();
2021-05-26 23:45:45 +02:00
$totalarray [ 'nbfield' ] = 0 ;
2020-12-20 18:21:34 +01:00
$typenArray = array ();
$cacheCountryIDCode = array ();
2023-02-19 02:18:46 +01:00
$imaxinloop = ( $limit ? min ( $num , $limit ) : $num );
while ( $i < $imaxinloop ) {
2018-03-24 18:28:06 +01:00
$obj = $db -> fetch_object ( $resql );
2023-02-19 02:18:46 +01:00
if ( empty ( $obj )) {
break ; // Should not happen
}
2018-03-24 18:28:06 +01:00
2019-11-12 09:46:08 +01:00
$contracttmp -> ref = $obj -> ref ;
$contracttmp -> id = $obj -> rowid ;
$contracttmp -> ref_customer = $obj -> ref_customer ;
$contracttmp -> ref_supplier = $obj -> ref_supplier ;
2017-06-14 11:28:42 +02:00
2023-04-06 11:49:28 +02:00
$contracttmp -> nbofserviceswait = $obj -> nb_initial ;
$contracttmp -> nbofservicesopened = $obj -> nb_running ;
$contracttmp -> nbofservicesexpired = $obj -> nb_expired ;
$contracttmp -> nbofservicesclosed = $obj -> nb_closed ;
$socstatic -> id = $obj -> socid ;
2020-12-20 18:21:34 +01:00
$socstatic -> name = $obj -> name ;
$socstatic -> name_alias = $obj -> name_alias ;
$socstatic -> email = $obj -> email ;
$socstatic -> status = $obj -> company_status ;
2023-06-06 00:54:43 +02:00
$socstatic -> logo = $obj -> company_logo ;
2020-12-20 18:21:34 +01:00
$socstatic -> country_id = $obj -> country_id ;
$socstatic -> country_code = '' ;
2023-04-06 11:49:28 +02:00
$socstatic -> country = '' ;
2020-12-20 18:21:34 +01:00
if ( $obj -> country_id > 0 ) {
if ( ! isset ( $cacheCountryIDCode [ $obj -> country_id ][ 'code' ])) {
$tmparray = getCountry ( $obj -> country_id , 'all' );
$cacheCountryIDCode [ $obj -> country_id ] = array ( 'code' => empty ( $tmparray [ 'code' ]) ? '' : $tmparray [ 'code' ], 'label' => empty ( $tmparray [ 'label' ]) ? '' : $tmparray [ 'label' ]);
}
$socstatic -> country_code = $cacheCountryIDCode [ $obj -> country_id ][ 'code' ];
2020-12-24 02:59:00 +01:00
$socstatic -> country = $cacheCountryIDCode [ $obj -> country_id ][ 'label' ];
2020-12-20 18:21:34 +01:00
}
2023-02-19 02:18:46 +01:00
2023-01-09 18:23:33 +01:00
if ( $mode == 'kanban' ) {
if ( $i == 0 ) {
2023-06-28 11:50:28 +02:00
print '<tr class="trkanban"><td colspan="' . $savnbfield . '">' ;
2023-02-19 02:39:39 +01:00
print '<div class="box-flex-container kanban">' ;
2022-11-19 22:42:15 +01:00
}
2023-01-09 18:23:33 +01:00
// Output Kanban
2023-04-06 11:49:28 +02:00
$arraydata [ 'thirdparty' ] = $socstatic ;
2023-04-29 13:04:45 +02:00
$arraydata [ 'selected' ] = in_array ( $obj -> rowid , $arrayofselected );
2023-01-09 18:23:33 +01:00
$contracttmp -> date_contrat = $obj -> date_contrat ;
2023-04-06 11:49:28 +02:00
print $contracttmp -> getKanbanView ( '' , $arraydata );
2023-02-19 02:18:46 +01:00
if ( $i == ( $imaxinloop - 1 )) {
2023-01-09 18:23:33 +01:00
print '</div>' ;
print '</td></tr>' ;
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
} else {
2023-02-19 02:18:46 +01:00
// Show here line of result
print '<tr data-rowid="' . $object -> id . '" class="oddeven">' ;
2023-01-09 18:23:33 +01:00
// Action column
if ( getDolGlobalString ( 'MAIN_CHECKBOX_LEFT_COLUMN' )) {
print '<td class="nowrap center">' ;
if ( $massactionbutton || $massaction ) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
$selected = 0 ;
if ( in_array ( $obj -> rowid , $arrayofselected )) {
$selected = 1 ;
}
print '<input id="cb' . $obj -> rowid . '" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $obj -> rowid . '"' . ( $selected ? ' checked="checked"' : '' ) . '>' ;
}
print '</td>' ;
2023-02-19 02:18:46 +01:00
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
}
2018-03-24 18:28:06 +01:00
}
2023-01-09 18:23:33 +01:00
// Ref
if ( ! empty ( $arrayfields [ 'c.ref' ][ 'checked' ])) {
print '<td class="nowraponall">' ;
print $contracttmp -> getNomUrl ( 1 );
if ( $obj -> nb_late ) {
print img_warning ( $langs -> trans ( " Late " ));
}
if ( ! empty ( $obj -> note_private ) || ! empty ( $obj -> note_public )) {
print ' <span class="note">' ;
print '<a href="' . DOL_URL_ROOT . '/contrat/note.php?id=' . $obj -> rowid . '&save_lastsearch_values=1">' . img_picto ( $langs -> trans ( " ViewPrivateNote " ), 'note' ) . '</a>' ;
print '</span>' ;
}
2018-03-24 18:28:06 +01:00
2023-01-09 18:23:33 +01:00
$filename = dol_sanitizeFileName ( $obj -> ref );
$filedir = $conf -> contrat -> multidir_output [ $obj -> entity ] . '/' . dol_sanitizeFileName ( $obj -> ref );
$urlsource = $_SERVER [ 'PHP_SELF' ] . '?id=' . $obj -> rowid ;
print $formfile -> getDocumentsLink ( $contracttmp -> element , $filename , $filedir );
print '</td>' ;
2018-03-24 18:28:06 +01:00
2023-01-09 18:23:33 +01:00
print '</td>' ;
2023-02-19 02:18:46 +01:00
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
}
2023-01-09 18:23:33 +01:00
}
2020-05-04 17:07:18 +02:00
2023-01-09 18:23:33 +01:00
// Ref thirdparty
if ( ! empty ( $arrayfields [ 'c.ref_customer' ][ 'checked' ])) {
print '<td class="tdoverflowmax200" title="' . dol_escape_htmltag ( dol_string_nohtmltag ( $contracttmp -> getFormatedCustomerRef ( $obj -> ref_customer ))) . '">' . $contracttmp -> getFormatedCustomerRef ( $obj -> ref_customer ) . '</td>' ;
2023-02-19 02:18:46 +01:00
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
}
2018-03-24 18:28:06 +01:00
}
2023-01-09 18:23:33 +01:00
if ( ! empty ( $arrayfields [ 'c.ref_supplier' ][ 'checked' ])) {
print '<td class="tdoverflowmax200" title="' . dol_escape_htmltag ( $obj -> ref_supplier ) . '">' . dol_escape_htmltag ( $obj -> ref_supplier ) . '</td>' ;
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
if ( ! empty ( $arrayfields [ 's.nom' ][ 'checked' ])) {
print '<td class="tdoverflowmax150">' ;
if ( $obj -> socid > 0 ) {
// TODO Use a cache for this string
print $socstatic -> getNomUrl ( 1 , '' );
}
print '</td>' ;
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
// Email
if ( ! empty ( $arrayfields [ 's.email' ][ 'checked' ])) {
2024-02-20 18:57:28 +01:00
print '<td class="tdoverflowmax200" title="' . dol_escape_htmltag ( $obj -> email ) . '">' . dol_print_email ( $obj -> email , 0 , $obj -> socid , 1 , 0 , 1 , 1 ) . '</td>' ;
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
// Town
if ( ! empty ( $arrayfields [ 's.town' ][ 'checked' ])) {
print '<td class="nocellnopadd">' ;
print $obj -> town ;
print '</td>' ;
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
}
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
// Zip
if ( ! empty ( $arrayfields [ 's.zip' ][ 'checked' ])) {
print '<td class="nocellnopadd">' ;
print $obj -> zip ;
print '</td>' ;
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
}
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
// State
if ( ! empty ( $arrayfields [ 'state.nom' ][ 'checked' ])) {
print " <td> " . $obj -> state_name . " </td> \n " ;
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
}
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
// Country
if ( ! empty ( $arrayfields [ 'country.code_iso' ][ 'checked' ])) {
print '<td class="center tdoverflowmax100" title="' . dol_escape_htmltag ( $socstatic -> country ) . '">' ;
print dol_escape_htmltag ( $socstatic -> country );
print '</td>' ;
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
}
}
// Type ent
if ( ! empty ( $arrayfields [ 'typent.code' ][ 'checked' ])) {
print '<td class="center">' ;
if ( count ( $typenArray ) == 0 ) {
$typenArray = $formcompany -> typent_array ( 1 );
}
print $typenArray [ $obj -> typent_code ];
print '</td>' ;
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
}
if ( ! empty ( $arrayfields [ 'sale_representative' ][ 'checked' ])) {
// Sales representatives
print '<td>' ;
if ( $obj -> socid > 0 ) {
$listsalesrepresentatives = $socstatic -> getSalesRepresentatives ( $user );
if ( $listsalesrepresentatives < 0 ) {
dol_print_error ( $db );
}
$nbofsalesrepresentative = count ( $listsalesrepresentatives );
if ( $nbofsalesrepresentative > 6 ) {
// We print only number
print $nbofsalesrepresentative ;
} elseif ( $nbofsalesrepresentative > 0 ) {
$userstatic = new User ( $db );
$j = 0 ;
foreach ( $listsalesrepresentatives as $val ) {
$userstatic -> id = $val [ 'id' ];
$userstatic -> lastname = $val [ 'lastname' ];
$userstatic -> firstname = $val [ 'firstname' ];
$userstatic -> email = $val [ 'email' ];
$userstatic -> statut = $val [ 'statut' ];
$userstatic -> entity = $val [ 'entity' ];
$userstatic -> photo = $val [ 'photo' ];
$userstatic -> login = $val [ 'login' ];
$userstatic -> phone = $val [ 'phone' ];
$userstatic -> job = $val [ 'job' ];
$userstatic -> gender = $val [ 'gender' ];
//print '<div class="float">':
print ( $nbofsalesrepresentative < 2 ) ? $userstatic -> getNomUrl ( - 1 , '' , 0 , 0 , 12 ) : $userstatic -> getNomUrl ( - 2 );
$j ++ ;
if ( $j < $nbofsalesrepresentative ) {
print ' ' ;
}
//print '</div>';
2021-01-20 21:02:01 +01:00
}
2018-03-24 18:28:06 +01:00
}
2023-01-09 18:23:33 +01:00
//else print $langs->trans("NoSalesRepresentativeAffected");
} else {
print ' ' ;
2018-03-24 18:28:06 +01:00
}
2023-01-09 18:23:33 +01:00
print '</td>' ;
2018-03-24 18:28:06 +01:00
}
2023-01-09 18:23:33 +01:00
// Date
if ( ! empty ( $arrayfields [ 'c.date_contrat' ][ 'checked' ])) {
print '<td class="center">' . dol_print_date ( $db -> jdate ( $obj -> date_contrat ), 'day' , 'tzserver' ) . '</td>' ;
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
// Extra fields
include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_list_print_fields.tpl.php' ;
// Fields from hook
$parameters = array ( 'arrayfields' => $arrayfields , 'obj' => $obj , 'i' => $i , 'totalarray' =>& $totalarray );
$reshook = $hookmanager -> executeHooks ( 'printFieldListValue' , $parameters , $object , $action ); // Note that $action and $object may have been modified by hook
print $hookmanager -> resPrint ;
// Date creation
if ( ! empty ( $arrayfields [ 'c.datec' ][ 'checked' ])) {
print '<td class="center nowrap">' ;
print dol_print_date ( $db -> jdate ( $obj -> date_creation ), 'dayhour' , 'tzuser' );
print '</td>' ;
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
}
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
// Date modification
if ( ! empty ( $arrayfields [ 'c.tms' ][ 'checked' ])) {
print '<td class="center nowrap">' ;
2024-02-15 14:08:08 +01:00
print dol_print_date ( $db -> jdate ( $obj -> date_modification ), 'dayhour' , 'tzuser' );
2023-01-09 18:23:33 +01:00
print '</td>' ;
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
}
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
// Date lower end date
if ( ! empty ( $arrayfields [ 'lower_planned_end_date' ][ 'checked' ])) {
print '<td class="center nowrapforall">' ;
print dol_print_date ( $db -> jdate ( $obj -> lower_planned_end_date ), 'day' , 'tzuser' );
print '</td>' ;
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
2022-11-19 22:42:15 +01:00
}
2021-02-23 21:24:38 +01:00
}
2023-01-09 18:23:33 +01:00
// Status
if ( ! empty ( $arrayfields [ 'status' ][ 'checked' ])) {
print '<td class="center">' . ( $obj -> nb_initial > 0 ? $obj -> nb_initial : '' ) . '</td>' ;
print '<td class="center">' . ( $obj -> nb_running > 0 ? $obj -> nb_running : '' ) . '</td>' ;
print '<td class="center">' . ( $obj -> nb_expired > 0 ? $obj -> nb_expired : '' ) . '</td>' ;
print '<td class="center">' . ( $obj -> nb_closed > 0 ? $obj -> nb_closed : '' ) . '</td>' ;
2023-02-19 02:18:46 +01:00
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
$totalarray [ 'nbfield' ] ++ ;
$totalarray [ 'nbfield' ] ++ ;
$totalarray [ 'nbfield' ] ++ ;
}
2023-01-09 18:23:33 +01:00
}
// Action column
if ( ! getDolGlobalString ( 'MAIN_CHECKBOX_LEFT_COLUMN' )) {
print '<td class="nowrap center">' ;
if ( $massactionbutton || $massaction ) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
$selected = 0 ;
if ( in_array ( $obj -> rowid , $arrayofselected )) {
$selected = 1 ;
}
print '<input id="cb' . $obj -> rowid . '" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $obj -> rowid . '"' . ( $selected ? ' checked="checked"' : '' ) . '>' ;
}
print '</td>' ;
2023-02-19 02:18:46 +01:00
if ( ! $i ) {
$totalarray [ 'nbfield' ] ++ ;
}
2023-01-09 18:23:33 +01:00
}
2017-10-13 13:28:26 +02:00
2023-02-19 02:18:46 +01:00
print '</tr>' . " \n " ;
2023-01-09 18:23:33 +01:00
}
2018-03-24 18:28:06 +01:00
$i ++ ;
}
2022-06-25 04:18:38 +02:00
// If no record found
if ( $num == 0 ) {
$colspan = 4 ; // Include the 4 columns of status
foreach ( $arrayfields as $key => $val ) {
if ( ! empty ( $val [ 'checked' ])) {
$colspan ++ ;
}
}
print '<tr><td colspan="' . $colspan . '"><span class="opacitymedium">' . $langs -> trans ( " NoRecordFound " ) . '</span></td></tr>' ;
}
2018-03-24 18:28:06 +01:00
$db -> free ( $resql );
2017-10-13 13:28:26 +02:00
2019-11-12 09:46:08 +01:00
$parameters = array ( 'arrayfields' => $arrayfields , 'sql' => $sql );
2022-10-18 10:45:48 +02:00
$reshook = $hookmanager -> executeHooks ( 'printFieldListFooter' , $parameters , $object , $action ); // Note that $action and $object may have been modified by hook
2019-03-28 17:27:30 +01:00
print $hookmanager -> resPrint ;
2023-02-19 02:18:46 +01:00
print '</table>' . " \n " ;
print '</div>' . " \n " ;
2017-10-13 13:28:26 +02:00
2023-02-19 02:18:46 +01:00
print '</form>' . " \n " ;
2017-10-13 13:28:26 +02:00
2019-11-12 09:46:08 +01:00
$hidegeneratedfilelistifempty = 1 ;
2021-02-23 21:24:38 +01:00
if ( $massaction == 'builddoc' || $action == 'remove_file' || $show_files ) {
$hidegeneratedfilelistifempty = 0 ;
}
2017-10-13 13:28:26 +02:00
2018-03-24 18:28:06 +01:00
// Show list of available documents
2019-11-12 09:46:08 +01:00
$urlsource = $_SERVER [ 'PHP_SELF' ] . '?sortfield=' . $sortfield . '&sortorder=' . $sortorder ;
$urlsource .= str_replace ( '&' , '&' , $param );
2017-10-13 13:28:26 +02:00
2019-11-12 09:46:08 +01:00
$filedir = $diroutputmassaction ;
2023-02-19 02:18:46 +01:00
$genallowed = $permissiontoread ;
$delallowed = $permissiontoadd ;
2018-02-21 11:02:45 +01:00
2019-01-27 11:55:16 +01:00
print $formfile -> showdocuments ( 'massfilesarea_contract' , '' , $filedir , $urlsource , 0 , $delallowed , '' , 1 , 1 , 0 , 48 , 1 , $param , $title , '' , '' , '' , null , $hidegeneratedfilelistifempty );
2004-11-26 15:20:43 +01:00
2011-08-27 16:24:16 +02:00
llxFooter ();
2012-07-25 11:46:33 +02:00
$db -> close ();