From c5ac79e34c9abdbb5386081e3c7cb527e809704d Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Tue, 2 Mar 2021 15:24:55 +0100 Subject: [PATCH 1/4] Fix #16432 : Update of getCountriesinEEX --- htdocs/core/lib/company.lib.php | 58 +++++++++------------------------ 1 file changed, 16 insertions(+), 42 deletions(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index c6cd0998326..80e15565c4f 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -710,51 +710,25 @@ function getFormeJuridiqueLabel($code) */ function getCountriesInEEC() { - global $conf; + global $conf, $db; + $country_code_in_EEC = array(); - // List of all country codes that are in europe for european vat rules - // List found on http://ec.europa.eu/taxation_customs/common/faq/faq_1179_en.htm#9 - $country_code_in_EEC = array( - 'AT', // Austria - 'BE', // Belgium - 'BG', // Bulgaria - 'CY', // Cyprus - 'CZ', // Czech republic - 'DE', // Germany - 'DK', // Danemark - 'EE', // Estonia - 'ES', // Spain - 'FI', // Finland - 'FR', // France - 'GB', // United Kingdom - 'GR', // Greece - 'HR', // Croatia - 'NL', // Holland - 'HU', // Hungary - 'IE', // Ireland - 'IM', // Isle of Man - Included in UK - 'IT', // Italy - 'LT', // Lithuania - 'LU', // Luxembourg - 'LV', // Latvia - 'MC', // Monaco - Included in France - 'MT', // Malta - //'NO', // Norway - 'PL', // Poland - 'PT', // Portugal - 'RO', // Romania - 'SE', // Sweden - 'SK', // Slovakia - 'SI', // Slovenia - 'UK', // United Kingdom - //'CH', // Switzerland - No. Swizerland in not in EEC - ); + $sql = "SELECT cc.code FROM ".MAIN_DB_PREFIX."c_country as cc"; + $sql .= " WHERE cc.eec = 1"; + $sql .= " AND cc.active = 1"; - if (!empty($conf->global->MAIN_COUNTRIES_IN_EEC)) { - // For example MAIN_COUNTRIES_IN_EEC = 'AT,BE,BG,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,NL,HU,IE,IM,IT,LT,LU,LV,MC,MT,PL,PT,RO,SE,SK,SI,UK' - $country_code_in_EEC = explode(',', $conf->global->MAIN_COUNTRIES_IN_EEC); + $resql = $db->query($sql); + if ($resql) { + $num = $db->num_rows($resql); + $i = 0; + while ($i < $num) { + $objp = $db->fetch_object($resql); + $country_code_in_EEC[] = $objp->code; + $i++; + } + } else { + dol_print_error($db); } - return $country_code_in_EEC; } From fc86784cfc62b54b347bd88aadf4a1f00a289d10 Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Tue, 2 Mar 2021 16:03:14 +0100 Subject: [PATCH 2/4] Fix #16432 : update with eldy advices --- htdocs/core/lib/company.lib.php | 34 +++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 80e15565c4f..1e6542d7ed1 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -710,24 +710,30 @@ function getFormeJuridiqueLabel($code) */ function getCountriesInEEC() { + // List of all country codes that are in europe for european vat rules + // List found on http://ec.europa.eu/taxation_customs/common/faq/faq_1179_en.htm#9 global $conf, $db; $country_code_in_EEC = array(); - $sql = "SELECT cc.code FROM ".MAIN_DB_PREFIX."c_country as cc"; - $sql .= " WHERE cc.eec = 1"; - $sql .= " AND cc.active = 1"; - - $resql = $db->query($sql); - if ($resql) { - $num = $db->num_rows($resql); - $i = 0; - while ($i < $num) { - $objp = $db->fetch_object($resql); - $country_code_in_EEC[] = $objp->code; - $i++; - } + if (!empty($conf->global->MAIN_COUNTRIES_IN_EEC)) { + // For example MAIN_COUNTRIES_IN_EEC = 'AT,BE,BG,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,NL,HU,IE,IM,IT,LT,LU,LV,MC,MT,PL,PT,RO,SE,SK,SI,UK' + $country_code_in_EEC = explode(',', $conf->global->MAIN_COUNTRIES_IN_EEC); } else { - dol_print_error($db); + $sql = "SELECT cc.code FROM ".MAIN_DB_PREFIX."c_country as cc"; + $sql .= " WHERE cc.eec = 1"; + + $resql = $db->query($sql); + if ($resql) { + $num = $db->num_rows($resql); + $i = 0; + while ($i < $num) { + $objp = $db->fetch_object($resql); + $country_code_in_EEC[] = $objp->code; + $i++; + } + } else { + dol_print_error($db); + } } return $country_code_in_EEC; } From b374a8a00b28ddb15fd2149326cb2bdcc98a2216 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Tue, 2 Mar 2021 15:03:36 +0000 Subject: [PATCH 3/4] Fixing style errors. --- htdocs/core/lib/company.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 1e6542d7ed1..25ba7afff84 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -721,7 +721,7 @@ function getCountriesInEEC() } else { $sql = "SELECT cc.code FROM ".MAIN_DB_PREFIX."c_country as cc"; $sql .= " WHERE cc.eec = 1"; - + $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); From 2eaa6ad6c6ba11327e05fda2c14a3ff8abe6ca7c Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Tue, 2 Mar 2021 16:21:43 +0100 Subject: [PATCH 4/4] Fix #16432 : Add cache use in function --- htdocs/core/lib/company.lib.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 25ba7afff84..0bdfbd28a7d 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -718,6 +718,9 @@ function getCountriesInEEC() if (!empty($conf->global->MAIN_COUNTRIES_IN_EEC)) { // For example MAIN_COUNTRIES_IN_EEC = 'AT,BE,BG,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,NL,HU,IE,IM,IT,LT,LU,LV,MC,MT,PL,PT,RO,SE,SK,SI,UK' $country_code_in_EEC = explode(',', $conf->global->MAIN_COUNTRIES_IN_EEC); + } elseif (!empty($conf->cache['country_code_in_EEC'])) { + // Use of cache to reduce number of database requests + $country_code_in_EEC = $conf->cache['country_code_in_EEC']; } else { $sql = "SELECT cc.code FROM ".MAIN_DB_PREFIX."c_country as cc"; $sql .= " WHERE cc.eec = 1"; @@ -734,6 +737,7 @@ function getCountriesInEEC() } else { dol_print_error($db); } + $conf->cache['country_code_in_EEC'] = $country_code_in_EEC; } return $country_code_in_EEC; }