From 258725e8c9f82a36e34355eab2f544e06a3fd349 Mon Sep 17 00:00:00 2001 From: Mathis Date: Thu, 28 Sep 2023 14:02:35 +0200 Subject: [PATCH 1/2] Feat: add doc for Dolibarr --- docs/Doc_Dolibarr.md | 64 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 docs/Doc_Dolibarr.md diff --git a/docs/Doc_Dolibarr.md b/docs/Doc_Dolibarr.md new file mode 100644 index 0000000..26d0096 --- /dev/null +++ b/docs/Doc_Dolibarr.md @@ -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 + } From e4f009b63e07337114d4857bc29807daa872ba18 Mon Sep 17 00:00:00 2001 From: Clement Date: Fri, 10 Nov 2023 16:42:00 +0100 Subject: [PATCH 2/2] docs: shematics (#12) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Clement Reviewed-on: https://git.lab-ouest.org/Epitech/T-IOT-901_convoyor/pulls/12 --- docs/Schématics/Class.puml | 77 +++++++++++++++++++++++++++++++++++ docs/Schématics/Hardware.puml | 22 ++++++++++ 2 files changed, 99 insertions(+) create mode 100644 docs/Schématics/Class.puml create mode 100644 docs/Schématics/Hardware.puml diff --git a/docs/Schématics/Class.puml b/docs/Schématics/Class.puml new file mode 100644 index 0000000..2d66a83 --- /dev/null +++ b/docs/Schématics/Class.puml @@ -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 diff --git a/docs/Schématics/Hardware.puml b/docs/Schématics/Hardware.puml new file mode 100644 index 0000000..4c9a86e --- /dev/null +++ b/docs/Schématics/Hardware.puml @@ -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