dolibarr  16.0.5
checkVatPopup.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2006-2016 Laurent Destailleur <eldy@users.sourceforge.net>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <https://www.gnu.org/licenses/>.
16  */
17 
24 if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on)
25 
26 require "../../main.inc.php";
27 require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
28 require_once NUSOAP_PATH.'/nusoap.php';
29 
30 $langs->load("companies");
31 
32 //http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
33 $WS_DOL_URL = 'https://ec.europa.eu/taxation_customs/vies/services/checkVatService';
34 //$WS_DOL_URL_WSDL=$WS_DOL_URL.'?wsdl';
35 $WS_DOL_URL_WSDL = 'https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl';
36 $WS_METHOD = 'checkVat';
37 
38 
39 $conf->dol_hide_topmenu = 1;
40 $conf->dol_hide_leftmenu = 1;
41 
42 llxHeader('', $langs->trans("VATIntraCheckableOnEUSite"));
43 
44 print '<div class="vatcheckarea margintoponly marginbottomonly">';
45 
46 print load_fiche_titre($langs->trans("VATIntraCheckableOnEUSite"), '', 'title_setup');
47 
48 $vatNumber = GETPOST("vatNumber", 'alpha');
49 
50 if (!$vatNumber) {
51  print '<br>';
52  print '<span class="error">'.$langs->transnoentities("ErrorFieldRequired", $langs->trans("VATIntraShort")).'</span><br>';
53 } else {
54  $vatNumber = preg_replace('/\^\w/', '', $vatNumber);
55  $vatNumber = str_replace(array(' ', '.'), '', $vatNumber);
56  $countryCode = substr($vatNumber, 0, 2);
57  $vatNumber = substr($vatNumber, 2);
58 
59  print '<b>'.$langs->trans("Country").'</b>: '.$countryCode.'<br>';
60  print '<b>'.$langs->trans("VATIntraShort").'</b>: '.$vatNumber.'<br>';
61  print '<br>';
62 
63  // Set the parameters to send to the WebService
64  $parameters = array("countryCode" => $countryCode,
65  "vatNumber" => $vatNumber);
66 
67  // Set the WebService URL
68  dol_syslog("Create nusoap_client for URL=".$WS_DOL_URL." WSDL=".$WS_DOL_URL_WSDL);
69  require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
70  $params = getSoapParams();
71  //ini_set('default_socket_timeout', $params['response_timeout']);
72  //$soapclient = new SoapClient($WS_DOL_URL_WSDL,$params);
73  $soapclient = new nusoap_client($WS_DOL_URL_WSDL, true, $params['proxy_host'], $params['proxy_port'], $params['proxy_login'], $params['proxy_password'], $params['connection_timeout'], $params['response_timeout']);
74  $soapclient->soap_defencoding = 'utf-8';
75  $soapclient->xml_encoding = 'utf-8';
76  $soapclient->decode_utf8 = false;
77 
78  // Check for an error
79  $err = $soapclient->getError();
80  if ($err) {
81  dol_syslog("Constructor error ".$WS_DOL_URL, LOG_ERR);
82  }
83 
84  // Call the WebService and store its result in $result.
85  dol_syslog("Call method ".$WS_METHOD);
86  $result = $soapclient->call($WS_METHOD, $parameters);
87 
88  //var_dump($parameters);
89  //var_dump($soapclient);
90  //print "x".is_array($result)."i";
91  //var_dump($result);
92  //print $soapclient->request.'<br>';
93  //print $soapclient->response.'<br>';
94 
95  $messagetoshow = '';
96  print '<b>'.$langs->trans("Response").'</b>:<br>';
97 
98  // Service indisponible
99  if (!is_array($result) || preg_match('/SERVICE_UNAVAILABLE/i', $result['faultstring'])) {
100  print '<span class="error">'.$langs->trans("ErrorServiceUnavailableTryLater").'</span><br>';
101  $messagetoshow = $soapclient->response;
102  } elseif (preg_match('/TIMEOUT/i', $result['faultstring'])) {
103  print '<span class="error">'.$langs->trans("ErrorServiceUnavailableTryLater").'</span><br>';
104  $messagetoshow = $soapclient->response;
105  } elseif (preg_match('/SERVER_BUSY/i', $result['faultstring'])) {
106  print '<span class="error">'.$langs->trans("ErrorServiceUnavailableTryLater").'</span><br>';
107  $messagetoshow = $soapclient->response;
108  } elseif ($result['faultstring']) {
109  print '<span class="error">'.$langs->trans("Error").'</span><br>';
110  $messagetoshow = $result['faultstring'];
111  } elseif (preg_match('/INVALID_INPUT/i', $result['faultstring'])
112  || ($result['requestDate'] && !$result['valid'])) {
113  // Syntaxe ko
114  if ($result['requestDate']) {
115  print $langs->trans("Date").': '.$result['requestDate'].'<br>';
116  }
117  print $langs->trans("VATIntraSyntaxIsValid").': <span class="error">'.$langs->trans("No").'</span> (Might be a non europeen VAT)<br>';
118  print $langs->trans("ValueIsValid").': <span class="error">'.$langs->trans("No").'</span> (Might be a non europeen VAT)<br>';
119  //$messagetoshow=$soapclient->response;
120  } else {
121  // Syntaxe ok
122  if ($result['requestDate']) {
123  print $langs->trans("Date").': '.$result['requestDate'].'<br>';
124  }
125  print $langs->trans("VATIntraSyntaxIsValid").': <span class="ok">'.$langs->trans("Yes").'</span><br>';
126  print $langs->trans("ValueIsValid").': ';
127  if (preg_match('/MS_UNAVAILABLE/i', $result['faultstring'])) {
128  print '<span class="error">'.$langs->trans("ErrorVATCheckMS_UNAVAILABLE", $countryCode).'</span><br>';
129  } else {
130  if (!empty($result['valid']) && ($result['valid'] == 1 || $result['valid'] == 'true')) {
131  print '<span class="ok">'.$langs->trans("Yes").'</span>';
132  print '<br>';
133  print $langs->trans("Name").': '.$result['name'].'<br>';
134  print $langs->trans("Address").': '.$result['address'].'<br>';
135  } else {
136  print '<span class="error">'.$langs->trans("No").'</span>';
137  print '<br>'."\n";
138  }
139  }
140  }
141 
142  // Show log data into page
143  // print "\n";
144  // print '<!-- ';
145  // var_dump($result);
146  // print '-->';
147 }
148 
149 print '<br>';
150 print $langs->trans("VATIntraManualCheck", $langs->trans("VATIntraCheckURL"), $langs->transnoentitiesnoconv("VATIntraCheckURL")).'<br>';
151 print '<br>';
152 print '<div class="center"><input type="button" class="button" value="'.$langs->trans("CloseWindow").'" onclick="javascript: window.close()"></div>';
153 
154 if ($messagetoshow) {
155  print '<br><br>';
156  print "\n".'Error returned:<br>';
157  print nl2br($messagetoshow);
158 }
159 
160 print '</div>';
161 
162 // End of page
163 llxFooter();
164 $db->close();
llxFooter
llxFooter()
Empty footer.
Definition: wrapper.php:73
load_fiche_titre
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
Definition: functions.lib.php:5204
GETPOST
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
Definition: functions.lib.php:484
getSoapParams
getSoapParams()
Return array to use for SoapClient constructor.
Definition: functions2.lib.php:2066
dol_syslog
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
Definition: functions.lib.php:1603
llxHeader
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOCSRFCHECK')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:59