diff --git a/Excel/prod/Ratio_prod.xlsm b/Excel/prod/Ratio_prod.xlsm index 30d5967..f48ce5c 100644 Binary files a/Excel/prod/Ratio_prod.xlsm and b/Excel/prod/Ratio_prod.xlsm differ diff --git a/Fichiers_Install_Clients/Ratio_prod.xlsm b/Fichiers_Install_Clients/Ratio_prod.xlsm new file mode 100644 index 0000000..f48ce5c Binary files /dev/null and b/Fichiers_Install_Clients/Ratio_prod.xlsm differ diff --git a/README.md b/README.md index 6d7739c..4812177 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,14 @@ Ce projet permet de gérer les inventaires et les ratios de plusieurs sites à partir d’un fichier Excel central et d’une base MySQL. ## Fonctionnalités -- Mise à jour du pilote ODBC sur machine client -- Authentification par site -- Lecture automatique du fichier `ratio.xlsm` -- Insertion des données dans la base correspondante -- Gestion des articles et inventaire par code barres -- Affichage dans Streamlit (à venir) + +* Mise à jour du pilote ODBC sur machine client +* Authentification par site +* Lecture automatique du fichier `ratio.xlsm` +* Insertion des données dans la base correspondante +* Gestion des articles et inventaire par code barres +* Affichage dans Streamlit (à venir) + # 🚀 Installation du pilote MySQL ODBC 8.3 ## ✅ Objectif @@ -21,7 +23,7 @@ Assurer une compatibilité totale entre les fichiers Excel connectés à MySQL e 1. Télécharger le fichier `mysql-connector-odbc-8.3.0-winx64.msi` depuis le site officiel : - 👉 https://dev.mysql.com/downloads/connector/odbc/ + 👉 [https://dev.mysql.com/downloads/connector/odbc/](https://dev.mysql.com/downloads/connector/odbc/) 2. Copier le fichier dans ce dossier sur chaque poste cible : @@ -54,8 +56,8 @@ Assurer une compatibilité totale entre les fichiers Excel connectés à MySQL e 4. Lancer le script : - - clic droit sur `Installer_ODBC_83.bat` - - puis **"Exécuter en tant qu’administrateur"** + * clic droit sur `Installer_ODBC_83.bat` + * puis **"Exécuter en tant qu’administrateur"** --- @@ -73,10 +75,9 @@ msiexec /x {GUID-DE-LA-VERSION-8.2} /qn ## 🧩 Conseils -- Intégrez ces fichiers dans votre dépôt (ex : dossier `Installers/`) -- Versionnez votre script dans Git (Gitea) pour faciliter le déploiement sur tous les sites -- Utilisez RustDesk ou accès direct pour l'installation sur les PC distants - +* Intégrez ces fichiers dans votre dépôt (ex : dossier `Installers/`) +* Versionnez votre script dans Git (Gitea) pour faciliter le déploiement sur tous les sites +* Utilisez RustDesk ou accès direct pour l'installation sur les PC distants # 🔧 Gestion et distribution du fichier Excel `Ratio_prod.xlsm` @@ -90,16 +91,12 @@ Ce document décrit le fonctionnement mis en place pour garantir une version sta /Excel/ ├── dev/ -│ └── Ratio_dev.xlsm ← Fichier de travail +│ └── Ratio\_dev.xlsm ← Fichier de travail ├── prod/ -│ └── Ratio_prod.xlsm ← Fichier de production (non suivi par Git) +│ └── Ratio\_prod.xlsm ← Fichier de production (non suivi par Git) -yaml -Copier -Modifier - -- `Ratio_dev.xlsm` : version de développement modifiable, suivie par Git. -- `Ratio_prod.xlsm` : version validée, protégée (ajoutée au `.gitignore` pour éviter tout push accidentel). +* `Ratio_dev.xlsm` : version de développement modifiable, suivie par Git. +* `Ratio_prod.xlsm` : version validée, protégée (ajoutée au `.gitignore` pour éviter tout push accidentel). --- @@ -107,6 +104,103 @@ Modifier Le fichier `Ratio_prod.xlsm` est copié automatiquement sur le NAS Synology, dans un dossier partagé : -``` ### ⚙️ Configuration - **Synology Drive Server** est activé sur le NAS. - **Synology Drive Client** est installé sur le poste de travail. - Dossier synchronisé : `Partage_Ratio` - Mode de synchronisation recommandé : `Téléchargement uniquement`. --- ## 🔌 Copie automatique vers clé USB (via NAS) ### Prérequis - Application **USB Copy** installée et activée sur le NAS. ### Fonctionnement 1. Brancher une clé USB sur le port en façade du NAS. 2. Le NAS copie automatiquement `Ratio_prod.xlsm` sur la clé USB si une version plus récente est disponible. 3. Le fichier est copié dans le dossier racine de la clé, ou dans un dossier `Ratio/`. ### Avantages - Pas besoin d’ordinateur pour copier à la main. - Copie toujours à jour dès que la clé est branchée. --- ## 🛠️ Installation manuelle depuis une clé USB Contenu du dossier USB : ``` INSTALL_RATIO/ ├── Ratio_prod.xlsm └── Installer_Prod.bat ``` ### Étapes : 1. Brancher la clé USB sur le poste utilisateur. 2. Lancer `Installer_Prod.bat` **en tant qu’administrateur**. 3. Le fichier sera copié dans : ``` C:\Program Files\Ratio\Ratio.xlsm ``` et protégé en lecture seule. --- ## ♻️ Restaurer la version de production dans le projet (dev) Si la version de travail (`dev`) a été corrompue ou modifiée par erreur : ```bash cp Excel/prod/Ratio_prod.xlsm Excel/dev/Ratio_dev.xlsm ``` Ou sous Windows : ```powershell Copy-Item -Path "Excel\prod\Ratio_prod.xlsm" -Destination "Excel\dev\Ratio_dev.xlsm" -Force ``` --- ## 🧾 Notes complémentaires - Le fichier `Ratio_prod.xlsm` n’est **pas suivi par Git**, car exclu via `.gitignore`. - Il est **protégé en lecture seule** sur le poste utilisateur. - Une sauvegarde automatique est possible via **Hyper Backup** ou les **snapshots** du NAS. --- 📌 **Dernière mise à jour :** 16 mai 2025 ``` --- Souhaites-tu que je t’envoie ce fichier directement en `.md`, ou que je l’intègre dans ton dépôt Gitea ? Je peux aussi te générer une version `.pdf` si tu veux la distribuer aux utilisateurs. +### ⚙️ Configuration + +* **Synology Drive Server** est activé sur le NAS. +* **Synology Drive Client** est installé sur le poste de travail. +* Dossier synchronisé : `Partage_Ratio` +* Mode de synchronisation recommandé : `Téléchargement uniquement`. + +--- + +## 🔌 Copie automatique vers clé USB (via NAS) + +### Prérequis + +* Application **USB Copy** installée et activée sur le NAS. + +### Fonctionnement + +1. Brancher une clé USB sur le port en façade du NAS. +2. Le NAS copie automatiquement `Ratio_prod.xlsm` sur la clé USB si une version plus récente est disponible. +3. Le fichier est copié dans le dossier racine de la clé, ou dans un dossier `Ratio/`. + +### Avantages + +* Pas besoin d’ordinateur pour copier à la main. +* Copie toujours à jour dès que la clé est branchée. + +--- + +## 🛠️ Installation manuelle depuis une clé USB + +Contenu du dossier USB : + +``` +INSTALL_RATIO/ +├── Ratio_prod.xlsm +└── Installer_Prod.bat +``` + +### Étapes : + +1. Brancher la clé USB sur le poste utilisateur. +2. Lancer `Installer_Prod.bat` **en tant qu’administrateur**. +3. Le fichier sera copié dans : + +``` +C:\Program Files\Ratio\Ratio.xlsm +``` + +et protégé en lecture seule. + +--- + +## ♻️ Restaurer la version de production dans le projet (dev) + +Si la version de travail (`dev`) a été corrompue ou modifiée par erreur : + +```bash +cp Excel/prod/Ratio_prod.xlsm Excel/dev/Ratio_dev.xlsm +``` + +Ou sous Windows : + +```powershell +Copy-Item -Path "Excel\prod\Ratio_prod.xlsm" -Destination "Excel\dev\Ratio_dev.xlsm" -Force +``` + +--- + +## 🧾 Notes complémentaires + +* Le fichier `Ratio_prod.xlsm` n’est **pas suivi par Git**, car exclu via `.gitignore`. +* Il est **protégé en lecture seule** sur le poste utilisateur. +* Une sauvegarde automatique est possible via **Hyper Backup** ou les **snapshots** du NAS. + +--- + +# 📋 Checklist Release DEV → PROD + +Pour garantir que DEV reste ouvert et que PROD soit protégé : + +1. **Travailler dans DEV** : `Excel/dev/Ratio_dev.xlsm` (projet VBA non verrouillé). +2. **Lancer le script batch** (`build_prod.bat`). + + * Copie DEV → PROD + * Application des protections (feuilles, structure, horodatage) + * Vérification/verrouillage du projet VBA PROD (manuel si nécessaire) +3. **Vérifier PROD** : + + * Feuilles protégées + * Structure du classeur protégée + * Projet VBA verrouillé (mot de passe, déjà posé une fois) +4. **Distribuer PROD** : via NAS, USB ou dossier client. + +👉 DEV reste toujours libre, PROD reste verrouillé et sûr. + +--- + ## Auteur + Michel diff --git a/Scripts/Installer_OBCD.bat b/Scripts/Installer_OBCD.bat deleted file mode 100644 index ec8b723..0000000 --- a/Scripts/Installer_OBCD.bat +++ /dev/null @@ -1,9 +0,0 @@ -@echo off -echo =============================== -echo Installation MySQL ODBC 9.3.0 -echo =============================== -echo Installation des composants requis... -start /wait vc_redist.x64.exe /quiet /norestart -start /wait mysql-connector-odbc-9.2.0-winx64.msi /quiet -echo Installation terminée. -pause diff --git a/Scripts/Installer_Prod.bat b/Scripts/Installer_Prod.bat deleted file mode 100644 index af99964..0000000 --- a/Scripts/Installer_Prod.bat +++ /dev/null @@ -1,27 +0,0 @@ -@echo off -title Installation de la version stable de Ratio -echo. -echo ========================================== -echo INSTALLATION DE RATIO - VERSION STABLE -echo ========================================== -echo. - -REM Chemin de destination -set DEST="C:\Program Files\Ratio" - -REM Créer le dossier si nécessaire -if not exist %DEST% ( - mkdir %DEST% -) - -REM Copier le fichier Excel -copy "Ratio_prod.xlsm" %DEST%\Ratio.xlsm /Y - -REM Protéger le fichier en lecture seule -attrib +R %DEST%\Ratio.xlsm - -echo. -echo ✔️ Le fichier Ratio_prod a été installé avec succès ! -echo Emplacement : %DEST%\Ratio.xlsm -echo. -pause diff --git a/Scripts/PROD b/Scripts/PROD new file mode 100644 index 0000000..41b3362 --- /dev/null +++ b/Scripts/PROD @@ -0,0 +1 @@ + === [2/3] Copie DEV - diff --git a/Scripts/maj_prod_ratio.bat b/Scripts/maj_prod_ratio.bat index ed89eda..92f4d32 100644 --- a/Scripts/maj_prod_ratio.bat +++ b/Scripts/maj_prod_ratio.bat @@ -1,97 +1,59 @@ @echo off setlocal EnableExtensions EnableDelayedExpansion -REM === PARAMÈTRES A ADAPTER UNE FOIS === +REM === PARAMÈTRES A ADAPTER UNE FOIS ========================================= set "ROOT=C:\Users\miche\PycharmProjects\Ratio_Inventaires" set "DEV_XLSM=%ROOT%\Excel\dev\Ratio_dev.xlsm" -set "DEV_AUTH_PY=%ROOT%\Excel\dev\Auth\auth_cli.py" -set "VENV_PY=%ROOT%\.venv\Scripts\python.exe" set "PROD_DIR=%ROOT%\Excel\prod" set "PROD_XLSM=%PROD_DIR%\Ratio_prod.xlsm" -set "PROD_AUTH_DIR=%PROD_DIR%\Auth" -set "INSTALL_CLIENT=%USERPROFILE%\Desktop\Install_Ratio_Inv" REM <- dossier prêt à livrer au client -set "CLIENT_AUTH_DIR=%INSTALL_CLIENT%\Auth" +REM Dossier prêt à livrer au client +set "INSTALL_CLIENT=%USERPROFILE%\Desktop\Install_Ratio_Inv" +REM ============================================================================ -REM === DATE ISO robuste (indépendant des paramètres régionaux) === +REM === DATE ISO robuste (indépendant des paramètres régionaux) =============== for /f %%i in ('powershell -NoProfile -Command "(Get-Date).ToString(\"yyyy_MM_dd\")"') do set "DATESTAMP=%%i" set "ARCHIVE_FILE=%PROD_DIR%\Ratio_prod_%DATESTAMP%.xlsm" echo. -echo === [1/6] Préparation des dossiers ======================================== -if not exist "%PROD_DIR%" mkdir "%PROD_DIR%" -if not exist "%PROD_AUTH_DIR%" mkdir "%PROD_AUTH_DIR%" -if not exist "%INSTALL_CLIENT%" mkdir "%INSTALL_CLIENT%" -if not exist "%CLIENT_AUTH_DIR%" mkdir "%CLIENT_AUTH_DIR%" +echo === [1/4] Préparation des dossiers ======================================= +if not exist "%PROD_DIR%" mkdir "%PROD_DIR%" +if not exist "%INSTALL_CLIENT%" mkdir "%INSTALL_CLIENT%" -echo. -echo === [2/6] (Optionnel) Build de auth_cli.exe avec PyInstaller ============== -if exist "%VENV_PY%" ( - echo Compilation via venv: %VENV_PY% - "%VENV_PY%" -m PyInstaller --onefile --clean --distpath "%PROD_AUTH_DIR%" "%DEV_AUTH_PY%" - if errorlevel 1 ( - echo [WARN] Echec de compilation. On continue avec l'exe existant s'il est présent. - ) -) else ( - echo [WARN] VENV introuvable: %VENV_PY% -> build ignore -) - -echo. -echo === [3/6] Sauvegarde de la prod courante ================================== -if exist "%PROD_XLSM%" ( - echo Sauvegarde -> "%ARCHIVE_FILE%" - copy /Y "%PROD_XLSM%" "%ARCHIVE_FILE%" >nul -) else ( - echo Pas de prod courante a sauvegarder. -) - -echo. -echo === [4/6] Mise a jour de la prod depuis le dev ============================ if not exist "%DEV_XLSM%" ( echo [ERREUR] Fichier DEV introuvable: %DEV_XLSM% goto :EOF ) + +echo. +echo === [2/4] Sauvegarde de la PROD courante ================================= +if exist "%PROD_XLSM%" ( + echo Sauvegarde -> "%ARCHIVE_FILE%" + copy /Y "%PROD_XLSM%" "%ARCHIVE_FILE%" >nul +) else ( + echo Pas de PROD courante a sauvegarder. +) + +echo. +echo === [3/4] Mise a jour de la PROD depuis le DEV =========================== copy /Y "%DEV_XLSM%" "%PROD_XLSM%" >nul if errorlevel 1 ( echo [ERREUR] Copie du XLSM vers PROD echouee. goto :EOF ) -REM On s'assure que l'exe est bien present et on deblocque Windows (SmartScreen) -if exist "%PROD_AUTH_DIR%\auth_cli.exe" ( - powershell -NoProfile -Command "Unblock-File -Path '%PROD_AUTH_DIR%\auth_cli.exe'" 2>nul -) else ( - echo [ERREUR] auth_cli.exe absent dans %PROD_AUTH_DIR% - echo Lance d'abord la compilation ou copie l'exe manuellement. - goto :EOF -) - -REM Le .env doit exister dans PROD\Auth (modele ou reel) -if not exist "%PROD_AUTH_DIR%\.env" ( - echo [WARN] Aucun .env dans %PROD_AUTH_DIR% -> Pense a y mettre DB_HOST/DB_NAME/DB_USER/DB_PASSWORD -) - echo. -echo === [5/6] Préparation du dossier client =================================== +echo === [4/4] Preparation du dossier client ================================== copy /Y "%PROD_XLSM%" "%INSTALL_CLIENT%\Ratio_prod.xlsm" >nul if errorlevel 1 ( echo [ERREUR] Copie du XLSM vers INSTALL_CLIENT echouee. goto :EOF ) -copy /Y "%PROD_AUTH_DIR%\auth_cli.exe" "%CLIENT_AUTH_DIR%\auth_cli.exe" >nul -powershell -NoProfile -Command "Unblock-File -Path '%CLIENT_AUTH_DIR%\auth_cli.exe'" 2>nul - -if exist "%PROD_AUTH_DIR%\.env" ( - copy /Y "%PROD_AUTH_DIR%\.env" "%CLIENT_AUTH_DIR%\.env" >nul -) else ( - echo [INFO] Pas de .env a copier (client). Tu pourras le remplir a la main. -) - echo. -echo === [6/6] Nettoyage: on garde 5 archives les plus recentes =============== -pushd "%PROD_DIR%" +echo === Nettoyage: on garde 5 archives les plus recentes ===================== +pushd "%PROD_DIR%" >nul set count=0 for /f "delims=" %%f in ('dir /b /o-d "Ratio_prod_20??_??_??.xlsm"') do ( set /a count+=1 @@ -100,13 +62,13 @@ for /f "delims=" %%f in ('dir /b /o-d "Ratio_prod_20??_??_??.xlsm"') do ( del "%%f" ) ) -popd +popd >nul echo. -echo [OK] Release terminee : +echo [OK] Mise a jour terminee : echo - PROD : "%PROD_XLSM%" -echo - AUTH : "%PROD_AUTH_DIR%\auth_cli.exe" + ".env" -echo - CLIENT: "%INSTALL_CLIENT%\Ratio_prod.xlsm" + "Auth\*" +echo - CLIENT: "%INSTALL_CLIENT%\Ratio_prod.xlsm" echo. pause -endlocal +endlocal & exit /b 0 +