Step by step how-to move Odoo 8 to another server

On the old server Odoo is setup with e-commerce website. On the new server, avoid extra dependencies if Odoo doesn’t need them (web server, php, …).

First steps

  1. keep a TODO-list
  2. create a subdomain, to test your paiement module on the new server
  3. install your ssh-key
  4. install some command-line tools : midnight-commander, nano editor, mlocate, wget, screen, unzip
  5. might want to install a graphical web-server admin. I like Webmin, because it’s well maintained, depends only of Perl and use its own web server.
  6. install a networked resource monitoring tool with graphs output, like Munin (or webminstats if you use Webmin)
  7. install Postgresql, create necessary users and configure it. Refer to Odoo install documentation.
  8. install Odoo, setup Odoo with workers and debug log
  9. stop firewall to access Webmin and Odoo, you will configure the firewall later (TODO list)

Setup Odoo

  1. create a dummy database with all necessary modules, add all modules you had on the old server. Test it (might want to include demo datas to test it extensively — check ‘evaluate Odoo’ when you are creating the database).
  2. test your credit card paiement module
  3. install auto backup odoo module on the new server and test it : do a backup/restore operation. First install python-pip and do
    sudo pip install pysftp
  4. backup your old Odoo database
  5. create a new, empty, database on the new server
  6. restore your old database on the new database. test it extensively
  7. install letsencrypt Odoo module, first install python-pip, then do
    sudo pip install acme-tiny
    sudo pip install IPy
  8. install nginx and set it up
  9. install fail2ban
  10. open necessary ports on the firewall and restart it

 

Champs pour cataloguer ses livres

Voilà on peut dorénavant chanter un petit air et votre ordinateur catalogue un livre tout seul ! Par exemple :

♫ ♪ pom pom pom pom ! i, s, b, n ! 2, 950, 62, 10 ! 5, 8 ! comme neuf !  ♫ ♬ ♪

Oui oui oui.
Allez je complète :

Champs pour cataloguer ses livres dans une base de données

Des « champs » ? rien de compliqué, dans un tableau ce serait le nom des colonnes : auteur, titre, etc.
Comme ce n’est pas si facile de bien les choisir, voici ma liste (version 1.8), constituée après pas mal d’essais et de retouches. Je me suis inspiré de normes bibliographiques (BibTeX, DublinCore, Marc/Unimarc, ONIX, EDIFACT) et de logiciels pour vendeurs de livres (Prager, Booktrakker, HomeBase).
Et comme tous ces champs devaient être auto-magiquement remplis à partir de quelques renseignements de base (code ISBN ou titre ou mots-clefs), la liste est conditionnée aux information disponibles via les sources de données sur internet.
Un des problèmes à résoudre, c’est l’efficacité : entrer suffisamment d’informations pour lier n’importe quel livre à la bonne description sur les places de marché, sans avoir trop de cases à remplir « à la mano ». C’est tout bête : un truc trop complexe sera mal rempli ! J’ai donc mixés certains champs, par exemple le « titre original » va aussi bien dans « autre titre » et l’ISBN d’origine peut aller à la suite du titre original.

Donc, voici la liste, version 1.8

Elle est typographiquement structurée :

nom_interne_du_champ
Nom affiché : Description du champ (type de champ)

Généralités

On y décrit le livre en général, pas la version imprimée qu’on a en main.
author
Auteur (texte, plusieurs valeurs)
title
Titre (texte)
subtitle
Sous-titre (texte)
other_title
Autre titre : Sert aussi pour le titre dans la langue d’origine (texte)
first_publication_date
Première publication : Année de première publication (numérique)
original_language
Langue d’origine (texte, plusieurs valeurs)
personal_note
Avis : Brève appréciation de lecture (texte)
personal_rating
Note : De une à cinq étoiles (liste)
created_by
Noté par : Personne qui a lu le livre (liste)
movie
Film : En a t-on tiré un film ? (case à cocher)
feminism
Féminin : Auteur femme ou livre féministe ou sur les femmes (case à cocher)
[autre]
[Autre : Autre case à cocher utile (case à cocher)]
subject
Sujet : Sujet du livre, liste d’Amazon pour les vendeurs (liste)
genre
Genre : Importe l’arbre de classement d’Amazon (texte, plusieurs valeurs)
keyword
Mots-clés (texte, plusieurs valeurs)
dewey
Dewey : Classification Dewey, cote (texte)
lcc
LCC : Classification de la Librairie du Congrès, cote (texte)

