Dolibarr : email de relance des factures impayées

Comment créer un email de relance pour les facture en retard de paiement sous Dolibarr, logiciel de gestion libre pour les TPE, PME et associations.

Dolibarr est un logiciel de gestion open source réputé pour les TPE/PME et associations permettant la gestion de la facturation. Il est aisé grâce à une fonction intégrée facilement appelable via un bouton, d’envoyer une facture à un contact par email. Dans une ancienne version, un bouton équivalent permettait de relancer les factures en retard de paiement par email,  facture par facture. Ce bouton a maintenant disparu !

Nous allons voir comment, sans toucher au code (sauf pour l’ajout d’éléments complémentaires), intégrer simplement une fonction de relance de facture en retard de paiement par email.

Pour cela, nous allons utiliser les modèles d’email, utilisables pour les factures clients mais aussi pour les commandes, propales … Ainsi, il nous suffira de choisir le bon modèle dans la liste déroulante juste au dessus du mail, afin de sélectionner le texte adéquat.

Premièrement, des messages d’envoi d’emails sont prédéfinis. Ils sont disponibles dans le dossier des langues de dolibarr /htdocs/langs/fr_fr/other.lang . Nous retrouvons notre modèle d’envoi de facture par email mais aussi, avec surprise, le modèle de relance de facture par email.

Nous allons donc créer un nouveau modèle. Pour cela, il faut aller dans Accueil -> configuration -> dictionnaires -> modèles des courriels , puis renseigner les différents éléments : libellé (champs définissant le modèle dans liste déroulante, par exemple Relance_facture), type de modèle (« pour l’envoi de facture client » dans notre cas), privé (0, sinon juste vous pourrez utiliser ce modèle), la position dans la liste déroulante (1, c’est votre premier modèle), le sujet (par ex : Relance de la facture REF ), et enfin le content (par ex : Bonjour,\n\nNous voudrions vous avertir que le facture REF ne semble pas avoir été payée. Nous vous avons joins la dite facture comme rappel.\n\nCordialement\n\n__SIGNATURE__ ).

