diff --git a/dev/build/phpstan/phpstan-baseline.neon b/dev/build/phpstan/phpstan-baseline.neon index 031706786df..f79a0a5faf6 100644 --- a/dev/build/phpstan/phpstan-baseline.neon +++ b/dev/build/phpstan/phpstan-baseline.neon @@ -11076,12 +11076,6 @@ parameters: count: 1 path: ../../../htdocs/core/lib/functions.lib.php - - - message: '#^Call to function is_object\(\) with object will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 24 - path: ../../../htdocs/core/lib/functions.lib.php - - message: '#^Comparison operation "\>" between int\<1, max\> and 0 is always true\.$#' identifier: greater.alwaysTrue @@ -11190,12 +11184,6 @@ parameters: count: 3 path: ../../../htdocs/core/lib/functions.lib.php - - - message: '#^Property CommonObject\:\:\$state \(string\) in isset\(\) is not nullable\.$#' - identifier: isset.property - count: 1 - path: ../../../htdocs/core/lib/functions.lib.php - - message: '#^Result of && is always true\.$#' identifier: booleanAnd.alwaysTrue @@ -25524,12 +25512,6 @@ parameters: count: 2 path: ../../../htdocs/resource/class/dolresource.class.php - - - message: '#^Property Dolresource\:\:\$address \(string\) in isset\(\) is not nullable\.$#' - identifier: isset.property - count: 2 - path: ../../../htdocs/resource/class/dolresource.class.php - - message: '#^Property Dolresource\:\:\$busy \(int\) in isset\(\) is not nullable\.$#' identifier: isset.property @@ -25554,12 +25536,6 @@ parameters: count: 2 path: ../../../htdocs/resource/class/dolresource.class.php - - - message: '#^Property Dolresource\:\:\$email \(string\) in isset\(\) is not nullable\.$#' - identifier: isset.property - count: 2 - path: ../../../htdocs/resource/class/dolresource.class.php - - message: '#^Property Dolresource\:\:\$fk_code_type_resource \(string\) in isset\(\) is not nullable\.$#' identifier: isset.property @@ -25584,24 +25560,6 @@ parameters: count: 2 path: ../../../htdocs/resource/class/dolresource.class.php - - - message: '#^Property Dolresource\:\:\$town \(string\) in isset\(\) is not nullable\.$#' - identifier: isset.property - count: 2 - path: ../../../htdocs/resource/class/dolresource.class.php - - - - message: '#^Property Dolresource\:\:\$url \(string\) in isset\(\) is not nullable\.$#' - identifier: isset.property - count: 2 - path: ../../../htdocs/resource/class/dolresource.class.php - - - - message: '#^Property Dolresource\:\:\$zip \(string\) in isset\(\) is not nullable\.$#' - identifier: isset.property - count: 2 - path: ../../../htdocs/resource/class/dolresource.class.php - - message: '#^Call to function is_numeric\(\) with float\|int\\|int\<1, max\>\|\(non\-falsy\-string&numeric\-string\) will always evaluate to true\.$#' identifier: function.alreadyNarrowedType diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 07db3b13409..354062cdd59 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -12,7 +12,7 @@ * Copyright (C) 2017 ATM Consulting * Copyright (C) 2017-2019 Nicolas ZABOURI * Copyright (C) 2017 Rui Strecht - * Copyright (C) 2018-2024 Frédéric France + * Copyright (C) 2018-2025 Frédéric France * Copyright (C) 2018 Josep Lluís Amador * Copyright (C) 2023 Gauthier VERDOL * Copyright (C) 2021 Grégory Blémand @@ -361,7 +361,6 @@ abstract class CommonObject */ public $status; - /** * @var string Country name * @see getFullAddress() @@ -381,7 +380,7 @@ abstract class CommonObject public $country_code; /** - * @var string State name + * @var ?string State name * @see getFullAddress() */ public $state; diff --git a/htdocs/core/class/commonpeople.class.php b/htdocs/core/class/commonpeople.class.php index a4e9096b067..16defbb1c77 100644 --- a/htdocs/core/class/commonpeople.class.php +++ b/htdocs/core/class/commonpeople.class.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2023-2025 Frédéric France * Copyright (C) 2024-2025 MDW * * This program is free software; you can redistribute it and/or modify @@ -57,17 +57,17 @@ trait CommonPeople { /** - * @var string Address + * @var ?string Address */ public $address; /** - * @var string zip code + * @var ?string zip code */ public $zip; /** - * @var string town + * @var ?string town */ public $town; @@ -79,18 +79,19 @@ trait CommonPeople * @var string */ public $state_code; + /** - * @var string + * @var ?string */ public $state; /** - * @var string email + * @var ?string email */ public $email; /** - * @var string url + * @var ?string url */ public $url; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index b102c45408c..d2f1dc1927f 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -13,7 +13,7 @@ * Copyright (C) 2014 Cédric GROSS * Copyright (C) 2014-2015 Marcos García * Copyright (C) 2015 Jean-François Ferry - * Copyright (C) 2018-2024 Frédéric France + * Copyright (C) 2018-2025 Frédéric France * Copyright (C) 2019-2023 Thibault Foucart * Copyright (C) 2020 Open-Dsi * Copyright (C) 2021 Gauthier VERDOL @@ -9298,56 +9298,57 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null, } if (is_object($object) && $object->element == 'societe') { + /** @var Societe $object */ '@phan-var-force Societe $object'; - $substitutionarray['__THIRDPARTY_ID__'] = (is_object($object) ? $object->id : ''); - $substitutionarray['__THIRDPARTY_NAME__'] = (is_object($object) ? $object->name : ''); - $substitutionarray['__THIRDPARTY_NAME_ALIAS__'] = (is_object($object) ? $object->name_alias : ''); - $substitutionarray['__THIRDPARTY_CODE_CLIENT__'] = (is_object($object) ? $object->code_client : ''); - $substitutionarray['__THIRDPARTY_CODE_FOURNISSEUR__'] = (is_object($object) ? $object->code_fournisseur : ''); - $substitutionarray['__THIRDPARTY_EMAIL__'] = (is_object($object) ? $object->email : ''); - $substitutionarray['__THIRDPARTY_EMAIL_URLENCODED__'] = urlencode(is_object($object) ? $object->email : ''); - $substitutionarray['__THIRDPARTY_PHONE__'] = (is_object($object) ? dol_print_phone($object->phone) : ''); - $substitutionarray['__THIRDPARTY_FAX__'] = (is_object($object) ? dol_print_phone($object->fax) : ''); - $substitutionarray['__THIRDPARTY_ADDRESS__'] = (is_object($object) ? $object->address : ''); - $substitutionarray['__THIRDPARTY_ZIP__'] = (is_object($object) ? $object->zip : ''); - $substitutionarray['__THIRDPARTY_TOWN__'] = (is_object($object) ? $object->town : ''); - $substitutionarray['__THIRDPARTY_STATE__'] = (is_object($object) ? $object->state : ''); - $substitutionarray['__THIRDPARTY_COUNTRY_ID__'] = (is_object($object) ? $object->country_id : ''); - $substitutionarray['__THIRDPARTY_COUNTRY_CODE__'] = (is_object($object) ? $object->country_code : ''); - $substitutionarray['__THIRDPARTY_IDPROF1__'] = (is_object($object) ? $object->idprof1 : ''); - $substitutionarray['__THIRDPARTY_IDPROF2__'] = (is_object($object) ? $object->idprof2 : ''); - $substitutionarray['__THIRDPARTY_IDPROF3__'] = (is_object($object) ? $object->idprof3 : ''); - $substitutionarray['__THIRDPARTY_IDPROF4__'] = (is_object($object) ? $object->idprof4 : ''); - $substitutionarray['__THIRDPARTY_IDPROF5__'] = (is_object($object) ? $object->idprof5 : ''); - $substitutionarray['__THIRDPARTY_IDPROF6__'] = (is_object($object) ? $object->idprof6 : ''); - $substitutionarray['__THIRDPARTY_TVAINTRA__'] = (is_object($object) ? $object->tva_intra : ''); - $substitutionarray['__THIRDPARTY_NOTE_PUBLIC__'] = (is_object($object) ? dol_htmlentitiesbr($object->note_public) : ''); - $substitutionarray['__THIRDPARTY_NOTE_PRIVATE__'] = (is_object($object) ? dol_htmlentitiesbr($object->note_private) : ''); - } elseif (is_object($object->thirdparty)) { - $substitutionarray['__THIRDPARTY_ID__'] = (is_object($object->thirdparty) ? $object->thirdparty->id : ''); - $substitutionarray['__THIRDPARTY_NAME__'] = (is_object($object->thirdparty) ? $object->thirdparty->name : ''); - $substitutionarray['__THIRDPARTY_NAME_ALIAS__'] = (is_object($object->thirdparty) ? $object->thirdparty->name_alias : ''); - $substitutionarray['__THIRDPARTY_CODE_CLIENT__'] = (is_object($object->thirdparty) ? $object->thirdparty->code_client : ''); - $substitutionarray['__THIRDPARTY_CODE_FOURNISSEUR__'] = (is_object($object->thirdparty) ? $object->thirdparty->code_fournisseur : ''); - $substitutionarray['__THIRDPARTY_EMAIL__'] = (is_object($object->thirdparty) ? $object->thirdparty->email : ''); - $substitutionarray['__THIRDPARTY_EMAIL_URLENCODED__'] = urlencode(is_object($object->thirdparty) ? $object->thirdparty->email : ''); - $substitutionarray['__THIRDPARTY_PHONE__'] = (is_object($object->thirdparty) ? dol_print_phone($object->thirdparty->phone) : ''); - $substitutionarray['__THIRDPARTY_FAX__'] = (is_object($object->thirdparty) ? dol_print_phone($object->thirdparty->fax) : ''); - $substitutionarray['__THIRDPARTY_ADDRESS__'] = (is_object($object->thirdparty) ? $object->thirdparty->address : ''); - $substitutionarray['__THIRDPARTY_ZIP__'] = (is_object($object->thirdparty) ? $object->thirdparty->zip : ''); - $substitutionarray['__THIRDPARTY_TOWN__'] = (is_object($object->thirdparty) ? $object->thirdparty->town : ''); - $substitutionarray['__THIRDPARTY_STATE__'] = (is_object($object->thirdparty) ? $object->thirdparty->state : ''); - $substitutionarray['__THIRDPARTY_COUNTRY_ID__'] = (is_object($object->thirdparty) ? $object->thirdparty->country_id : ''); - $substitutionarray['__THIRDPARTY_COUNTRY_CODE__'] = (is_object($object->thirdparty) ? $object->thirdparty->country_code : ''); - $substitutionarray['__THIRDPARTY_IDPROF1__'] = (is_object($object->thirdparty) ? $object->thirdparty->idprof1 : ''); - $substitutionarray['__THIRDPARTY_IDPROF2__'] = (is_object($object->thirdparty) ? $object->thirdparty->idprof2 : ''); - $substitutionarray['__THIRDPARTY_IDPROF3__'] = (is_object($object->thirdparty) ? $object->thirdparty->idprof3 : ''); - $substitutionarray['__THIRDPARTY_IDPROF4__'] = (is_object($object->thirdparty) ? $object->thirdparty->idprof4 : ''); - $substitutionarray['__THIRDPARTY_IDPROF5__'] = (is_object($object->thirdparty) ? $object->thirdparty->idprof5 : ''); - $substitutionarray['__THIRDPARTY_IDPROF6__'] = (is_object($object->thirdparty) ? $object->thirdparty->idprof6 : ''); - $substitutionarray['__THIRDPARTY_TVAINTRA__'] = (is_object($object->thirdparty) ? $object->thirdparty->tva_intra : ''); - $substitutionarray['__THIRDPARTY_NOTE_PUBLIC__'] = (is_object($object->thirdparty) ? dol_htmlentitiesbr($object->thirdparty->note_public) : ''); - $substitutionarray['__THIRDPARTY_NOTE_PRIVATE__'] = (is_object($object->thirdparty) ? dol_htmlentitiesbr($object->thirdparty->note_private) : ''); + $substitutionarray['__THIRDPARTY_ID__'] = $object->id ?? ''; + $substitutionarray['__THIRDPARTY_NAME__'] = $object->name ?? ''; + $substitutionarray['__THIRDPARTY_NAME_ALIAS__'] = $object->name_alias ?? ''; + $substitutionarray['__THIRDPARTY_CODE_CLIENT__'] = $object->code_client ?? ''; + $substitutionarray['__THIRDPARTY_CODE_FOURNISSEUR__'] = $object->code_fournisseur ?? ''; + $substitutionarray['__THIRDPARTY_EMAIL__'] = $object->email ?? ''; + $substitutionarray['__THIRDPARTY_EMAIL_URLENCODED__'] = urlencode($object->email ?? ''); + $substitutionarray['__THIRDPARTY_PHONE__'] = dol_print_phone($object->phone ?? ''); + $substitutionarray['__THIRDPARTY_FAX__'] = dol_print_phone($object->fax ?? ''); + $substitutionarray['__THIRDPARTY_ADDRESS__'] = $object->address ?? ''; + $substitutionarray['__THIRDPARTY_ZIP__'] = $object->zip ?? ''; + $substitutionarray['__THIRDPARTY_TOWN__'] = $object->town ?? ''; + $substitutionarray['__THIRDPARTY_STATE__'] = $object->state ?? ''; + $substitutionarray['__THIRDPARTY_COUNTRY_ID__'] = ($object->country_id > 0 ?: ''); + $substitutionarray['__THIRDPARTY_COUNTRY_CODE__'] = $object->country_code ?? ''; + $substitutionarray['__THIRDPARTY_IDPROF1__'] = $object->idprof1 ?? ''; + $substitutionarray['__THIRDPARTY_IDPROF2__'] = $object->idprof2 ?? ''; + $substitutionarray['__THIRDPARTY_IDPROF3__'] = $object->idprof3 ?? ''; + $substitutionarray['__THIRDPARTY_IDPROF4__'] = $object->idprof4 ?? ''; + $substitutionarray['__THIRDPARTY_IDPROF5__'] = $object->idprof5 ?? ''; + $substitutionarray['__THIRDPARTY_IDPROF6__'] = $object->idprof6 ?? ''; + $substitutionarray['__THIRDPARTY_TVAINTRA__'] = $object->tva_intra ?? ''; + $substitutionarray['__THIRDPARTY_NOTE_PUBLIC__'] = dol_htmlentitiesbr($object->note_public ?? ''); + $substitutionarray['__THIRDPARTY_NOTE_PRIVATE__'] = dol_htmlentitiesbr($object->note_private ?? ''); + } elseif (is_object($object) && is_object($object->thirdparty)) { + $substitutionarray['__THIRDPARTY_ID__'] = $object->thirdparty->id ?? ''; + $substitutionarray['__THIRDPARTY_NAME__'] = $object->thirdparty->name ?? ''; + $substitutionarray['__THIRDPARTY_NAME_ALIAS__'] = $object->thirdparty->name_alias ?? ''; + $substitutionarray['__THIRDPARTY_CODE_CLIENT__'] = $object->thirdparty->code_client ?? ''; + $substitutionarray['__THIRDPARTY_CODE_FOURNISSEUR__'] = $object->thirdparty->code_fournisseur ?? ''; + $substitutionarray['__THIRDPARTY_EMAIL__'] = $object->thirdparty->email ?? ''; + $substitutionarray['__THIRDPARTY_EMAIL_URLENCODED__'] = urlencode($object->thirdparty->email ?? ''); + $substitutionarray['__THIRDPARTY_PHONE__'] = dol_print_phone($object->thirdparty->phone ?? ''); + $substitutionarray['__THIRDPARTY_FAX__'] = dol_print_phone($object->thirdparty->fax ?? ''); + $substitutionarray['__THIRDPARTY_ADDRESS__'] = $object->thirdparty->address ?? ''; + $substitutionarray['__THIRDPARTY_ZIP__'] = $object->thirdparty->zip ?? ''; + $substitutionarray['__THIRDPARTY_TOWN__'] = $object->thirdparty->town ?? ''; + $substitutionarray['__THIRDPARTY_STATE__'] = $object->thirdparty->state ?? ''; + $substitutionarray['__THIRDPARTY_COUNTRY_ID__'] = ($object->thirdparty->country_id > 0 ?: ''); + $substitutionarray['__THIRDPARTY_COUNTRY_CODE__'] = $object->thirdparty->country_code ?? ''; + $substitutionarray['__THIRDPARTY_IDPROF1__'] = $object->thirdparty->idprof1 ?? ''; + $substitutionarray['__THIRDPARTY_IDPROF2__'] = $object->thirdparty->idprof2 ?? ''; + $substitutionarray['__THIRDPARTY_IDPROF3__'] = $object->thirdparty->idprof3 ?? ''; + $substitutionarray['__THIRDPARTY_IDPROF4__'] = $object->thirdparty->idprof4 ?? ''; + $substitutionarray['__THIRDPARTY_IDPROF5__'] = $object->thirdparty->idprof5 ?? ''; + $substitutionarray['__THIRDPARTY_IDPROF6__'] = $object->thirdparty->idprof6 ?? ''; + $substitutionarray['__THIRDPARTY_TVAINTRA__'] = $object->thirdparty->tva_intra ?? ''; + $substitutionarray['__THIRDPARTY_NOTE_PUBLIC__'] = dol_htmlentitiesbr($object->thirdparty->note_public ?? ''); + $substitutionarray['__THIRDPARTY_NOTE_PRIVATE__'] = dol_htmlentitiesbr($object->thirdparty->note_private ?? ''); } if (is_object($object) && $object->element == 'recruitmentcandidature') { diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 5ff1c35496a..1f133c0fab5 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -16,7 +16,7 @@ * Copyright (C) 2017 Rui Strecht * Copyright (C) 2018 Philippe Grand * Copyright (C) 2019-2020 Josep Lluís Amador - * Copyright (C) 2019-2024 Frédéric France + * Copyright (C) 2019-2025 Frédéric France * Copyright (C) 2020 Open-Dsi * Copyright (C) 2022 ButterflyOfFire * Copyright (C) 2023-2024 Alexandre Janniaux @@ -314,21 +314,21 @@ class Societe extends CommonObject public $country_id; /** - * @var string State code + * @var ?string State code * @deprecated Use $state_code instead * @see $state_code */ public $departement_code; /** - * @var string + * @var ?string * @deprecated Use $state instead * @see $state */ public $departement; /** - * @var string + * @var ?string * @deprecated Use $country instead * @see $country */ @@ -336,23 +336,23 @@ class Societe extends CommonObject /** * Phone number - * @var string + * @var ?string */ public $phone; /** * PhoneMobile number - * @var string + * @var ?string */ public $phone_mobile; /** * Fax number - * @var string + * @var ?string */ public $fax; /** * Email - * @var string + * @var ?string */ public $email; @@ -392,7 +392,7 @@ class Societe extends CommonObject /** * Webpage - * @var string + * @var ?string */ public $url; @@ -406,12 +406,12 @@ class Societe extends CommonObject /** * Professional ID 1 (Ex: Siren in France) - * @var string + * @var ?string */ public $idprof1; /** - * @var string Professional ID 1 + * @var ?string Professional ID 1 * @deprecated Use $idprof1 instead * @see $idprof1 */ @@ -420,12 +420,12 @@ class Societe extends CommonObject /** * Professional ID 2 (Ex: Siret in France) - * @var string + * @var ?string */ public $idprof2; /** - * @var string Professional ID 2 + * @var ?string Professional ID 2 * @deprecated Use $idprof2 instead * @see $idprof2 */ @@ -433,12 +433,12 @@ class Societe extends CommonObject /** * Professional ID 3 (Ex: Ape in France) - * @var string + * @var ?string */ public $idprof3; /** - * @var string Professional ID 3 + * @var ?string Professional ID 3 * @deprecated Use $idprof3 instead * @see $idprof3 */ @@ -446,43 +446,43 @@ class Societe extends CommonObject /** * Professional ID 4 (Ex: RCS in France) - * @var string + * @var ?string */ public $idprof4; /** * Professional ID 5 - * @var string + * @var ?string */ public $idprof5; /** * Professional ID 6 - * @var string + * @var ?string */ public $idprof6; /** * Professional ID 7 - * @var string + * @var ?string */ public $idprof7; /** * Professional ID 8 - * @var string + * @var ?string */ public $idprof8; /** * Professional ID 9 - * @var string + * @var ?string */ public $idprof9; /** * Professional ID 10 - * @var string + * @var ?string */ public $idprof10; @@ -503,7 +503,7 @@ class Societe extends CommonObject public $tva_assuj = 1; /** - * @var string Intracommunitary VAT ID + * @var ?string Intracommunitary VAT ID */ public $tva_intra; @@ -644,37 +644,37 @@ class Societe extends CommonObject /** * Client code. E.g: CU2014-003 - * @var string + * @var ?string */ public $code_client; /** * Supplier code. E.g: SU2014-003 - * @var string + * @var ?string */ public $code_fournisseur; /** * Accounting code for client - * @var string + * @var ?string */ public $code_compta_client; /** * Accounting general account for customer - * @var string + * @var ?string */ public $accountancy_code_customer_general; /** * Accounting auxiliary account for customer - * @var string + * @var ?string */ public $accountancy_code_customer; /** * Accounting code for supplier - * @var string + * @var ?string */ public $code_compta_fournisseur; @@ -697,7 +697,7 @@ class Societe extends CommonObject public $code_compta_product; /** - * @var string + * @var ?string * @deprecated Use $note_public, $note_private - Note is split in public and private notes * @see $note_public, $note_private */ @@ -705,13 +705,13 @@ class Societe extends CommonObject /** * Private note - * @var string + * @var ?string */ public $note_private; /** * Public note - * @var string + * @var ?string */ public $note_public;