Publication

Cette fois c’est la version imprimée!
isbn
ISBN# : Numéro international normalisé du livre (texte, contrôlé)
lccn
LCCN# : Numéro de contrôle de la Librairie du Congrès (texte, contrôlé)
asin
ASIN# : Code produit Amazon (texte)
binding
Reliure : Type de reliure, liste d’Amazon (liste)
publisher
Maison d’édition : Sans le « Éditions … » (texte)
address
Ville : Lieu d’édition (texte)
pub_year
Année de publication (numérique)
cr_year
Année copyright (numérique)
series
Collection / série (texte)
series_num
N° dans la série (texte)
translator
Traducteur : Premier traducteur
illustrator
Illustrateur : Seulement les récurrents, les moins prolifiques vont dans Autres noms (texte)
pages
Pages : Nombre total de pages, pas seulement numérotées (numérique)
language
Langue : Langue(s) de publication séparées par point-virgule, en anglais (texte, plusieurs valeurs)
edition
Édition : Première, deuxième édition, … (liste contenant 1ère Édition;2ème Édition;3ème Édition;4ème Édition;5ème Édition;Édition Club de livre;Édition spéciale;Édition limitée;Édition illustrée)
tirage
Tirage : Numéro de tirage (liste contenant 1er tirage;2ème tirage;3ème tirage;4ème tirage;5ème tirage et plus;Tirage inconnu)
volume
Tome / volume : Tome ou volume (numérique)
paper_format
Format bibliophile : Format de pliage du papier pour bibliophilie (liste contenant in-4°;in-8°;in-12°;in-16°;in-32°;in-48°;in-64°;Atlas Folio;Double Éléphant;Éléphant folio;in folio)
cover_rating
Impact de la couverture : Évaluer l’élégance et l’impact visuel de la couverture, pas l’état!. Ce champ sert à préparer des vitrines (liste de 1 à 5 étoiles)
other_names
Autres noms : Les autres noms possibles (tableau contenant Traducteur;Illustrateur;Auteur;Photographe;Préface;Introduction;Postface;Responsable d’édition (editor en anglais);Maquette;Autre)

Prix de vente

Ce sont des champs qui servent à déterminer le prix de vente. Ils sont tous automatiquement remplis (si, si même les frais de port!) sauf l’état, la note d’état et le prix de vente, bien sûr. Exemple avec Amazon.
amazon
Lien Amazon (url)
amz_sales_rank
Rang de vente sur Amazon (numérique)
amz_total_offers
Qté Amazon : Quantité vendue par Amazon (numérique)
amz_total_new
Qté neuf : Total de livres neufs vendus sur Amazon (numérique)
amz_lowest_new_price
Vendu neuf : Prix neuf le plus bas sur Amazon, port déduit (numérique)
amz_total_used
Qté occasion : Total de livres d’occasion vendus sur Amazon (numérique)
amz_lowest_used_price
Vendu occasion : Prix occasion le plus bas sur Amazon, port déduit (numérique)
amz_total_refurbished
Qté rénové : Total de livres « refurbished » vendus par Amazon (numérique)
amz_total_collectible
Qté collection : Total de livres de collection vendus sur Amazon
amz_has_reviews
Noté : Commenté par des lecteurs ? (case à cocher)
amz_rating
Note lecteurs : Note moyenne sur Amazon (liste de 1 à 5 étoiles)
amz_total_comments
Commentaires : Nombre de commentaires sur Amazon (numérique)
length
Longueur : Longueur en mm (numérique)
width
Largeur : Largeur en mm (numérique)
height
Hauteur : Hauteur en millimètres (numérique)
weight
Poids : Le poids en gramme (numérique)
dust_jacket_condition
État jaquette : Vide si livre normalement sans jaquette (liste contenant Neuf;Comme neuf;Très bon;Assez bon;Bon;Satisfaisant;Moyen;Mauvais;Pas de jaquette;Jaquette)
condition
État : État du livre (liste contenant New;UsedLikeNew;UsedVeryGood;UsedGood;UsedAcceptable;CollectibleLikeNew;CollectibleVeryGood;CollectibleGood;CollectibleAcceptable;Refurbished;Club)
condition_note
Note d’état : Très court, ce qui apparait pour les acheteurs sur Amazon (texte)
publisher_price
Prix éditeur : Prix imprimé sur la couverture (numérique)
pur_price
Prix d’achat (numérique)
pur_date
Date d’achat : Générée à partir de la date d’entrée du livre en base de données, sert à revoir les prix quand c’est en vente depuis trop longtemps (date)
shipping_price
Prix du port : Frais de port en France (numérique)
price
Prix de vente (numérique)
about_shipping
Envoi : Sur l’envoi, ira automatiquement dans note d’état (texte pré-rempli, adaptable)
about_seller
Vendeur : À propos du vendeur, ira automatiquement dans note d’état (texte pré-rempli, adaptable)