J’ai utilisé 2 variables REF qui sera remplacé par le numéro de facture, et SIGNATURE qui sera remplacé par … votre signature (bien penser à compléter votre signature dans votre profil d’utilisateur.

Voici la liste des variables disponibles pour les factures (elles sont définies dans le fichier htdocs/compta/facture.php ) :

$formmail->substit['__REF__'] = $object->ref;
$formmail->substit['__SIGNATURE__'] = $user->signature;
$formmail->substit['__REFCLIENT__'] = $object->ref_client;
$formmail->substit['__THIRDPARTY_NAME__'] = $object->thirdparty->name;
$formmail->substit['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:'');
$formmail->substit['__PROJECT_NAME__'] = (is_object($object->projet)?$object->projet->title:'');
$formmail->substit['__PERSONALIZED__'] = '';
$formmail->substit['__CONTACTCIVNAME__'] = '';

Voici l’exemple d’un modèle d’email plus complet :

__CONTACTCIVNAME__,\n\n
Veuillez trouver ci-joint votre facture __REF__ d'un montant de __FACTOTALTTC__ € TTC.\n\n
Nous vous rappelons que cette facture doit être réglée avant le __FACDATELIMREG__ .\n\n
Vous en souhaitant bonne réception, nous vous prions de croire,__CONTACTCIVNAME__, en l'assurance de nos salutations distinguées.\n\n
__SIGNATURE__

Il faut noter que les 2 dernières variables, PERSONALIZED et CONTACTCIVNAME, qui sont pourtant utilisées dans les modèles de base, retournent une chaîne vide ! à vous de les compléter (je vous laisse un peu de taf).

J’utilise aussi des variables complémentaires qu’il nous faut créer. Pour cela,  il suffit d’ajouter en ligne 3942 dans le fichier htdocs/compta/facture.php (version 3.9.3), les variables personnalisées complémentaires :

$formmail->substit['__FACDATE__'] = date('d/m/Y',$object->date);
$formmail->substit['__FACTOTATTC__'] = number_format($object->total_ttc,2,',','');
$formmail->substit['__FACDATELIMREG__'] = date('d/m/Y',$object->date_lim_reglement);

A noter, qu’à chaque mise à jour, vos modifications seront écrasées et seront donc à refaire !

Il est aussi possible d’utiliser des extensions permettant de réaliser cette opération, mais aussi d’intégrer à Dolibarr un process complet de recouvrement. Je vous conseille Relance factures impayées v2, le plus complet, ou Rappel impayé facture, devis, adhérent (3.9.x) , deux outils intéressants, à des prix différents mais n’offrant pas les mêmes fonctionnalités.

Source : wiki dolibarr

Installation ou mise à jour de Dolibarr directement en SSH

Dolibarr est un formidable logiciel de gestion pour les TPE / PME. Je vous conseille fortement de le découvrir soit via la démo en ligne soit en l’installant sur votre serveur. Un livre sur Dolibarr est disponible afin de vous guider dans l’utilisation du logiciel (l’image est la couverture de ce livre).

La documentation d’installation de Dolibarr indique l’usage de Source forge pour l’installation via les sources. Comme beaucoup, je préfère gérer en ssh mes serveurs, et l’usage de Source Forge n’est pas top. Mais une solution simple est d’utiliser le repo de github et d’aller dans l’onglet « release », vous aurez ainsi les dernières versions en tar.gz !

Django : mise à jour de yawd-admin compatible avec django 1.9

Dans cet article du 27 mai 2016, je vous annonçais la reprise en main Yawd-admin, car il n’a plus été mis à jour par les mainteneurs officiels depuis mai 2014. Yawd-admin est un package django permettant d’adapter l’interface d’administration en ajoutant des fonctionnalités indispensables.

Yawd-admin en quelques mots :

yawd-admin est un site Web d’administration de django. Il étend le site d’admin de django par défaut et propose ce qui suit :

  • une interface utilisateur « bootstrap » propre
  • du code pur HTML5/CSS3
  • une interface optimisée pour les smartphones et tablettes
  • des paramètres en base de données personnalisés (options) modifiables à partir de l’interface utilisateur. ( vous pouvez utiliser tous les champs du formulaire standard de django pour ces paramètres)
  • une intégration avec google analytique pour l’affichage des statistiques dans la page d’accueil de l’interface d’admin
  • la possibilité de lister vos applications au menu de navigation
  • un nouveau design des widgets de l’admin Django

La dernière version stable, la 0.8.0 vient d’être publiée et est compatible à 100% avec django 1.9, la dernière version de django à ce jour. Je remercie au passage henriquechehad pour son travail.

La prochaine étape concerne l’intégration de Bootstrap3 (ou 4 mais cela n’a pas l’air d’avancer très vite) en remplacement du Bootstrap 2 vieillissant.

Ensuite viendra la question de la reprise officielle de la maintenance de ce package ou la réalisation d’un fork puis publication sur pypi.

Si vous voulez donner un coup de main, le repo de yawd-admin est pour le moment sur github (je vais le migrer sur bitbucket quand j’aurais pris une décision sur fork ou pas).

PyFreeBilling disponible en italien

Grâce à l’excellent travail de Vito, PyFreeBilling est entièrement traduit en italien. Un grand merci à lui. Une traduction en français et espagnol est en cours.

Django : mise à jour de yawd-admin, template pour l’admin de Django

Depuis le 4 mai 2014, Yawd-admin n’a plus été mis à jour par les mainteneurs officiels. Plusieurs forks patchent quelques bugs et apportent une relative compatibilité avec la version 1.7 de django.
J’utilise par ailleurs ce package sur quelques projets, permettant ainsi de disposer d’une interface d’adminitration pour les sites django attrayante et performante. J’ai décidé de le mettre à jour.

Pour le moment, la dernière version stable est compatible à 100% avec django 1.6 et la version de dev avec django 1.7.
Je suis en train de finaliser la 1.8. Ensuite dès que yawd-admin sera compatible avec django 1.9, je commencerai à ajouter de nouvelles fonctionnalités.

Ensuite viendra la question de la reprise officielle de la maintenance de ce package ou la réalisation d’un fork puis publication sur pypi.

Si vous voulez donner un coup de main, le repo de yawd-admin est pour le moment sur github (je vais le migrer sur bitbucket quand j’aurais pris une décision sur fork ou pas).

Il existe un certain de nombre de paquets sympas fournissant un service à peu près équivalent pour django, comme django-grappelli, django-admin-bootstrapped, django-admin-bootstrap ou django-suit parmi ceux que j’ai utilisé et que j’apprécie.

Mais j’aime bien le look de yawd-admin même si tout n’est pas parfait, je vais pouvoir corriger quelques défaults 😉

Comparatif des versions des paquets dans ubuntu 14.04 et 16.04 et debian 8 et 9 que j’utilise le plus

Dans le cadre de mes différents projets, je suis amené à utiliser différents systèmes d’exploitation et différentes générations. Pour effectuer le bon choix, il est parfois utile de pouvoir comparer les versions des paquets disponibles dans les distributions (même si j’aime bien compiler certains paquets pour mieux coller à mes attentes, parfois il est nécessaire d’utiliser les paquets – pré-requis client par ex-).

J’ai choisi arbitrairement Ubuntu 14.04 LTS et la future 16.04 LTS ainsi que Debian stable (8) et testing. Il est bien sûr possible d’utiliser des ppa afin de disposer de versions plus à jour, mais cela est hors scope (et impose au passage une nécessaire confiance dans le contributeur et ajoûte une complexité de migration).
Pour préciser, ce comparatif a été réalisé dans l’objectif exclusif d’un usage en serveur et sans interface graphique !

Voici le tableau au 11/04/2016

Version des paquets selon la distribution Ubuntu / debian
PaquetsUbuntu 14.04 LTSUbuntu 16.04 LTSDebian 8Debian Testing
mariadb-server5.5.4710.0.23-210.0.2310.0.24
mysql-server5.5.475.7.115.5.475.6.28
postgresql9.3+1549.5+1739.4+1659.5+173
odbc-postgresql1:09.02.01001:09.03.03001:09.03.03001:09.03.0300
redis-server2:2.8.42:3.0.62:2.8.172:3.0.6
unixodbc2.2.142.3.12.3.12.3.1
apache22.4.72.4.182.4.102.4.18
nginx1.4.61.9.141.6.21.9.10
gunicorn17.519.4.519.019.4.5
ssh1:6.61:7.21:6.71:7.2
fail2ban0.8.110.9.30.8.130.9.3
iptables1.4.211.6.01.4.211.6.0
munin2.0.192.0.252.0.252.0.25
rsyslog7.4.48.16.08.4.28.16.0
freeswitchnananana
asterisk1:11.7.01:13.1.01:11.13.11:13.7.2
kamailio4.0.44.3.44.2.04.4.0
freeradius2.1.122.2.82.2.52.2.8
ansible1.5.42.0.0.21.7.22.0.1.0

Ma première conclusion de cette revue, est de ne plus lancer de nouveaux projets avec Ubuntu 14.04 LTS !

Je mettrais à jour de temps en temps cette liste (n’hésitez pas à proposer quelques paquets indispensables pour les projets télécoms)

 

Lancement du forum de support pour FreeSwitch

Afin de combler un manque, j’ai décidé de lancer un forum de support dédié à la communauté francophone de FreeSwitch. En effet, je reçois pas mal de demandes d’aide par email, et je trouve dommage de ne pas faire profiter la communauté des réponses.

FreeSwitch est un outil fantastique permettant de créer des applications VoIP et vidéo (mais pas seulement) complexes et performantes. J’ai créé plusieurs sections (d’autres sections peuvent être envisagées) : actualités, installation, configuration, programmation et matériels. L’objectif est de créer une communauté d’entre-aide.

Si vous souhaitez devenir modérateur, envoyez moi un message privé.

L’adresse : forum FreeSwitch France

Migration du blog vers php 7

Mon hébergeur proposant php 7, j’ai décidé d’effectuer la migration ce jour du blog des télécoms. Je n’ai rencontré aucun problème. Néanmoins, si vous rencontrez des difficultés, n’hésitez pas à m’en faire part.

Je trouve que le blog gagne en vitesse, ce qui est cool.

Ansible : installation automatisée de Freeswitch Ubuntu Debian – v1.3

Nouvelle mise à jour (v1.3) du role FreeSwitch pour Ansible, le célèbre moteur d’orchestration. Installation automatisée de FreeSwitch à partir des sources sur les systèmes linux basés sur Debian/Ubuntu.

Je viens de publier la mise à jour du role FreeSwitch pour Ansible, le célèbre moteur d’orchestration, la version 1.3. Ce role permet d’installer FreeSwitch de manière automatique à partir des sources sur les systèmes linux basés sur Debian et Ubuntu.

Un bug de dépendances touchant Debian Jessie a été corrigé, plus quelques modifications mineures.

L’utilisation est simple. Il faut dans un premier temps installer Ansible, puis ajouter mwolff44.freeswitch-mw à vos roles.

Installation d’Ansible recommandée (il faut une version supérieure à la 1.8, les paquets de Jessie ne fournissant que la 1.7 !) :

apt-get install -y python-apt python-pycurl libtiff5-dev git python-pip python-dev autoconf g++ libgmp-dev
pip install ansible makupsafe

Pour un usage rapide du script, voici la démarche.

git clone https://github.com/mwolff44/freeswitch-mw.git
echo localhost > inventory
ansible-playbook -i inventory freeswitch-mw/test.yml --connection=local

Bien entendu, vous pouvez utiliser vos fichiers de configuration et des options spécifiques (le détail est sur le github de freeswitch-mw – role d’installation automatisée de FreeSwitch). Voici un exemple de configuration ci-dessous (le fichier test.yml appelé ci-dessus) :

- hosts: all
  vars_files:
    - 'defaults/main.yml'
  tasks:
    - include: 'tasks/main.yml'
  handlers:
    - include: 'handlers/main.yml'

Le repository du role Ansible pour FreeSwitch est hébergé chez Github et est bien sûr validé en intégration continue grâce au service de travis-ci.org.

Si vous voyez des idées d’amélioration, n’hésitez pas.

 

Mise à jour du 11/02/2016 : mise à jour des paquets Debian / Ubuntu à installer pour Ansible. Installation avec pip de markupsafe

Nouvelle année 2016

Je vous souhaite une excellente année 2016, que la santé soit avec vous.

2016 sera encore une année mouvementée dans les télécoms.

Tout d’abord les grandes manoeuvres des opérateurs mobiles pour revenir à tout prix à 3 acteurs sur le marché français tout en se renforçant à l’international.

Le géant Numéricable qui doit finir de digérer SFR et faire face à la fuite des abonnés : réussir la difficile équation de pouvoir relancer les inévitables financements du réseau avec des revenus en baisse. La direction a trouvé une idée : augmenter les abonnements, mais … cela ne leur fait pas perdre des abonnés en plus ? la solution passe inévitablement par la fibre comme les autres opérateurs fixes ! mais voilà comment revenir à un pseudo monopole sans qu’une entité de régulation efficace ne puisse controler les coûts.

Est-ce que 2016 sera l’année où une régulation courageuse imposera la mutualisation des réseaux de fibres optiques en arguant avec force que c’est du domaine du service publique au même niveau que l’électricité. Et pourquoi pas un RTE des télécoms ?

2016 sera aussi l’année de la surveillance tout azimut. Vu les évènements récents, certaines décisions peuvent être compréhensibles, néanmoins il nous faut avoir sacrément confiance en nos dirrigeants. Malheureusement, condamnations et mises en examens à l’appui, cette confiance est fortement ébranlée. Que faire : sécuriser nos réseaux, nos serveurs, nos procédures, former les personnels afin de ne pas se trouver au milieu de cette guerre électronique.

Mais 2016 sera aussi une année remplie de nouveaux projets excitants qui remplira nos journées de stress mais aussi de bonheur (surtout quand ce foutu !$##!## se décide enfin à fonctionner 😀 ).

Je souhaite aussi une bonne année à quelques projets qui me tiennent à coeur : Dolibarr, Asterisk, FreeSwitch et Debian.

Profitez bien, la vie est courte.