diff --git a/htdocs/core/modules/modSyncSupplierWebServices.class.php b/htdocs/core/modules/modSyncSupplierWebServices.class.php
new file mode 100755
index 00000000000..088989f9de4
--- /dev/null
+++ b/htdocs/core/modules/modSyncSupplierWebServices.class.php
@@ -0,0 +1,121 @@
+
+ *
+ * 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
+ * the Free Software Foundation; either version 3 of the License, or
+ * (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
+ * along with this program. If not, see .
+ */
+
+/**
+ * \defgroup webservices Module webservices
+ * \brief Module to enable client for supplier WebServices
+ * \file htdocs/core/modules/modSyncSupplierWebServices.class.php
+ * \ingroup webservices
+ * \brief File to describe client for supplier webservices module
+ */
+include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
+
+/**
+ * Class to describe a WebServices module
+ */
+class modSyncSupplierWebServices extends DolibarrModules
+{
+
+ /**
+ * Constructor. Define names, constants, directories, boxes, permissions
+ *
+ * @param DoliDB $db Database handler
+ */
+ function __construct($db)
+ {
+ $this->db = $db;
+ $this->numero = 2650;
+
+ $this->family = "technic";
+ // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
+ $this->name = preg_replace('/^mod/i','',get_class($this));
+ $this->description = "Enable the client for external supplier web services";
+ $this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
+ // Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase)
+ $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
+ // Where to store the module in setup page (0=common,1=interface,2=others,3=very specific)
+ $this->special = 1;
+ // Name of image file used for this module.
+ $this->picto='technic';
+
+ // Data directories to create when module is enabled
+ $this->dirs = array();
+
+ // Config pages
+ //-------------
+ //$this->config_page_url = array("webservices.php@webservices");
+
+ // Dependancies
+ //-------------
+ $this->depends = array();
+ $this->requiredby = array();
+ $this->langfiles = array("other");
+
+ // Constantes
+ //-----------
+ $this->const = array();
+
+ // New pages on tabs
+ // -----------------
+ $this->tabs = array();
+
+ // Boxes
+ //------
+ $this->boxes = array();
+
+ // Permissions
+ //------------
+ $this->rights = array();
+ $this->rights_class = 'syncsupplierwebservices';
+ $r=0;
+ }
+
+
+ /**
+ * Function called when module is enabled.
+ * The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
+ * It also creates data directories
+ *
+ * @param string $options Options when enabling module ('', 'noboxes')
+ * @return int 1 if OK, 0 if KO
+ */
+ function init($options='')
+ {
+ // Prevent pb of modules not correctly disabled
+ //$this->remove($options);
+
+ $sql = array();
+
+ return $this->_init($sql,$options);
+ }
+
+ /**
+ * Function called when module is disabled.
+ * Remove from database constants, boxes and permissions from Dolibarr database.
+ * Data directories are not deleted
+ *
+ * @param string $options Options when enabling module ('', 'noboxes')
+ * @return int 1 if OK, 0 if KO
+ */
+ function remove($options='')
+ {
+ $sql = array();
+
+ return $this->_remove($sql,$options);
+ }
+
+}
diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php
index b8d9d74e147..263a96bdca4 100644
--- a/htdocs/fourn/commande/card.php
+++ b/htdocs/fourn/commande/card.php
@@ -7,6 +7,7 @@
* Copyright (C) 2011 Philippe Grand
* Copyright (C) 2012 Marcos GarcĂa
* Copyright (C) 2013 Florian Henry
+ * Copyright (C) 2014 Ion Agorria
*
* 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
@@ -1065,8 +1066,10 @@ if ($action == 'webservice' && GETPOST('mode', 'alpha') == "send" && ! GETPOST('
'entity'=>$ws_entity
);
- //Is everything filled?
- if ($mode != "init" && (empty($ws_host) || empty($ws_key) || empty($ws_user) || empty($ws_password) || empty($ws_thirdparty))) {
+ //Is sync supplier web services module activated? and everything filled?
+ if (empty($conf->syncsupplierwebservices->enabled)) {
+ setEventMessage($langs->trans("WarningModuleNotActive",$langs->transnoentities("Module2650Name")));
+ } else if ($mode != "init" && (empty($ws_host) || empty($ws_key) || empty($ws_user) || empty($ws_password) || empty($ws_thirdparty))) {
setEventMessage($langs->trans("ErrorFieldsRequired"), 'errors');
}
else
@@ -2054,6 +2057,7 @@ elseif (! empty($object->id))
if (empty($ws_thirdparty))
{
setEventMessage($langs->trans("RemoteUserMissingAssociatedSoc"), 'errors');
+ $error_occurred = true;
}
else
{
@@ -2129,10 +2133,12 @@ elseif (! empty($object->id))
elseif ($user_status_code == "PERMISSION_DENIED")
{
setEventMessage($langs->trans("RemoteUserNotPermission"), 'errors');
+ $error_occurred = true;
}
else
{
setEventMessage($langs->trans("ResponseNonOK")." '".$user_status_code."'", 'errors');
+ $error_occurred = true;
}
//Form
@@ -2242,8 +2248,9 @@ elseif (! empty($object->id))
//}
}
- // Create a remote order using WebService
- if ($object->statut >= 2) // 2 means accepted
+
+ // Create a remote order using WebService only if module is activated
+ if (! empty($conf->syncsupplierwebservices->enabled) && $object->statut >= 2) // 2 means accepted
{
print 'id.'&action=webservice&mode=init">'.$langs->trans('CreateRemoteOrder').'';
}