Inventaire

comments
Présentation : Présentation, avis, texte de la 4ème de couverture, récupéré en ligne (bloc de texte)
abstract
Résumé : Synopsis, résumé ou 4e de couverture, récupéré en ligne (bloc de texte)
cover
Couverture : Couverture, récupérée en ligne (image)
back_cover
Dos : Quatrième de couverture, récupérée en ligne (image)
nota_bene
Nota : Notes diverses, non visibles (texte)
warehouse_place
Carton : Emplacement de stockage (texte)
qty
Qté : Nombre d’exemplaires dans le même état (numérique, pré-rempli à 1)
sku
SKU : Identifiant unique (texte)
cdate
Créé le (date, automatique)
mdate
Modifié le (date, automatique)
Post Scriptum aux concepteurs de base de données :

Pour être compréhensible à tous, j’ai sauté la partie tables et relations et le type de champ est simplifié.

 

Le prix de vente c’est pas ce que vous croyez !

Vendre sur plusieurs places de marché, c’est facile et ça rapporte! Mais pas pareil partout : chaque place de marché a son propre calcul de commission, son forfait de port, et naturellement son audience. On oublie l’audience, on va regarder ce que  la place de marché nous reverse et ce qui nous reste après avoir expédié le produit.

Et puis non! je ne vais pas rentrer dans les détails, tout ça c’est documenté sur chaque place de marché. Regardez la copie d’écran :

frais vente par marketplaces

C’est une feuille de calcul, pour l’instant assez sommaire, qui à partir d’un prix de base m’indique ce qui me reste en bénéfice une fois l’envoi effectué (les deux autres onglets servent au calcul et à la mise à jour des frais).

La partie en bleu se comprend toute seule. C’est instructif, non ?

Deux précisions : les frais d’envoi correspondent à un Colissimo de 1,8 kg et PriceMinister fournit un bordereau SoColissimo payé par l’acheteur, c’est pourquoi les frais d’envoi sont à zéro.

Et le blanc alors ?

Vous ne vous êtes jamais dit : comment gagner partout la même somme ? la ligne « Prix de vente final » indique le prix à pratiquer pour avoir le même bénéfice partout. C’est simplifié, ça ne recalcule pas tous  les frais, je soustrais simplement au prix de base la différence avec le bénéfice sur Amazon.

La dernière ligne calcule le « Coût pour l’acheteur », en additionnant le « Prix de vente final » avec les frais de port facturés par la place de marché. C’est  intéressant parce qu’on voit que le « Coût pour l’acheteur » est le même partout, à une bistouille près, bien que le prix de vente varie — excepté sur leboncoin.fr qui n’est pas tout à fait une place de marché.

Mais ça montre aussi … qu’Amazon semble moins chère : puisqu’on (moi, acheteur) y paye un port forfaitaire à 2,99€ pour un achat de 70€, alors que PriceMinister nous compte 7,65€ pour un achat de 64€. C’est des méchants ! Eh non, puisque le total est à peu près le même. Mais psychologiquement, Amazon c’est bon pour le porte-monnaie!

