diff --git a/.gitignore b/.gitignore index 0d6e0bb..ec75d91 100644 --- a/.gitignore +++ b/.gitignore @@ -23,18 +23,26 @@ dist/ # Fichiers temporaires d'Excel (~$fichier.xlsm) ~$*.xls* ~$*.xlsm -# On versionne 1 seul fichier prod "pivot" ; on ignore les exports datés -Excel/prod/Ratio_prod_20*.xlsm -!Excel/prod/Ratio_prod.xlsm -Excel/dev/** -!Excel/dev/.gitkeep -# ----- Dossiers Auth livrables ----- -# On n’embarque pas les exe ni .env dans le repo (tu livreras ça en zip) -Excel/**/Auth/*.exe -Excel/**/Auth/*.dll -Excel/**/Auth/*.pdb -Excel/**/Auth/.env +# Caches Excel / fichiers locaux non utiles +Excel/**/Desktop/ +Excel/**/InventairesCache/ + +# Archives prod : on les ignore (elles sont recréées par le .bat) +Excel/prod/Ratio_Cuisine_20*.xlsm +Excel/prod/Ratio_Restauration_20*.xlsm + +# On versionne uniquement les fichiers prod "pivots" +!Excel/prod/Ratio_Cuisine.xlsm +!Excel/prod/Ratio_Cuisine_VERSION.txt +!Excel/prod/Ratio_Restauration.xlsm +!Excel/prod/Ratio_Restauration_VERSION.txt + +# On ignore tout le dev (fichiers de travail) +Excel/dev/ +# (Optionnel si tu veux garder le dossier vide dans Git) +# !Excel/dev/.gitkeep + # ----- Systèmes / IDE ----- .DS_Store diff --git a/Excel/prod/Ratio_Cuisine.xlsm b/Excel/prod/Ratio_Cuisine.xlsm new file mode 100644 index 0000000..9607ac1 Binary files /dev/null and b/Excel/prod/Ratio_Cuisine.xlsm differ diff --git a/Excel/prod/VERSION.txt b/Excel/prod/Ratio_Cuisine_VERSION.txt similarity index 100% rename from Excel/prod/VERSION.txt rename to Excel/prod/Ratio_Cuisine_VERSION.txt diff --git a/Excel/prod/Ratio_Restauration.xlsm b/Excel/prod/Ratio_Restauration.xlsm new file mode 100644 index 0000000..2b38088 Binary files /dev/null and b/Excel/prod/Ratio_Restauration.xlsm differ diff --git a/Excel/prod/Ratio_Restauration_VERSION.txt b/Excel/prod/Ratio_Restauration_VERSION.txt new file mode 100644 index 0000000..524cb55 --- /dev/null +++ b/Excel/prod/Ratio_Restauration_VERSION.txt @@ -0,0 +1 @@ +1.1.1 diff --git a/Excel/prod/Ratio_prod.xlsm b/Excel/prod/Ratio_prod.xlsm deleted file mode 100644 index 76c0438..0000000 Binary files a/Excel/prod/Ratio_prod.xlsm and /dev/null differ diff --git a/README.md b/README.md index 4812177..48a3856 100644 --- a/README.md +++ b/README.md @@ -161,7 +161,7 @@ et protégé en lecture seule. 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 +cp Excel/prod/Ratio_Cuisine.xlsm Excel/dev/Ratio_Cuisine_dev.xlsm ``` Ou sous Windows : diff --git a/Scripts/Maj_prod_Cuisine.bat b/Scripts/Maj_prod_Cuisine.bat new file mode 100644 index 0000000..96dec5b --- /dev/null +++ b/Scripts/Maj_prod_Cuisine.bat @@ -0,0 +1,111 @@ +@echo off +chcp 1252 >nul +setlocal EnableExtensions + +REM ===================== PARAMS GENERAUX ===================== +set "ROOT=C:\Users\miche\PycharmProjects\Ratio_Inventaires" +set "PROD_DIR=%ROOT%\Excel\prod" +set "SHEET_NAME=Tableau de bord" +set "CELL_ADDR=U1" + +REM ===================== CHOIX APPLI ========================= +REM Usage : maj_prod_ratio.bat CUISINE ou maj_prod_ratio.bat RESTAURATION + +set "APP=%~1" +if /I "%APP%"=="CUISINE" ( + set "BASE_NAME=Ratio_Cuisine" +) else if /I "%APP%"=="RESTAURATION" ( + set "BASE_NAME=Ratio_Restauration" +) else ( + echo. + echo Usage: %~n0 CUISINE^|RESTAURATION + echo Exemple: %~n0 CUISINE + endlocal & exit /b 1 +) + +set "DEV_XLSM=%ROOT%\Excel\dev\%BASE_NAME%_dev.xlsm" +set "PROD_XLSM=%PROD_DIR%\%BASE_NAME%.xlsm" +set "VERSION_TXT=%ROOT%\Excel\dev\%BASE_NAME%_VERSION.txt" + +echo. +echo === Application : %APP% (%BASE_NAME%) ===================== + +echo. +echo === [1/4] Prep ============================================ + +if not exist "%PROD_DIR%" md "%PROD_DIR%" + +if not exist "%DEV_XLSM%" goto ERR_NO_DEV + +if not exist "%VERSION_TXT%" ( + >"%VERSION_TXT%" echo 1.0.0 + echo [INFO] %BASE_NAME%_VERSION.txt created with 1.0.0 +) + +for /f %%i in ('powershell -NoProfile -Command "(Get-Date).ToString('yyyy_MM_dd')"') do set "DATESTAMP=%%i" +set "ARCHIVE_FILE=%PROD_DIR%\%BASE_NAME%_%DATESTAMP%.xlsm" + +echo. +echo === [2/4] Lire VERSION.txt et maj cellule ================== + +for /f "usebackq delims=" %%v in ("%VERSION_TXT%") do set "NEW_VER=%%v" +set "NEW_VER=%NEW_VER: =%" +if "%NEW_VER%"=="" goto ERR_EMPTY_VER +echo Version: %NEW_VER% + +REM Mise a jour de la cellule dans DEV via VBS (macros & evenements OFF) +cscript //nologo "%ROOT%\Scripts\set_cell_silent.vbs" "%DEV_XLSM%" "%SHEET_NAME%" "%CELL_ADDR%" "%NEW_VER%" +if errorlevel 1 goto U1_FAIL + +echo [OK] %CELL_ADDR% updated on DEV: %NEW_VER% +goto AFTER_U1 + +:U1_FAIL +echo [WARN] %CELL_ADDR% update failed on DEV (continuing). + +:AFTER_U1 + +echo. +echo === [3/4] Backup PROD et purge archives =================== + +if not exist "%PROD_XLSM%" goto NO_BACKUP +echo Backup -> "%ARCHIVE_FILE%" +copy /Y "%PROD_XLSM%" "%ARCHIVE_FILE%" >nul +goto AFTER_BACKUP + +:NO_BACKUP +echo Pas de PROD a sauvegarder. + +:AFTER_BACKUP + +REM Garder uniquement les 5 dernières archives +powershell -NoProfile -Command "Get-ChildItem -LiteralPath '%PROD_DIR%' -Filter '%BASE_NAME%_20*_??_??.xlsm' | Sort-Object LastWriteTime -Descending | Select-Object -Skip 5 | Remove-Item -Force -ErrorAction SilentlyContinue" + +echo. +echo === [4/4] Copier DEV -> PROD ============================== + +copy /Y "%DEV_XLSM%" "%PROD_XLSM%" +if errorlevel 1 goto ERR_COPY + +>"%PROD_DIR%\%BASE_NAME%_VERSION.txt" echo %NEW_VER% + +echo. +echo [OK] Termine pour %APP% : +echo Version : %NEW_VER% +echo PROD : "%PROD_XLSM%" +echo VERSION : "%PROD_DIR%\%BASE_NAME%_VERSION.txt" +echo. +endlocal & exit /b 0 + +REM ===================== ERRORS =============================== +:ERR_NO_DEV +echo [ERROR] DEV file not found: "%DEV_XLSM%" +endlocal & exit /b 1 + +:ERR_EMPTY_VER +echo [ERROR] "%VERSION_TXT%" is empty. Put a version like 1.8.3 and rerun. +endlocal & exit /b 1 + +:ERR_COPY +echo [ERROR] Copy DEV -> PROD failed. +endlocal & exit /b 1 diff --git a/Scripts/Maj_prod_Restauration.bat b/Scripts/Maj_prod_Restauration.bat new file mode 100644 index 0000000..96dec5b --- /dev/null +++ b/Scripts/Maj_prod_Restauration.bat @@ -0,0 +1,111 @@ +@echo off +chcp 1252 >nul +setlocal EnableExtensions + +REM ===================== PARAMS GENERAUX ===================== +set "ROOT=C:\Users\miche\PycharmProjects\Ratio_Inventaires" +set "PROD_DIR=%ROOT%\Excel\prod" +set "SHEET_NAME=Tableau de bord" +set "CELL_ADDR=U1" + +REM ===================== CHOIX APPLI ========================= +REM Usage : maj_prod_ratio.bat CUISINE ou maj_prod_ratio.bat RESTAURATION + +set "APP=%~1" +if /I "%APP%"=="CUISINE" ( + set "BASE_NAME=Ratio_Cuisine" +) else if /I "%APP%"=="RESTAURATION" ( + set "BASE_NAME=Ratio_Restauration" +) else ( + echo. + echo Usage: %~n0 CUISINE^|RESTAURATION + echo Exemple: %~n0 CUISINE + endlocal & exit /b 1 +) + +set "DEV_XLSM=%ROOT%\Excel\dev\%BASE_NAME%_dev.xlsm" +set "PROD_XLSM=%PROD_DIR%\%BASE_NAME%.xlsm" +set "VERSION_TXT=%ROOT%\Excel\dev\%BASE_NAME%_VERSION.txt" + +echo. +echo === Application : %APP% (%BASE_NAME%) ===================== + +echo. +echo === [1/4] Prep ============================================ + +if not exist "%PROD_DIR%" md "%PROD_DIR%" + +if not exist "%DEV_XLSM%" goto ERR_NO_DEV + +if not exist "%VERSION_TXT%" ( + >"%VERSION_TXT%" echo 1.0.0 + echo [INFO] %BASE_NAME%_VERSION.txt created with 1.0.0 +) + +for /f %%i in ('powershell -NoProfile -Command "(Get-Date).ToString('yyyy_MM_dd')"') do set "DATESTAMP=%%i" +set "ARCHIVE_FILE=%PROD_DIR%\%BASE_NAME%_%DATESTAMP%.xlsm" + +echo. +echo === [2/4] Lire VERSION.txt et maj cellule ================== + +for /f "usebackq delims=" %%v in ("%VERSION_TXT%") do set "NEW_VER=%%v" +set "NEW_VER=%NEW_VER: =%" +if "%NEW_VER%"=="" goto ERR_EMPTY_VER +echo Version: %NEW_VER% + +REM Mise a jour de la cellule dans DEV via VBS (macros & evenements OFF) +cscript //nologo "%ROOT%\Scripts\set_cell_silent.vbs" "%DEV_XLSM%" "%SHEET_NAME%" "%CELL_ADDR%" "%NEW_VER%" +if errorlevel 1 goto U1_FAIL + +echo [OK] %CELL_ADDR% updated on DEV: %NEW_VER% +goto AFTER_U1 + +:U1_FAIL +echo [WARN] %CELL_ADDR% update failed on DEV (continuing). + +:AFTER_U1 + +echo. +echo === [3/4] Backup PROD et purge archives =================== + +if not exist "%PROD_XLSM%" goto NO_BACKUP +echo Backup -> "%ARCHIVE_FILE%" +copy /Y "%PROD_XLSM%" "%ARCHIVE_FILE%" >nul +goto AFTER_BACKUP + +:NO_BACKUP +echo Pas de PROD a sauvegarder. + +:AFTER_BACKUP + +REM Garder uniquement les 5 dernières archives +powershell -NoProfile -Command "Get-ChildItem -LiteralPath '%PROD_DIR%' -Filter '%BASE_NAME%_20*_??_??.xlsm' | Sort-Object LastWriteTime -Descending | Select-Object -Skip 5 | Remove-Item -Force -ErrorAction SilentlyContinue" + +echo. +echo === [4/4] Copier DEV -> PROD ============================== + +copy /Y "%DEV_XLSM%" "%PROD_XLSM%" +if errorlevel 1 goto ERR_COPY + +>"%PROD_DIR%\%BASE_NAME%_VERSION.txt" echo %NEW_VER% + +echo. +echo [OK] Termine pour %APP% : +echo Version : %NEW_VER% +echo PROD : "%PROD_XLSM%" +echo VERSION : "%PROD_DIR%\%BASE_NAME%_VERSION.txt" +echo. +endlocal & exit /b 0 + +REM ===================== ERRORS =============================== +:ERR_NO_DEV +echo [ERROR] DEV file not found: "%DEV_XLSM%" +endlocal & exit /b 1 + +:ERR_EMPTY_VER +echo [ERROR] "%VERSION_TXT%" is empty. Put a version like 1.8.3 and rerun. +endlocal & exit /b 1 + +:ERR_COPY +echo [ERROR] Copy DEV -> PROD failed. +endlocal & exit /b 1 diff --git a/Scripts/PROD b/Scripts/PROD index 700f3de..ee07849 100644 --- a/Scripts/PROD +++ b/Scripts/PROD @@ -1 +1 @@ -=== [4/4] Copier DEV - ================================= +=== [4/4] Copier DEV - ============================== diff --git a/Scripts/Maj_prod.bat b/Softs/Maj_prod.bat similarity index 100% rename from Scripts/Maj_prod.bat rename to Softs/Maj_prod.bat diff --git a/Softs/Ratio_prod_2025_11_13.xlsm b/Softs/Ratio_prod_2025_11_13.xlsm new file mode 100644 index 0000000..0455429 Binary files /dev/null and b/Softs/Ratio_prod_2025_11_13.xlsm differ