Création du module DolibarrClient avec ses différentes routes & création du module WarehouseGUI pour le LCD M5Stack #7

Merged
Clement merged 9 commits from feat/client_dolibarr into develop 2023-11-10 15:47:41 +00:00
3 changed files with 163 additions and 0 deletions
Showing only changes of commit 084332d985 - Show all commits

64
docs/Doc_Dolibarr.md Normal file
View File

@ -0,0 +1,64 @@
# CRM Dolibarr
## Docker Image tuxgasy/dolibarr
### Description du composant
Dolibarr est le CRM utilisé pour gérer les stocks, les transactions et l'inventaire présents dans les entrepôts. Il est le pilier central du projet et nous servira d'interface pour gérer les transactions.
### Spécifications techniques
- **Image Docker**: [tuxgasy/dolibarr](https://hub.docker.com/r/tuxgasy/dolibarr/)
- **Plugins utilisés**: Stock, API REST
- **Utilisateur technique créé**: Technical User IoT
### Fonctionnalités principales
- Créer / Lister les différents entrepôts
- Créer / Lister les produits disponibles dans un entrepôt
- Créer un mouvement dans les stocks des produits disponibles dans chaque entrepôt
- Exposer différents webservices pour automatiser certaines tâches
### Guide d'utilisation
#### Créer une instance de développement
Pour créer une instance de développement, nous allons utiliser l'image Docker de Dolibarr: [tuxgasy/dolibarr](https://hub.docker.com/r/tuxgasy/dolibarr/)
Pour simplifier l'installation, un fichier docker-compose est disponible à la racine du projet: `./docker-compose-dolibarr.yml`
Pour lancer Dolibarr, exécutez la commande suivante :
```bash
$ docker compose -f docker-compose-dolibarr.yml up
```
#### Ensuite, il faut se rendre sur [http://0.0.0.0/](http://0.0.0.0/) puis se connecter avec les identifiants par défaut (admin, admin).
### Appel des différents webservices de Dolibarr
L'URL de base pour toutes nos requêtes HTTP (avec l'image Docker) est : `http://0.0.0.0/api/index.php`
Pour commencer, récupérez l'API token d'un utilisateur pour pouvoir effectuer des requêtes API. Assurez-vous que l'utilisateur dispose des autorisations nécessaires.
Ensuite, utilisez ce token pour chaque route API en l'ajoutant dans les en-têtes : `DOLAPIKEY = {{votre_api_token}}` de votre prochaine requête.
Pour récupérer le warehouse de base et vérifier son existence :
- **Méthode**: GET
- **URL**: `warehouses/{id}`
Pour récupérer les produits disponibles :
- **Méthode**: GET
- **URL**: `products?sortfield=t.ref&sortorder=ASC&limit=10000`
Pour créer un mouvement de stock :
- **Méthode**: POST
- **URL**: `stockmovements?sortfield=t.rowid&sortorder=ASC&limit=100`
- **Body (JSON)**:
```json
{
"product_id": "1", // string, - ID du produit à déplacer
"warehouse_id": "1", // string - ID de l'entrepôt
"qty": 60, // int - quantité à déplacer (1 pour positif ou -1 pour enlever un article)
"movementcode": "S-1", // string - code du mouvement
"movementlabel": "Abc" // string - libellé du mouvement
}

View File

@ -0,0 +1,77 @@
@startuml class
hide empty members
class Dolibarr {
+ String getDestination(String tagID)
+ String createStockMovement(String tagID, String warehouseId)
}
package "Managers" {
abstract AManager {
# ILCDScreen lcd
# IServoMotor servo
# IGRBL grbl
# INFCReader nfc
}
class WarehouseManager
WarehouseManager .|> AManager
}
package "Components" {
package "NFCReader" {
interface INFCReader {
{abstract} char* read()
{abstract} bool hasTag()
}
class RC522
RC522 .|> INFCReader
}
package "LCDScreen" {
interface ILCDScreen {
{abstract} void clearScreen()
{abstract} void draw(int x, int y, int h, int w)
{abstract} void drawRect(int x, int y, int h, int w)
}
class M5LCD
M5LCD .|> ILCDScreen
}
package "GRBL" {
interface IGRBL {
{abstract} drive(int x, int y, int z, int step)
{abstract} step(int s)
}
class M5GRBL
M5GRBL .|> IGRBL
}
package "ServoMotor" {
interface IServoMotor {
{abstract} goLeft()
{abstract} goRight()
{abstract} goMiddle()
}
class ServoMotor
ServoMotor .|> IServoMotor
}
}
class Program {
+ Program()
+ void loop
}
AManager <-- IServoMotor
AManager <-- IGRBL
AManager <-- ILCDScreen
AManager <-- INFCReader
Program <-- WarehouseManager
Program <-- Dolibarr
@enduml

View File

@ -0,0 +1,22 @@
@startuml hard wiring
cloud {
[Dolibarr]
}
package "Convoyeur"{
[M5 Core]
[Lecteur NFC] as nfc
[Servo Moteur] as servo
[GRBL]
[Stepper Moteur] as Stepper
}
[Dolibarr] <-- [M5 Core] : API
[M5 Core] --> servo : IO
[M5 Core] <-- nfc : IC2
[M5 Core] --> [GRBL] : SPI
[GRBL] --> Stepper
@enduml