Classer par marque et référence les produits dans le BL et la facture Prestasop

Salut tout le monde, un petit snippet pour prestashop qui permet de mettre dans un ordre voulu les produits dans un bon de livraison et sur la facture.

Pourquoi faire ça ?

C’est une demande de mon boss, car nous venons de réorganiser les allées des stocks par Fabriquant (marque) puis par référence. Pour que ce soit plus pratique dans la constitution de la commande nous avons ordonné les produits du bon de livraison comme notre organisation physique.

Il suffit de créer un fichier OrderInvoice.php dans le répertoire override/classes/order et d’y ajouter ce petit bout de code.

L’intérêt de surcharger la méthode getProductsDetail() permet de ne pas embêter les mises à jour du core Prestashop.

 

Problème prestashop – object Address->address1 is not valid

Dans le cadre de mon nouveau travail, je gère plusieurs Prestashop.
Nous avons procédé à une bascule de serveur et j’ai tout une série de problème qui arrivent.

Dans le cas présent un client ne pouvais plus valider son panier il tombait à chaque fois sur la traditionnelle page Oups, la page que vous recherchez n’existe pas.
En passant la boutique en mode debug je me suis rendu vite compte du problème.

object Address->address1 is not valid

En gros il y a une merde dans la base !!
Soit sur la partie adresse, soit sur la partie panier.

Pour avoir un peu plus d’informations, direction la base de données en utilisant cette requête:

Le # est a remplacer par vos informations, id_customer est l’identifiant unique du client.

En identifiant les paniers ayant une valeur null pour le champ id_address vous avez quasi résolu le problème.
il vous suffit soit:

  • de supprimer le panier depuis l’administration (pas testé mais ça doit fonctionner),
  • supprimer le panier en SQL,

Et faire un update du panier avec une adresse existante ou nouvelle.

Pour ma part l’adresse contenait des caractères spéciaux, j’ai donc supprimé les adresses en SQL, demandé au client de renseigner à nouveaux ses coordonnées et fait un update massif des champs id_address_delevery et id_address_invoice de la table cart avec les nouveaux id_address.

ATTENTION, si vous ne savez pas ce que vous faite, ne faite pas c’est le genre de requête qui peut faire mal !

Installer Nginx avec PHP sur une Debian Wheezy ou Raspbian sur Raspberry-Pi

Voila ça faisait un moment que je voulais faire une installation de Nginx sur mes serveurs et Raspberry-Pi. L’efficacité de ce serveur web dernière génération n’est plus à démontrer surtout sur de petites machines telles que le Raspberry-Pi.

Toutes les commandes qui devront être précédé de sudo pour un Raspberry-Pi sous Raspbian.

Installation

Configuration

Continuer la lecture de « Installer Nginx avec PHP sur une Debian Wheezy ou Raspbian sur Raspberry-Pi »

myAPIFox l’API pour la centrale d’alarme My Fox passe en 1.3

Plus il y a d’utilisateurs plus il y a de bugs 🙂 donc voici une mise à jour de l’API.

Au programme:

  • Mise en place d’un système de cache suite à un problème remonté par Cédric LOCQUEUNEU
  • Ajout d’un retour en XML (pour Alban)
  • Ajout d’une méthode qui liste les scénarios
  • Ajout d’une méthode qui joue les scénarios
  • Refonte de la méthode getMessage celle-ci renvoie txt, json et XML
  • Ajout d’un paramètre debug dans le fichier myFox.php
  • Mise en public de la variable etat
  • Ajout d’une nouvelle fonction qui active ou désactive suivant l’état

Bonne utilisation.

Installation d’Apache PHP et Mysql sous Windows

Un grand titre pour un simple exécutable, je ne vais pas faire une installation complète du serveur Apache, venir y rajouter PHP alors que des packages existent !

Pour avoir simplement cette environnement sous Windows je vous recommande WampServeur. Tout simplement parce qu’avec ce seul exécutable vous vous retrouverez avec ce que l’on recherche. Apache PHP et MySQL sous Windows !

J’avais fait un screencast en 2008 qui est toujours d’actualité. Les pages ont un peu changées mais le principe est toujours le même.

Continuer la lecture de « Installation d’Apache PHP et Mysql sous Windows »

Et si nous faisions un portail domotique ?

C’est en lisant la série d’article de @mrQuellegoule et @MissQuellegoule sur la mise en place d’un portail domotique sur un SYNO avec l’aide du CMS WordPress et la box domotique Zibase de ZODIANET que je me lance dans une réflexion à mon tour.

Quand je parle de portail domotique j’entends par portail un site internet ou intranet qui offre une porte d’entrée unique sur un large panel de ressources et de services. Continuer la lecture de « Et si nous faisions un portail domotique ? »

PHP – Tester l’existence d’un fichier distant

Voici 3 fonctions qui finalement permettent de tester l’existence d’un fichier distant.

Nécessite CURL
[fusion_builder_container hundred_percent= »yes » overflow= »visible »][fusion_builder_row][fusion_builder_column type= »1_1″ background_position= »left top » background_color= » » border_size= » » border_color= » » border_style= »solid » spacing= »yes » background_image= » » background_repeat= »no-repeat » padding= » » margin_top= »0px » margin_bottom= »0px » class= » » id= » » animation_type= » » animation_speed= »0.3″ animation_direction= »left » hide_on_mobile= »no » center_content= »no » min_height= »none »][php]
function getInfos($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_exec($ch);
return curl_getinfo($ch);
}

