Pourquoi Odoo ?
Jsais pas moi, vous m'en posez des questions lol
C'était soit Dolibarr soit Odoo. J'ai estimé que Dolibarr, bien que français opensource, ne répondait pas à tous mes critères. Je ne souhaite pas avoir d'intranet, je veux que TOUT passe par un seul et même outil qui fasse CRM/ERP/Intranet. De mes commerciaux aux techniciens en passant par mes RH (nan jdéconne fuck les RH, j'en aurai pas), un SEUL ET MEME OUTIL. Ce qui me permettra aussi d'embaucher des administrateurs Odoo au lieu de simple développeurs !
Donc cet épisode portera sur l'installation, la configuration et le développement d'un module custom pour pouvoir envoyer les informations du client à mon API.
Installation
On commence par créer un utilisateur odoo et on installe les prérequis :
naradmin@odoo:~$ sudo useradd -md /opt/odoo -Urs /bin/bash odoo
naradmin@odoo:~$ sudo apt install build-essential wget git python3-pip python3-dev python3-venv python3-wheel libfreetype6-dev libxml2-dev libzip-dev libsasl2-dev python3-setuptools libjpeg-dev zlib1g-dev libpq-dev libxslt1-dev libldap2-dev libtiff5-dev libopenjp2-7-dev wkhtmltopdf -y
Ensuite, on installe la database (j'opte toujours pour postgresql si je peux) :
naradmin@odoo:~$ sudo apt install postgresql -y
naradmin@odoo:~$ sudo su - postgres -c "createuser -s odoo"
On peut clone le projet github. Personnellement, je l'ai mis dans /opt/odoo :
naradmin@odoo:~/opt/odoo$ git clone https://www.github.com/odoo/odoo --depth 1 --branch 19.0 odoo
Odoo étant basé sur python, je crée un environnement virtuel pour l'installer :
naradmin@odoo:~/opt/odoo$ python3 -m venv odoo-venv
naradmin@odoo:~/opt/odoo$ source odoo-venv/bin/activate
naradmin@odoo:~/opt/odoo$ pip3 install wheel
naradmin@odoo:~/opt/odoo$ pip3 install -r odoo/requirements.txt
Je crée aussi un répertoire pour les custom-addons :
naradmin@odoo:~/opt/odoo$ mkdir odoo/custom-addons
Pour finir, je remplis le fichier de configuration /etc/odoo.conf avec mes informations :
naradmin@odoo:~$ sudo nano /etc/odoo.conf
[options]
admin_passwd = Azertyuiop14!
db_user = odoo
db_password = Fals
addons_path = /opt/odoo/odoo/addons,/opt/odoo/odoo/custom-addons
http_port = 8069
Pour finir, je crée un service nommé odoo.
naradmin@odoo:~$ sudo cat /etc/systemd/system/odoo.service
[Unit]
Description=odoo19
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=odoo
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-venv/bin/python3 /opt/odoo/odoo/odoo-bin -c /etc/odoo.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
naradmin@odoo:~$ sudo systemctl daemon-reload
naradmin@odoo:~$ sudo systemctl start odoo
Allez, on peut continuer l'installation via interface web maintenant :

Il y a un endroit très important dans Odoo, c'est l'onglet App. En effet, plusieurs applications sont gratuites, il suffit de les télécharger.

Personnellement, j'ai opté pour CRM / Inventaire / Ventes / Facturation / Projet. Cependant, je ne me suis pas amusé à les personnaliser donc j'utilise uniquement les fonctionnalité de bases.
Configuration
Inventaire
Notre module custom se basera sur les applications inventaire et ventes. Ainsi, j'ai besoin d'avoir un endroit qui me permet de lister tous mes CPE avec leur numéro de série. Pour cela, dans l'application inventaire, il faut aller dans Configuration -> Traçabilité et cocher Lots & Numéros de série :

Ensuite, on crée une catégorie mikrotik. J'utilise cela pour pouvoir indiquer le constructeur du CPE. Admettons, on propose des CPE Cisco, la configuration sera différente (via l'API) donc on pourra crée une autre catégorie Cisco.