Dans le détail

Voici les deux autres feuilles de calcul, simplifiées, et puis la liste des pages d’aide au calcul des frais chez les uns les autres.

calcul des frais par marketplaces

données par marketplaces

Les liens utiles :

Et pour finir, rien à télécharger! pas encore. Je complèterai tout ça pour en faire un service disponible à tous sur le web. Insistez un peu si vous la voulez quand même.

Améliorations de Tellico

Pour collecter les informations sur mes livres à vendre j’utilise Tellico, un programme de gestion de collection. J’en ai déjà parlé, ce genre de programme, et particulièrement Tellico, est capable d’aller moissonner toutes les méta-données sur un objet catalogué.

On peut facilement bidouiller Tellico pour l’adapter ou améliorer la collecte d’informations. C’est ce que j’ai fait!

Maintenant je tape un code ISBN et le programme récupère toute l’info disponible, utile et inutile :

  • auteur, titre(s), éditeur, etc. ;
  • description, résumé ;
  • photos ;
  • cataloguage (Dewey, LCC, Amazon) ;
  • score de vente et popularité surAmazon ;
  • nombre de vendeurs dans chaque état (neuf, occasion, collection, …) et prix pratiqués ;
  • dimensions et poids ;
  • et enfin, il calcule les frais de port…

Reste à rentrer l’état, le prix d’achat et le prix de vente… Ces petites cases se trouvant sous les frais d’envoi et les prix des autres vendeurs, ça va très très vite!

Voyez à quoi ça ressemble :

capture d'écran de Tellico
Tellico avec les améliorations de Xavier, pour établir le prix de vente d’un livre.

Vous pouvez récupérer les fichiers depuis Tellico, dans la fenêtre de configuration.

Kézaco l’ISBN ?

L’International Standard Book Number sert à identifier un livre. L’ISBN a été introduit en 1972, mais les éditeurs l’ont adopté progressivement. C’est alors un code à 10 chiffres. Depuis 2007 c’est un code à 13 chiffres et il se confond avec le code-barre.

L’ISBN est très utile pour cataloguer un livre, parce qu’on peut tout de suite récupérer les informations descriptives sur des serveurs spécialisés.

Pour simplifier disons que les livres parus avant 1976 n’en ont pas. Lorsque ces livres ont été réimprimés, les éditeurs leur ont attribué un ISBN. De même les code-barres sont apparus progressivement dans les années 80. Toujours en simplifiant, les codes barres avant 2007 sont des ISBN avec des chiffres en plus.
Vous avez compris ? ça veut dire qu’avec une webcam, l’appareil photo de votre portable ou un lecteur de code barre on peut cataloguer à toute vitesse…
L’ISBN est géré par un organisme qui attribue des tranches aux éditeurs. Chaque langue et chaque éditeur sont identifiés par une partie du code ISBN. Le reste sert à l’éditeur pour attribuer un numéro d’ordre au livre édité.
Un ISBN à 10 chiffres se décompose par exemple en 2 (pour la langue française) – 07 (code des éditions Gallimard) – 123456 (numéro de livre choisi par Gallimard) – 1 (« somme de contrôle » : un nombre calculé à partir des précédents, comme ça on sait que le code est juste — d’ailleurs j’ai calculé cette somme, me suis-je trompé ?).
Regardez un ISBN, il est toujours saucissonné : affiché en groupes séparés par des tirets. Beh oui! tous les éditeurs n’ont pas des codes à deux chiffres. Moins vous publiez de livres, plus votre code est long, ce qui vous laisse peu de place pour les numéros de livres, car l’ISBN fait toujours 10 chiffres (ou 13).
Par exemple : 2 – 9506210 (Collection du Club des Poètes) – 5 (cinquième livre publié) – 8.
Le livre ? Et bien théoriquement on peut l’identifier sur l’ISBN database. Mais il n’y est pas. ISBNdb est un projet indépendant, aucunement lié aux éditeurs, donc y trouve… ce qu’on y met, un peu comme Wikipedia (le lien pointe sur la page ISBN).
Alors comment fait-on ? on se sert des services web! et c’est plus simple que vous ne croyez, avec les outils de catalogage dont j’ai déjà  parlé.
Ah oui, le livre au fait, je vous le conseille, il est à mon chevet depuis des années et je ne me déplace jamais sans lui, c’est Fragment et Relief de Jean-Pierre Rosnay. On l’a déjà réimprimé plusieurs fois mais en ce moment il est épuisé. Réclamez-le et on en fera une réimpression — avec le même ISBN.
couverture de Fragment et Relief (1994) recueil de poèmes de Jean-Pierre Rosnay
4ème de couverture de Fragment et Relief (1994) recueil de poèmes de Jean-Pierre Rosnay

 