$infos = getInfos(‘https://hotfirenet.com/blog’);
if($infos[‘http_code’] == 200){
// OK
}else{
// pas ok
}
[/php]

Apparemment consommatrice car elle télécharge une partie du fichier.
[/fusion_builder_column][fusion_builder_column type= »1_1″ background_position= »left top » background_color= » » border_size= » » border_color= » » border_style= »solid » spacing= »yes » background_image= » » background_repeat= »no-repeat » padding= » » margin_top= »0px » margin_bottom= »0px » class= » » id= » » animation_type= » » animation_speed= »0.3″ animation_direction= »left » hide_on_mobile= »no » center_content= »no » min_height= »none »][php]
function remote_file_exists ( $url ) {
ini_set(‘allow_url_fopen’, ‘1’);
if (@fclose(@fopen($url, ‘r’))) { return true; }
else { return false; }
}
[/php]

UNIQUEMENT possible depuis PHP5
[/fusion_builder_column][fusion_builder_column type= »1_1″ background_position= »left top » background_color= » » border_size= » » border_color= » » border_style= »solid » spacing= »yes » background_image= » » background_repeat= »no-repeat » padding= » » margin_top= »0px » margin_bottom= »0px » class= » » id= » » animation_type= » » animation_speed= »0.3″ animation_direction= »left » hide_on_mobile= »no » center_content= »no » min_height= »none »][php]
function sys_file_exists($f = NULL)
{
$h = array();
$ret = FALSE;
if(!is_null($f)):
if(preg_match(‘/^http|https|ftp/’,$f)): //test protocol EXTERN
$h = @get_headers($f);
if(array_key_exists(0,$h)) :
$ret = (bool) preg_match(‘/200|301/’,$h[0]); /* HTTP/1.1 301 DAP (directory) */
endif;
else: //else FS
$ret = (file_exists($f) && is_readable($f));
endif;
endif;

return (($ret === TRUE) ? TRUE : FALSE);
}
[/php][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]

WordPress – Shortcode trouve mon age

Il parait que l’on change d’âge tous les ans ?
Parce que je n’ai pas envie de faire update tous les ans de ma page de présentation et que l’informatique ça sert à être faignant 🙂 voici un shortcode pour WordPress qui te permettra d’afficher l’âge par rapport à la date de naissance passée en paramètre.

Le code:
[fusion_builder_container hundred_percent= »yes » overflow= »visible »][fusion_builder_row][fusion_builder_column type= »1_1″ background_position= »left top » background_color= » » border_size= » » border_color= » » border_style= »solid » spacing= »yes » background_image= » » background_repeat= »no-repeat » padding= » » margin_top= »0px » margin_bottom= »0px » class= » » id= » » animation_type= » » animation_speed= »0.3″ animation_direction= »left » hide_on_mobile= »no » center_content= »no » min_height= »none »][php]
//Permet de retrouver l’age par rapport a la date de naissance
//la fonction accepte le format francais et anglais
//utlisation [trouveMonAge date="1984-06-12"] ou [trouveMonAge date="12-06-1984"]
function trouveMonAgeFCT($atts){
extract(shortcode_atts(array(‘date’ =>  »), $atts));
$age = date(‘Y’) – date(‘Y’, strtotime($date));
if (date(‘md’) < date(‘md’, strtotime($date))) {
return $age – 1;
}
return $age;
}
add_shortcode(‘trouveMonAge’, ‘trouveMonAgeFCT’);
[/php]

Utilisation:
[/fusion_builder_column][fusion_builder_column type= »1_1″ background_position= »left top » background_color= » » border_size= » » border_color= » » border_style= »solid » spacing= »yes » background_image= » » background_repeat= »no-repeat » padding= » » margin_top= »0px » margin_bottom= »0px » class= » » id= » » animation_type= » » animation_speed= »0.3″ animation_direction= »left » hide_on_mobile= »no » center_content= »no » min_height= »none »]

Utilisation du shortcode trouveMonAge
[/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]

NPDS – Méta-mot trouve mon age

Il parait que l’on change d’âge tous les ans ?
Parce que je n’ai pas envie de faire update tous les ans de ma page de présentation et que l’informatique ça sert à être faignant 🙂 voici un méta-mot pour NPDS qui te permettra d’afficher l’âge par rapport à la date de naissance passée en paramètre.

Le code :
[fusion_builder_container hundred_percent= »yes » overflow= »visible »][fusion_builder_row][fusion_builder_column type= »1_1″ background_position= »left top » background_color= » » border_size= » » border_color= » » border_style= »solid » spacing= »yes » background_image= » » background_repeat= »no-repeat » padding= » » margin_top= »0px » margin_bottom= »0px » class= » » id= » » animation_type= » » animation_speed= »0.3″ animation_direction= »left » hide_on_mobile= »no » center_content= »no » min_height= »none »][php]
function MM_trouveMonAge($date){
$date = arg_filter($date);
$age = date(‘Y’) – date(‘Y’, strtotime($date));
if (date(‘md’) < date(‘md’, strtotime($date))) {
return $age – 1;
}
return $age;
}
[/php]

Utilisation :
[/fusion_builder_column][fusion_builder_column type= »1_1″ background_position= »left top » background_color= » » border_size= » » border_color= » » border_style= »solid » spacing= »yes » background_image= » » background_repeat= »no-repeat » padding= » » margin_top= »0px » margin_bottom= »0px » class= » » id= » » animation_type= » » animation_speed= »0.3″ animation_direction= »left » hide_on_mobile= »no » center_content= »no » min_height= »none »]

Utilisation du Méta mot trouveMonAge

[/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]