On peut enfin crée les produits CPE (rb4011/rb5011/etc) dans Produits -> Produits :

Ensuite, on remplit les numéros de séries des CPE dans Lot/numéros de série (en haut a droite) :

Il semblerait qu'on soit aussi obligé de les mettre dans prévision de stock. Je suppose qu'on peut automatiser tout ça mais je préfère me consacrer sur la partie production :

Notre application inventaire semble être pas mal. Si on rajoute un CPE RB4011, la quantité s'incrémente. Et si on en utilise un, le module custom viendra supprimer (archiver) le CPE pour décrémenter le stock.
Vente
En réalité, il n'y pas grand chose à faire dans cette application. Il suffit juste de créer un devis :

Ici le devis S0003 a été crée et envoyé au client Naruto pour la ville de Paris.
Fiche technique
C'est là que Claude entre en jeu. Honnêtement, si ça avait été du go pourquoi pas mais en python .. Sah quelle flemme et je voulais un peu tester l'IA pour un petit projet donc autant faire une pierre deux coups !
Je souhaite avoir une page Fiche Technique qui me permet de renseigner les informations d'un client :
- Numéro de devis
- Nom du client
- Ville du client
- Modèle du CPE
- Numéro de série
- Constructeur
- Techno
- FAI
- Archi
- Option VoIP
- Observations
Après un petit prompt, claude me sort une application :

Dedans, on peut voir toutes les fiches techniques déjà créées. On peut aussi rechercher par la référence, le devis ou le client :

Si on clique sur nouveau et qu'on remplit les informations de notre client :

Quand on rentre le numéro de devis, le client et la ville se remplit automatiquement.
Quand on rentre le modèle, le numéro de série et le constructeur se remplit automatiquement.
Ensuite, il suffit de renseigner la techno, l'OI, l'archi et s'il y a de la VoIP.
Puis, on peut appuyer sur le bouton 'Envoyer API' :

Si j'ai un code de retour 200, je passe l'état de la fiche technique en 'configuration envoyée' sinon je reste en 'Pas encore poussée'.
Un petit check dans netbox :

EZ !!!!
Conclusion
Petit épisode aujourd'hui. De base, je ne voulais pas faire d'épisode sur ce sujet d'automatisation avec mon CRM car je trouvais que cela ne se prêtait pas au jeu. Finalement, je me suis motivé et le voici.
Je sais que je n'ai pas intégré à 100% Odoo (à peine 10%) et je ne le ferai pas dans mon lab. Cela me prendrait des heures, des jours. Énormément de travail pour au final ne rien pouvoir tester car je n'ai pas le matos.
Si jamais, je monte un opérateur, je partirai bien sûr avec Odoo et je recruterai un admin à 100% dessus. En attendant, j'arriverai bien à me démerder solo avec claude lol.
C'était l'avant dernier sujet de l'infra d'automatisation. On a donc réussi à créer des VM en moins de 10 secondes et produire un client en moins de 1 minute. C'est exactement ce que je voulais ! Plus aucune production chez nous 😄C'est chiant de répéter les mêmes actions en boucles, 3 mois à la prod et c'est fini, on a fait le tour donc autant que ce soit un robot. Bien sûr, certains projet complexes pourront être traités à la main mais le réseau est devenu tellement simple à automatiser que si les offres sont bien structurées, on peut tout penser en amont pour l'automatisation ! (encore faudrait-il que les gens y pensent ou veulent y penser).
Prochain et dernier épisode sur cette infra : la création de ticket automatique quand une liaison cliente ne fonctionne plus.
Je termine sur un mot de fin : Peter, tu m'as surement oublié mais pas moi ! Tu seras mon ingénieur réseau N3