Au fait, les éditeurs s’emmêlent parfois les pinceaux avec les ISBN, et ils en ont attribués en double, en triple, … à des livres différents. On a pas toujours eu des bases de données pour gérer tout ça.

Outils libres pour les vendeurs de livre

Voici quelques outils pratiques et gratuits pour les vendeurs de livre. Ils permettent de rentrer votre annonce une fois et la faire paraître automatiquement sur plusieurs plateformes (Amazon, eBay, etc.). « Ça » gère aussi la vente et la mise à jour automatique du stock et de la disponibilité sur les plateformes. Les gros vendeurs ne sont pas concernés.

Pour trouver le prix d’un livre

  • Justbooks et Chasse aux livres avec leurs applications Android et iPhone et leur extension Firefox
  • il y a pléthore d’extensions Firefox pour récupérer l’historique des prix sur Amazon (cherchez Amazon dans les extensions) 
  • des sites web pour suivre l’historique des prix, par exemple Keepa

Gérer les ventes

  • Homebase de Abebooks (seulement Windows) dont le flux SML est compatible Abebooks, Amazon, eBay, PriceMinister, …
  • Jaolt pour des ventes aux enchères sur eBay et d’autres, c’est un logiciel en Java, compatible Windows, Mac, Linux, Android, etc.
  • Thelia version 1, boutique en ligne simple avec des extension pour Facebook, eBay, …
  • Magento, boutique en ligne complexe avec l’extension M2EPro pour Amazon, eBay, Rakuten us, uk, de (et bientot Rakuten France, c’est à dire PriceMinister) et l’extension FeedManager pour Facebook et les quelques comparateurs de prix gratuits.
  • Prager, Software un ensemble d’outils ultra-complet pour les vendeurs de livre. Ça tourne seulement sous Windows.

Gérer son stock et la description des livres

Un logiciel de gestion de collections est capable à partir du code-barre de récupérer toutes les méta-données d’un produit (fabricant, année, pays d’origine, auteur, photographe, poids, dimensions, etc.). Il peut moissonner beaucoup d’informations dans différents services web. Certains doivent être activés dans les préférences (notamment Amazon pour lequel il faut créer un compte). Ensuite faites un export et un import des données dans votre outil de publication et le tour est joué.

