Article tagué Magento
Magento facturer une commande annulée
16/09/11
Il arrive parfois suite à des des problèmes de liaison avec la banque ou à une erreur du commerçant d’annuler une commande avant même de l’avoir facturer.
Le problème est qu’il est impossible de facturer la commande une fois celle-ci annulée. On peut la renouveller, mais si le client à payer par carte bancaire, il ne sera pas possible de choisir ce même mode de paiement. Voici un bref tutorial pour pouvoir facturer une commande annulée dans Magento.
Attention, testé sous V 1.4.1.1 (pour les autres versions le raisonnement est sans doute le même)
Premièrement, récupéré l’ID de la commande. Pour cela allez dans le backoffice, sur la commande en question et vérifier dans l’url de la page l’id ex :
http://www.monsite.com/index.php/admin/sales_order/view/order_id/6646/key/9f8445f7539e569d1a587c6944a27ebf/
L’id est représenté en gras.
Une fois l’id en main direction la base de données.
Trois tables sont à modifier :
- sales_flat_order
- sales_flat_order_grid
- sales_flat_order_item
Dans la table sales_flat_order vérifier les champs suivants pour l’id de la commande :
- state : le modifier en processing
- status : le modifier en processing
- %_canceled : Tous les champs en canceled doivent être passés à Null
Dans la table sales_flat_order_grid vérifier les champs suivants pour l’id de la commande :
- status : le modifier en processing
Dans la table sales_flat_order_item vérifier les champs suivants pour l’id de la commande:
- qty_canceled : le passer à Null
Import Magento en arrière plan
3/03/11
Parfois Magento peut être lent à s’éxécuter. C’est d’ailleurs le cas sur les profils avancés d’import , export…
Pour palier à cet obstacle voilà un petit script, pouvant être lancé sans être connecté pour lancer l’import/export indépendamment de l’application. Attention à la sécurité tout de même…
Pour lancer ce script :
http://monsite.fr/monscript.php/?file=NomDuFichier.csv
Vous devez avoir au préalable placer votre fichier d’import dans /var/import/ ou un chemin particulier en fonction de votre profil
require_once 'app/Mage.php';umask(0);Mage::app();$profileId = 17; //Insérer ici le profil d'import /export ( Système > Importer/Exporter > Colonne Id )$filename = Mage::app()->getRequest()->getParam('files'); // set the filename that is to be imported - file needs to be present in var/import directoryif (!isset($filename)) {die("No file has been set!");}$logFileName= $filename.'.log';$recordCount = 0;Mage::log("Import Started",null,$logFileName);$profile = Mage::getModel('dataflow/profile');$userModel = Mage::getModel('admin/user');$userModel->setUserId(0);Mage::getSingleton('admin/session')->setUser($userModel);if ($profileId) {$profile->load($profileId);if (!$profile->getId()) {Mage::getSingleton('adminhtml/session')->addError('The profile you are trying to save no longer exists');}}Mage::register('current_convert_profile', $profile);$profile->run();$batchModel = Mage::getSingleton('dataflow/batch');if ($batchModel->getId()) {if ($batchModel->getAdapter()) {$batchId = $batchModel->getId();$batchImportModel = $batchModel->getBatchImportModel();$importIds = $batchImportModel->getIdCollection();$batchModel = Mage::getModel('dataflow/batch')->load($batchId);$adapter = Mage::getModel($batchModel->getAdapter());foreach ($importIds as $importId) {$recordCount++;try{$batchImportModel->load($importId);if (!$batchImportModel->getId()) {$errors[] = Mage::helper('dataflow')->__('Skip undefined row');continue;}$importData = $batchImportModel->getBatchData();try {$adapter->saveRow($importData);} catch (Exception $e) {Mage::log($e->getMessage(),null,$logFileName);continue;}if ($recordCount%20 == 0) {Mage::log($recordCount . ' - Completed!!',null,$logFileName);}} catch(Exception $ex) {Mage::log('Record# ' . $recordCount . ' - SKU = ' . $importData['sku']. ' - Error - ' . $ex->getMessage(),null,$logFileName);}}foreach ($profile->getExceptions() as $e) {Mage::log($e->getMessage(),null,$logFileName);}}}
Voilà pour votre prochain import
Enjoy !
Liens en rapport avec Magento
http://www.creation-site-lyon.com/tag/magento/
Besoin d’un site magento ?
Magento Cron & APC – Solution
2/11/10
A la suite de cet article, nous avons effectué des modifications dans les configurations apache et php5.
Ce post nous indiquait au préalable de vérifier l’état de la variable apc.enable_cli . Après vérification, le problème ne venait pas de là.
Nous avons donc vérifier les configurations du module APC pour php5-cli. Nous avons dupliqué les configurations apache pour ce module.
A présent, le cron du site fonctionne parfaitement, hormis la présence de warnings lors de l’exécution de :
php cron.php
Warning : Potential cache slam averted for key 'SITE_CONFIG_GLOBAL_LOCK' in path/lesite.fr/lib/Zend/Cache/Backend/Apc.php on line 112. [Thu Oct 28 10:22:09 2010] [apc-warning] Potential cache slam averted for key 'SITE_CONFIG_GLOBAL' in path/lib/Zend/Cache/Backend/Apc.php on line 112. [Thu Oct 28 10:22:10 2010] [apc-warning] Potential cache slam averted for key 'SITE_DB_PDO_MYSQL_DDL_cron_schedule_1' in path/lib/Zend/Cache/Backend/Apc.php on line 112. [Thu Oct 28 10:22:11 2010] [apc-warning] Potential cache slam averted for key 'SITE_CRON_LAST_SCHEDULE_GENERATE_AT' in path/lib/Zend/Cache/Backend/Apc.php on line 112. [Thu Oct 28 10:22:11 2010] [apc-warning] Potential cache slam averted for key 'SITE_CRON_LAST_HISTORY_CLEANUP_AT' in path/lib/Zend/Cache/Backend/Apc.php on line 112.
Ces warnings, semble-t-il, apparaissent à cause d’un conflit entre les variables apc.slam_defense et apc.write_lock. Nous avons désactivé la première.
Les tâches régulières de Magento marche maintenant correctement.
Si vous souhaitez plus de détails sur nos configurations, n’hésitez pas à nous contacter via www.applibox.com
Magento Cron et APC
28/10/10
Suite à l’article concernant l’optimisation de la vitesse sous Magento, nous avons rencontré un problème vis à vis des tâches régulieres ( cron ).
Nous nous sommes aperçus, que l’envoi de la newsletter ne s’effectuait pas correctement. Après plusieurs manipulations, nous sommes arrivés à l’erreur suivante en effectuant la commande ci dessous sur le dossier magento du site :
php cron.php
Ce qui nous générait une erreur de ce type :
Uncaught exception 'Zend_Cache_Exception' with message 'can't get apc memory size' in path/lib/Zend/Cache.php:208
Stack trace:
#0 path/Zend/Cache/Backend/Apc.php(191): Zend_Cache::throwException('can't get apc m...')
#1 path/lib/Zend/Cache/Backend/TwoLevels.php(500): Zend_Cache_Backend_Apc->getFillingPercentage()
#2 path/lib/Zend/Cache/Backend/TwoLevels.php(213): Zend_Cache_Backend_TwoLevels->_getFastFillingPercentage('loading')
#3 path/lib/Zend/Cache/Core.php(294): Zend_Cache_Backend_TwoLevels->load('MEDIASAV_CORE_C...', false)
#4 path/app/code/core/Mage/Core/Model/Cache.php(329): Zend_Cache_Core->load('CORE_CACHE_OPTI...')
#5 path/app/code/core/Mage/Core/Model/Cache.php(422): Mage_Core_Model_Cache->load('core_cache_opti...')
#6 path/app/code/core/Mage/Core/Model/Cache.php(459): Mage_Core_Mod in /var/www/lesite.fr/htdocs/lib/Zend/Cache.php on line 208
Nous avons donc supprimé du fichier local.xml présent dans /app/etc/ les lignes ajoutées pour l’optimisation. Pensez à vider le cache pour que le cron s’effectue à nouveau correctement.
<cache> <backend>apc</backend> <prefix>MAGE_</prefix> </cache>
Pour informations, certains ayant la même erreur, se sont aidés de cet article pour résoudre leur problème. Mais dans notre cas, les valeurs sont déjà correctes…
Nous travaillons actuellement sur le cache APC afin que l’optimisation et les tâches régulières s’effectuent correctement. Un article vous informa de la suite des évènements.
path
Import des clients d’une plateforme ecommerce vers une plateforme Magento
16/06/10
Voici une technique utilisée lors du transfert de l’un de nos clients d’une plateforme ecommerce vers une plateforme magento. Elle vous donnera peut être une piste si vous avez besoin d’importer des clients existants dans une base Magento. Attention tout de même cette technique est à adapter en fonction des besoins.
Pour cette opération vous aurez besoin de :
- Votre ancienne base de données avec Phpmyadmin installé
- Le nouveau Magento installé avec l’accès à l’administration et notamment l’accès à l’interface Importer/Exporter
Le but de l’opération est de créer un fichier csv à l’aide de Phpmyadmin prêt pour l’import dans Magento. Cette technique implique le fait que votre base de données existante doit avoir un minimum de points communs avec le fichier d’import magento. Elle évite aussi de passer par un script PHP intermédiaire.
1ère étape : Récupérer la liste des champs disponibles dans le fichier d’export Magento
- Allez sur le BackOffice de votre Magento
- Menu Système / Importer Exporter / Profils
- Par défaut un profil est créer « Export Customers ». Exécuter le afin de récupérer le CSV avec tous les noms des champs.
- Voici donc la liste des champs disponibles et à compléter lors de l’import des clients dans Magento : website email group_id prefix firstname middlename lastname suffix password_hash taxvat billing_prefix billing_firstname billing_middlename billing_lastname billing_suffix billing_street_full billing_city billing_region billing_country billing_postcode billing_telephone billing_company billing_fax shipping_prefix shipping_firstname shipping_middlename shipping_lastname shipping_suffix shipping_street_full shipping_city shipping_region shipping_country shipping_postcode shipping_telephone shipping_company shipping_fax created_in is_subscribed group
2ème étape : Créer la requête SQL qui permettra d’exporter un fichier CSV des clients prêt à l’import dans Magento
Dans notre cas tous les champs ne sont pas forcémment complétés dans l’ancien système. Notre requête ne reprendra donc pas l’ensemble des champs.
Voici la requête une fois terminée :
SELECT
"base" AS website,
old_table_user.user_email AS email,
"Client" AS group_id,
old_table_user.first_name AS firstname,
old_table_user.last_name AS lastname,
"motdepasseachanger" AS password_hash,
old_table_user.first_name AS billing_firstname,
old_table_user.last_name AS billing_lastname,
old_table_user.address_1 AS billing_street_full,
old_table_user.city AS billing_city,
"FR" AS billing_country,
old_table_user.zip AS billing_postcode,
CONCAT_WS(' ',old_table_user.phone_1,old_table_user.phone_2) AS billing_telephone,
old_table_user.company AS billing_company,
old_table_user.fax AS billing_fax,
old_table_user.first_name AS shipping_firstname,
old_table_user.last_name AS shipping_lastname,
old_table_user.address_1 AS shipping_street_full,
old_table_user.city AS shipping_city,
"FR" AS shipping_country,
old_table_user.zip AS shipping_postcode,
CONCAT_WS(' ',old_table_user.phone_1,old_table_user.phone_2) AS shipping_telephone,
old_table_user.company AS shipping_company,4ème étape : Import le fichier CSV dans Magento
old_table_user.fax AS shipping_fax,
"default" AS "created_in",
"Client" AS "group",
old_table_user.newsletter AS "is_subscribed"
FROM old_table_user
L’astuce est donc de récupérer le champ désiré et de renommer la colonne avec l’instruction AS de Mysql. Exemple :
old_table_user.user_email AS email,
Si vous n’avez pas l’information dans votre base existante vous pouvez la créer, exemple avec le champ requis website :
"base" AS website,
Mysql dispose de fonctions très intéressantes, notamment CONCAT_WS qui permet de concaténer des valeurs. Exemple ci-dessous avec la concaténation de 2 valeurs dans le futur champ billing_telephone (Sous Magento un seul champ téléphone est prévu d’où cette concaténation).
CONCAT_WS(' ',old_table_user.phone_1,old_table_user.phone_2) AS billing_telephone,
3ème étape : Exporter le fichier des clients
Exécutez votre requête puis exportez le résultat en CSV à l’aide de PhpMyAdmin avec les paramètres suivants:
Champs terminés par : ,
Champs entourés par : »
Caractère spécial : \
Lignes terminées par : AUTO
N’oubliez pas de cocher la case « Afficher les noms de champ en première ligne ».
Voilà votre CSV est prêt !
4ème étape : Importer le fichier CSV des clients dans Magento
- Allez sur le BackOffice de votre Magento
- Menu Système / Importer Exporter / Profils
- Utiliser le profil créer par défaut « Import Customers ».
- Vérifier que les paramètres correspondent bien aux paramètres précisés au moment de l’export de PhpMyadmin
- Importer le fichier via l’assistant.
Vos clients sont importés !

Commentaires récents