diff --git a/controllers/admin/AdminProductsController.php b/controllers/admin/AdminProductsController.php index 31a4d2a5c..012d62507 100644 --- a/controllers/admin/AdminProductsController.php +++ b/controllers/admin/AdminProductsController.php @@ -590,11 +590,53 @@ class AdminProductsControllerCore extends AdminController $this->_errors[] = Tools::displayError('Invalid date format.'); } } + else + $this->_errors[] = Tools::displayError('You do not have permission to add here.'); + } + // Add new + else + { + if ($this->tabAccess['add'] === '1') + { + if ($product->productAttributeExists($_POST['attribute_combinaison_list'])) + $this->_errors[] = Tools::displayError('This combination already exists.'); + else + $id_product_attribute = $product->addCombinationEntity( + Tools::getValue('attribute_wholesale_price'), + Tools::getValue('attribute_price') * Tools::getValue('attribute_price_impact'), + Tools::getValue('attribute_weight') * Tools::getValue('attribute_weight_impact'), + Tools::getValue('attribute_unity') * Tools::getValue('attribute_unit_impact'), + Tools::getValue('attribute_ecotax'), + Tools::getValue('id_image_attr'), + Tools::getValue('attribute_reference'), + null, + Tools::getValue('attribute_ean13'), + Tools::getValue('attribute_default'), + Tools::getValue('attribute_location'), + Tools::getValue('attribute_upc') + ); + $this->updateDownloadProduct($product, 0, $id_product_attribute); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to').'
'.Tools::displayError('Edit here.'); + } + if (!count($this->_errors)) + { + $product->addAttributeCombinaison($id_product_attribute, Tools::getValue('attribute_combinaison_list')); + $product->checkDefaultAttributes(); + } + if (!count($this->_errors)) + { + if (!$product->cache_default_attribute) + Product::updateDefaultAttribute($product->id); + + if (!empty($is_virtual)) + Product::updateIsVirtual($product->id); + + $this->redirect_after = self::$currentIndex.'&id_product='.$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=3&token='.($token ? $token : $this->token); } } } - else - $this->_errors[] = Tools::displayError('Could not load Product'); } public function processFeatures($token) @@ -801,17 +843,8 @@ class AdminProductsControllerCore extends AdminController public function initProcess() { - parent::initProcess(); - - if ($this->action) - { - if ($this->action == 'new') - $this->action = 'Informations'; - return; - } - // Delete a product in the download folder - elseif (Tools::getValue('deleteVirtualProduct')) + if (Tools::getValue('deleteVirtualProduct')) { if ($this->tabAccess['delete'] === '1') $this->action = 'deleteVirtualProduct'; @@ -916,6 +949,16 @@ class AdminProductsControllerCore extends AdminController else $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } + + if (!$this->action) + parent::initProcess(); + + if ($this->action) + { + if ($this->action == 'new') + $this->action = 'Informations'; + return; + } } /** @@ -1043,20 +1086,11 @@ class AdminProductsControllerCore extends AdminController $id_product_attribute = (int)Tools::getValue('id_product_attribute'); if ($id_product && Validate::isUnsignedId($id_product) && Validate::isLoadedObject($product = new Product($id_product))) { - $combinaisons = $product->getAttributeCombinaisonsById($id_product_attribute, $this->context->language->id); - foreach ($combinaisons as $key => $combinaison) - $combinaisons[$key]['attributes'][] = array($combinaison['group_name'], $combinaison['attribute_name'], $combinaison['id_attribute']); + $combinations = $product->getAttributeCombinaisonsById($id_product_attribute, $this->context->language->id); + foreach ($combinations as $key => $combinaison) - foreach ($combinaisons as $key => $combinaison) - { - $js_list = ''; - asort($combinaison['attributes']); - foreach ($combinaison['attributes'] AS $attribute) - $js_list .= '\''.addslashes(htmlspecialchars($combinaison['group_name'])).' : '.addslashes(htmlspecialchars($combinaison['attribute_name'])).'\', \''.$combinaison['id_attribute'].'\', '; - $combinaisons[$key]['list_attributes'] = rtrim($js_list, ', '); - } - - die(Tools::jsonEncode($combinaisons)); + $combinations[$key]['attributes'][] = array($combinaison['group_name'], $combinaison['attribute_name'], $combinaison['id_attribute']); + die(Tools::jsonEncode($combinations)); } } } @@ -1928,8 +1962,8 @@ class AdminProductsControllerCore extends AdminController // adding button for adding a new combination in Combinaition tab $this->toolbar_btn['newCombination'] = array( - 'short' => 'Add a new combination', - 'desc' => $this->l('Add a new combination'), + 'short' => 'New combination', + 'desc' => $this->l('New combination'), 'class' => 'toolbar-new' ); } @@ -2084,7 +2118,7 @@ class AdminProductsControllerCore extends AdminController */ public function processSuppliers($token) { - if (Tools::getValue('supplier_loaded') && Validate::isLoadedObject($product = new Product((int)Tools::getValue('id_product')))) + if (Validate::isLoadedObject($product = new Product((int)Tools::getValue('id_product')))) { // Get all id_product_attribute $attributes = $product->getAttributesResume($this->context->language->id); @@ -2262,7 +2296,7 @@ class AdminProductsControllerCore extends AdminController */ public function processWarehouses($token) { - if (Tools::getValue('warehouse_loaded') && Validate::isLoadedObject($product = new Product((int)Tools::getValue('id_product')))) + if (Validate::isLoadedObject($product = new Product((int)Tools::getValue('id_product')))) { // Get all id_product_attribute $attributes = $product->getAttributesResume($this->context->language->id); diff --git a/install-dev/sql/db_settings_lite.sql b/install-dev/sql/db_settings_lite.sql index 3cc39f932..81fea7129 100644 --- a/install-dev/sql/db_settings_lite.sql +++ b/install-dev/sql/db_settings_lite.sql @@ -1020,7 +1020,7 @@ INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES (2, 98, 'Etat instantané du stock'), (2, 99, 'Couverture du stock'), (2, 100, 'Commandes fournisseurs'), -(2, 101, 'Générateur de combinaisons'), +(2, 101, 'Générateur de déclinaisons'), (2, 102, 'Comptabilité'), (2, 103, 'Gestion des numéros de comptes'), (2, 104, 'Export'), diff --git a/install-dev/sql/upgrade/1.5.0.1.sql b/install-dev/sql/upgrade/1.5.0.1.sql index 0adc75609..ebbfc8a26 100644 --- a/install-dev/sql/upgrade/1.5.0.1.sql +++ b/install-dev/sql/upgrade/1.5.0.1.sql @@ -551,7 +551,7 @@ ALTER TABLE `PREFIX_hook` ADD `is_native` TINYINT( 1 ) NOT NULL DEFAULT '0'; ALTER TABLE `PREFIX_tax` ADD COLUMN `account_number` VARCHAR(64) NOT NULL; -/* PHP:add_new_tab(AdminAttributeGenerator, fr:Générateur de combinaisons|es:Combinations generator|en:Combinations generator|de:Combinations generator|it:Combinations generator, -1); */; +/* PHP:add_new_tab(AdminAttributeGenerator, fr:Générateur de déclinaisons|es:Combinations generator|en:Combinations generator|de:Combinations generator|it:Combinations generator, -1); */; /* PHP:add_new_tab(AdminCMSCategories, fr:Catégories CMS|es:CMS categories|en:CMS categories|de:CMS categories|it:CMS categories, -1); */; /* PHP:add_new_tab(AdminCMS, fr:Pages CMS|es:CMS pages|en:CMS pages|de:CMS pages|it:CMS pages, -1); */; diff --git a/js/admin-products.js b/js/admin-products.js index c1fd2edcc..4bc8de06e 100644 --- a/js/admin-products.js +++ b/js/admin-products.js @@ -142,7 +142,6 @@ function editProductAttribute(ids, token) $('#product_att_list').html(''); removeButtonCombination('update'); $.scrollTo('#add_new_combination', 1200, { offset: -100 }); - var wholesale_price = Math.abs(data[0]['wholesale_price']); var price = Math.abs(data[0]['price']); var weight = Math.abs(data[0]['weight']); @@ -151,17 +150,13 @@ function editProductAttribute(ids, token) var ean = data[0]['ean13']; var quantity = data[0]['quantity']; var image = false; - var old_attr = Array(data[0]['list_attributes']); - - var product_att_list = ''; + var product_att_list = new Array(); for(i=0;i Image'; $_LANGADM['AdminPPreferences88694e637431115721b5241e652a178f'] = 'Remises des quantités basées sur:'; $_LANGADM['AdminPPreferences68217d833599eb6fb56f9e6d2ca24196'] = 'Comment calculer les remises de quantité'; -$_LANGADM['AdminPPreferencesb9208b03bcc9eb4a336258dcdcb66207'] = 'Combinaisons'; +$_LANGADM['AdminPPreferencesb9208b03bcc9eb4a336258dcdcb66207'] = 'Déclinaisons'; $_LANGADM['AdminWarehouses63d5049791d9d79d86e9a108b0a999ca'] = 'Référence'; $_LANGADM['AdminWarehouses49ee3087348e8d44e1feda1917443987'] = 'Nom'; $_LANGADM['AdminWarehouses20890e791d8923cfff55ce5331259b34'] = 'Méthode de valorisation'; @@ -2943,7 +2943,7 @@ $_LANGADM['AdminImport84005574d8d764336cd8e9207de82506'] = 'Seuls les fichiers U $_LANGADM['AdminImport9db4c047fbc2df77e904876ca407a10a'] = 'Exemple de fichiers'; $_LANGADM['AdminImportc0cad1da1e9b23dd6e383276f8e3950e'] = 'Exemple de fichier catégories'; $_LANGADM['AdminImportc0bc21edce0f247286513a9f524a3c3e'] = 'Exemple de fichier produits'; -$_LANGADM['AdminImport0a8b4817e5c1e8849b9cbd65997441b5'] = 'Exemple de fichier combinaisons'; +$_LANGADM['AdminImport0a8b4817e5c1e8849b9cbd65997441b5'] = 'Exemple de fichier déclinaisons'; $_LANGADM['AdminImport1b10c2304e2f49d53c39bc40fd393335'] = 'Exemple de fichier clients'; $_LANGADM['AdminImport2f5e75d22f59829ba10e2e6276321af8'] = 'Exemple de fichier adresses'; $_LANGADM['AdminImport54b4744bfd46cc4e06988ee168b13abf'] = 'Exemple de fichier fabricants'; @@ -3101,7 +3101,7 @@ $_LANGADM['AdminProductsd88946b678e4c2f251d4e292e8142291'] = 'Référencement'; $_LANGADM['AdminProductsfff0d600f8a0b5e19e88bfb821dd1157'] = 'Images'; $_LANGADM['AdminProducts0063394f0497bfd610ebac0aee7cfc34'] = 'Associations'; $_LANGADM['AdminProductsea9cf7e47ff33b2be14e6dd07cbcefc6'] = 'Transports'; -$_LANGADM['AdminProductsb9208b03bcc9eb4a336258dcdcb66207'] = 'Combinaisons'; +$_LANGADM['AdminProductsb9208b03bcc9eb4a336258dcdcb66207'] = 'Déclinaisons'; $_LANGADM['AdminProducts98f770b0af18ca763421bac22b4b6805'] = 'Caractéristiques'; $_LANGADM['AdminProductsda22c93ccb398c72070f4000cc7b59a1'] = 'Personnalisation'; $_LANGADM['AdminProducts7e2708aeb65763c54052f57ed1a1ec1d'] = 'Pièces jointes'; @@ -3173,6 +3173,7 @@ $_LANGADM['AdminProductsc3987e4cac14a8456515f0d200da04ee'] = 'Tous les pays'; $_LANGADM['AdminProductse4c4c68c7515704a91d90207067dcbbe'] = 'Tous les groupes'; $_LANGADM['AdminProductsf2a6c498fb90ee345d997f888fce3b18'] = 'Supprimer'; $_LANGADM['AdminProducts4d774376eedc9e76eb3ecd52629ca6d5'] = 'Gestion des priorités'; +$_LANGADM['AdminProductsc572a4eb27e155bf026a8e030a153be0'] = 'Parfois un client peut être concerné par plusieurs règles de prix spécifiques simultanément. Les priorités vous permettent de décider quelle règle sera appliquée.'; $_LANGADM['AdminProducts77b4fe51b2eede1e804277e64ceb9a22'] = 'Priorités :'; $_LANGADM['AdminProducts9f82518d468b9fee614fcc92f76bb163'] = 'Boutique'; $_LANGADM['AdminProducts386c339d37e737a436499d423a77df0c'] = 'Devise'; @@ -3283,8 +3284,8 @@ $_LANGADM['AdminProducts4b5ecb6f4e1496fb2c2b28fa0f41872a'] = 'La date de disponi $_LANGADM['AdminProducts461900b74731e07320ca79366df3e809'] = 'Image :'; $_LANGADM['AdminProductse5f7f63d66023847e693fd34bea09d41'] = 'Par défaut :'; $_LANGADM['AdminProducts29d7b46b863639e29ae8452d2320530a'] = 'Faire de cette déclinaison celle par défaut pour ce produit'; -$_LANGADM['AdminProductsadbabbab7becdf5ef8736a64466df260'] = 'Ajouter cette déclinaison'; -$_LANGADM['AdminProducts040c4cd298c6f710e3862d94a4d1145c'] = 'Modifier cette combinaison'; +$_LANGADM['AdminProductsadbabbab7becdf5ef8736a64466df260'] = 'Nouvelle déclinaison'; +$_LANGADM['AdminProducts040c4cd298c6f710e3862d94a4d1145c'] = 'Modifier cette déclinaison'; $_LANGADM['AdminProductsefb41efb550c9beaa9291985f7fa850a'] = 'Ajouter ce groupe de déclinaisons'; $_LANGADM['AdminProducts9230dd17b40c6d0478772e4d545abc46'] = 'Annuler la modification'; $_LANGADM['AdminProducts5fd58de80d182944e9c229aa4c3b8180'] = 'Ajouter ou modifier des propriétés personnalisables'; @@ -3390,10 +3391,11 @@ $_LANGADM['AdminProducts7b988b81a5fe3114360063de23f49016'] = 'Prix de vente fina $_LANGADM['AdminProductse2e79605fc9450ec17957cf0e910f5c6'] = 'TTC'; $_LANGADM['AdminProducts887ee91702c962a70b87cbef07bbcaec'] = 'HT'; $_LANGADM['AdminProducts5b14ab8904d8a735edd6ea4cff8f7b7c'] = 'Prix spécifiques'; +$_LANGADM['AdminProducts146aed434d7f1d22ee1dd69663122b16'] = 'Vous pouvez définir des prix spécifiques pour des clients appartenant à différents groupes, différents pays...'; $_LANGADM['AdminProductsc1649abdccba825a27f5820f126c8454'] = 'Ajouter un nouveau prix spécifique'; $_LANGADM['AdminProductsf98188b975d57e9dfc3137c7c9f9a5da'] = 'Pour :'; -$_LANGADM['AdminProducts8ed07686e8486f87c4e0d491b0949904'] = 'Combinaison :'; -$_LANGADM['AdminProductsc77b86cdeed7ed9197db5858fa3b5fd0'] = 'Appliquer à toutes les combinaisons'; +$_LANGADM['AdminProducts8ed07686e8486f87c4e0d491b0949904'] = 'Déclinaison :'; +$_LANGADM['AdminProductsc77b86cdeed7ed9197db5858fa3b5fd0'] = 'Appliquer à toutes les déclinaisons'; $_LANGADM['AdminProducts06444363878572ed1fd5c9342cd5884f'] = 'Disponible à partir de :'; $_LANGADM['AdminProducts01b6e20344b68835c5ed1ddedf20d531'] = 'à'; $_LANGADM['AdminProducts95b6faa9d75417fe5e7767a733ab6fb4'] = 'À partir de'; @@ -3406,7 +3408,7 @@ $_LANGADM['AdminProductsb2f40690858b404ed10e62bdf422c704'] = 'Montant'; $_LANGADM['AdminProducts37be07209f53a5d636d5c904ca9ae64c'] = 'Pourcentage'; $_LANGADM['AdminProducts61946eb3e50f01d7ea339f202a2942f8'] = '(s\'il est réglé sur \"Montant\", la taxe est incluse)'; $_LANGADM['AdminProductsab7a485ebe75b6dd7243ad719f23c7de'] = 'Règle'; -$_LANGADM['AdminProducts47ac923d219501859fb68fed8c8db77b'] = 'Combinaison'; +$_LANGADM['AdminProducts47ac923d219501859fb68fed8c8db77b'] = 'Déclinaison'; $_LANGADM['AdminProducts3601146c4e948c32b6424d2c0a7f0118'] = 'Prix'; $_LANGADM['AdminProducts7f5f43f70aaffba55924eaa4b51d9eb3'] = '(HT)'; $_LANGADM['AdminProducts1901606ea069a83dc7beea17881ef95a'] = 'Période'; diff --git a/translations/fr/errors.php b/translations/fr/errors.php index c78b69520..ba1cc793e 100644 --- a/translations/fr/errors.php +++ b/translations/fr/errors.php @@ -256,7 +256,7 @@ $_ERRORS['298883b17e36ee3a18d73e835c0b44fc'] = 'Aucun fichier n\'a été envoyé $_ERRORS['20c6125376d8de28149d655c7cc25e32'] = 'Aucun fichiers n\'a été envoyés'; $_ERRORS['cb20447a4bf5ff9bec717ec68a357a93'] = 'Aucun moteur de rendu choisi'; $_ERRORS['ccacacd12f75e1ab3f9ce3e234ed5777'] = 'Aucun moteur de tableau sélectionné'; -$_ERRORS['774eec2772b5f57b2e13d11e1b093a4f'] = 'Aucune image trouvée pour la combinaison avec id_product = %s et la position de l\'image = %s.'; +$_ERRORS['774eec2772b5f57b2e13d11e1b093a4f'] = 'Aucune image trouvée pour la déclinaison avec id_product = %s et la position de l\'image = %s.'; $_ERRORS['0e63e5844a0255aeb0cee434263552ae'] = 'aucune facture avec cet ID:'; $_ERRORS['e21c3c406358073b38d481fd3d88221c'] = 'Aucune facture trouvée'; $_ERRORS['f59b67acbc1ca8ecad71a742f5e43b09'] = 'aucune commande avec cet ID:'; @@ -347,7 +347,7 @@ $_ERRORS['71f4f008985ea6abc73e89a668e15197'] = 'Cet attribut existe déjà.'; $_ERRORS['ecc5c9c627d8b41fc33888b5b17ea1a5'] = 'Cette classe dépend de plusieurs fichiers modifiés dans la version 1.4.5.0 et ne doit pas être utilisé dans une version plus ancienne'; $_ERRORS['ecc5c9c627d8b41fc33888b5b17ea1a5'] = 'Cette classe dépend de plusieurs fichiers modifiés en v1.4.5 et ne devrait pas être utilisée dans une ancienne version'; $_ERRORS['e49f206b6d8f0e5e2a6cb13d96b44ed2'] = 'Ce nom de classe n\'existe pas'; -$_ERRORS['e22a6ea51eb74bee7acaa4acf2846c7b'] = 'Cette combinaison existe déjà'; +$_ERRORS['e22a6ea51eb74bee7acaa4acf2846c7b'] = 'Cette déclinaison existe déjà'; $_ERRORS['d51499b48399054d809f49bce078923e'] = 'Ce client existent déjà en tant que non-invité.'; $_ERRORS['8562db06e3931e51ac8c456b56088b02'] = 'Le client n\'existe pas'; $_ERRORS['350e5d76b60ae887c90d55e2fb23fdc5'] = 'ce bon de réduction n\'est pas applicable à cette catégorie de produit';