Tous ceux-là sont compatibles Windows, Mac et Linux et permettent d’ajouter des champs de valeur. On peut y rentrer toutes sortes d’objets.
  • Tellico, que j’utilise. Peut grapiller beaucoup d’infos sur beaucoup de services. Très puissant. L’auteur est très actif.
  • GCStar Très puissant, beaucoup de services, Tellico sait utiliser ses services d’imports de données web.
  • Data-Crow. En java. Très puissant. L’auteur est très actif.
  • Calibre, qui tourne aussi sur vos tablettes et téléphones. Plutôt conçu pour gérer les livres electroniques, mais c’est adaptable. L’auteur est très actif.
  • Une liste d’autres programme : http://tellico-project.org/alternatives

    Purée de carottes à la menthe

     

    Recette piquée à Michel Guérard. Pour ma part je mets juste ce qu’il faut d’eau.

    Ingrédients

    • 300g de carottes
    • 50 g de beurre
    • 10 cl de crème liquide
    • 1 brin de menthe
    • 2 abricots secs

    Déroulement

     

    1. Laver la menthe, éplucher et laver les carottes.
    2. Emincer très finement les carottes,
    3. Les mettre en casserole, avec le beurre, du sel et de l’eau à peine à hauteur, vraiment à peine, saler, couvrir, cuire 20 minutes à feu moyen. Pousser le feu à la fin. Goûter, cuire encore 5 minutes à feu doux s’il le faut.
    4. Ajouter la menthe, infuser 3 à 4 minutes. Retirer la menthe, égoutter en partie, mettre la crême, mixer en émulsionnant et en aérant, remettre du jus au besoin.
    5. Ajouter les abricots en petits dés (facultatif).
    S’il vous reste du jus de cuisson, ne le jetez pas! Buvez-le ou versez-le dans la soupe.

     

    Clafouti d’aubergine

    J’en prépare de grands plats, en transformant un peu, la cuisson est lente, c’est à peine pris, les parfums diffusent, mmmm… Je ne sais plus si ça vient d’alain Ducasse ou d’Italie.

    Ingrédients

    • 1 aubergine
    • Ail
    • Thym
    • Huile d’olive
    • 2 Œufs
    • 5 cl Crème
    • 5 cl Lait
    • 40 g de farine
    • Sel, poivre, muscade
    • Fromage de chèvre

    Déroulement

    1. On coupe l’aubergine en dés et on sale pour la faire dégorger (dans une passoire) ; c’est moins amer.
    2. Pendant ce temps, on peut préparer une cocotte avec de l’huile, du thym et de l’ail entier (avec sa peau) claqué sur la table. On la laisse tiédir pour parfumer l’huile.
    3. Hop! on fait compoter doucement l’aubergine dans la cocotte, assaisonnée avec très peu de sel.
    4. Battre ensemble les œufs, la farine, la crème et le lait, assaisonner de sel, poivre moulu et muscade.
    5. Huilez une petite cocotte en terre (un tian) ou un plat à four quelconque.
    6. Une foisles assaisonnements vérifiés (on goûte, pardi!), versez les aubergines, puis le mélange à clafoutis.
    7. Mettre à four chaud.
    8. Coupez des rondelles de fromage de chèvre. Quand le clafoutis commence à prendre, les poser dessus.

    On peut couvrir le clafouti d’aluminium pour éviter qu’il ne se dessêche. Par pitié, évitez de le laisser trop cuire! 

    Pâté de foie de veau

    Facile. Parfait pour des tartinettes, en entrée ou en apéro! Servez sur du pain grillé, avec une petite feuille de sauge, comme en Italie.

    Ingrédients

    • 350 g de foie de veau émincé
    • 120 g de beurre
    • 10 cl de marsala
    • 100 g de jambon cru
    • 1 jaune d’oeuf
    • farine
    • sel, poivre

    Déroulement

    1. Émincer le foie. Le passer dans la farine et le sauter avec une noix de beurre, 7 minutes. Déglacer au marsala et laisser réduire presque à sec (à glace). Assaisonner sans excès, retirer du feu.
    2. Hacher le foie et le jambon, couper le beurre en dés.
    3. Mixer très fin le foie, le jambon, le beurre, le fond de cuisson et le jaune d’oeuf.
    4. Mouler et faire prendre au froid environ 5 heures.

    Pate brisée très très légère

    Si légère!… Cette  recette d’Alain Ducasse est à diffuser partout. Une pâte brisée normale contient entre 200g et 350g de beurre, c’est trop indigeste. Mieux vaut mettre de la crême ou du fromage dans la garniture, avec cette pâte ce sera toujours beaucoup moins gras et la tarte ou la quiche sera meilleure.

    Ingrédients

    • 400 g farine
    • 100 g fécule pomme de terre ou maïzena
    • 3 pincées de sel
    • 3 pincées de sucre
    • 2 œufs
    • 20 cl d’eau (ou vin blanc, infusion d’herbes, etc.)
    • 35 g de beurre

    Déroulement

    1. Sabler le beurre avec la farine, puis mélanger avec le sucre, le sel et la fécule.
    2. Ajouter l’oeuf puis l’eau peu à peu. Pétrir le moins possible.
    3. Fraiser si nécessaire (en général oui!).
    4. Enfin, il vaut mieux mettre la pâte au frigo 30 min au moins.