Skip to content

Samvel070903/SecureHoliday-Pricing

Repository files navigation

SecureHoliday - Générateur de Périodes et Tarifs

Application Python professionnelle pour automatiser la génération de fichiers Excel SecureHoliday (Periods and Prices + Coefficients) sans modifier la structure. L'application permet de décrire vos logements, grilles tarifaires et périodes dans un fichier YAML lisible, puis de générer automatiquement les fichiers Excel nécessaires pour la réinjection de tarifs SecureHoliday. image

Installation

Installation depuis les sources

# Cloner le repository
git clone <repository-url>
cd secureholiday

# Créer un environnement virtuel
python -m venv .venv

# Activer l'environnement virtuel
# Sur Windows:
.venv\Scripts\Activate.ps1
# Sur Linux/Mac:
source .venv/bin/activate

# Installer les dépendances
pip install -r requirements.txt

# Installer l'application en mode développement
pip install -e .

Installation depuis PyPI (quand disponible)

pip install secureholiday

Structure du projet

secureholiday/
├── src/
│   └── secureholiday/          # Code source principal
│       ├── __init__.py
│       ├── __main__.py
│       ├── app.py               # Point d'entrée de l'application
│       ├── core/                # Constantes, chemins, gestion d'erreurs
│       ├── backend/              # Logique métier
│       │   ├── models/          # Modèles de données et exceptions
│       │   ├── services/        # Services (Excel, tarifs)
│       │   └── utils/           # Utilitaires (config, dates, segments)
│       ├── ui/                  # Interface utilisateur
│       │   ├── components/      # Composants réutilisables
│       │   ├── dialogs/         # Dialogues
│       │   └── main_window.py    # Fenêtre principale
│       └── ux/                  # Styles et widgets personnalisés
│           ├── themes/         # Thèmes
│           └── widgets/        # Widgets personnalisés
├── tests/                       # Tests unitaires et d'intégration
├── assets/                      # Ressources statiques (icônes, templates)
├── data/                        # Fichiers Excel (templates, tarifs)
├── config/                      # Fichiers de configuration YAML
├── docs/                        # Documentation
├── output/                      # Fichiers Excel générés
├── logs/                        # Logs d'erreurs
├── setup.py                     # Configuration de distribution
├── pyproject.toml              # Configuration moderne Python
├── requirements.txt            # Dépendances Python
└── README.md                   # Ce fichier

Utilisation

Interface graphique (recommandé)

# Méthode 1: Via le module Python
python -m secureholiday

# Méthode 2: Via le script main.py (compatibilité)
python main.py

# Méthode 3: Via la commande installée
secureholiday

Fonctionnalités de l'interface :

  • Colonne de gauche : Sélectionnez un produit, puis une grille (nightly/weekly)
  • Partie droite : Ajoutez/modifiez les périodes (début, fin, prix, découpe, légende, etc.)
  • Bouton Importer depuis Excel : Récupère automatiquement toutes les grilles et périodes déjà présentes dans votre fichier SecureHoliday
  • Bouton Générer l'Excel : Le fichier est réécrit en respectant la feuille Periods and Prices
  • Importer périodes/prix depuis Tarifs : Import automatique des tarifs depuis un fichier Excel de tarifs
  • Journal des Erreurs : Bouton dédié pour afficher toutes les erreurs et exceptions en temps réel

Ligne de commande (avancé)

python -m secureholiday.backend.services.excel_builder \
  --template "data/Camping Au Paradis des Campeurs - 9221.xlsx" \
  --config config/demo_rates.yaml \
  --output output/tarifs-2026.xlsx

Structure du fichier YAML

Le fichier de configuration YAML (config/demo_rates.yaml) suit cette structure :

defaults:
  duration_operator: GreaterThanOrEqual
  booking_fees: keep
  based_on_coeffs: keep

products:
  - product_id: 97401
    product_name: "Pitch Standard : Pitch + 1 car + electricity 6A 2/6 ppl."
    grids:
      - grid_id: 282896
        grid_type: NIGHTLY BASED TARIFF
        duration: 1
        segments:
          - start: 2025-07-05
            end: 2025-07-11
            price: 33
            legend: Basse saison
          - start: 2025-07-12
            end: 2025-08-22
            price: 47
            legend: Haute saison

Champs principaux

  • defaults : Valeurs appliquées à tous les produits/grilles si elles ne sont pas redéfinies
  • products : Liste des hébergements
    • product_id et product_name sont obligatoires
    • grids : Chaque grille correspond à un Grid Id SecureHoliday
      • grid_type, duration, duration_operator décrivent la grille
      • segments : Les périodes et tarifs à générer
        • start / end : Dates au format YYYY-MM-DD
        • price : Tarif appliqué (nombre)
        • chunk_size_days (optionnel) : Découpe automatiquement la période en blocs consécutifs
        • arrival_days, departure_days, legend : Options supplémentaires

🔧 Développement

Structure du code

L'application suit une architecture modulaire avec séparation claire des responsabilités :

  • core/ : Fonctionnalités centrales (chemins, erreurs, constantes)
  • backend/ : Logique métier (traitement Excel, tarifs, validation)
  • ui/ : Interface utilisateur Tkinter
  • ux/ : Styles et widgets personnalisés

Exécuter les tests

# Installer les dépendances de développement
pip install -r requirements-dev.txt  # Si disponible

# Exécuter les tests
pytest tests/

Contribuer

  1. Fork le repository
  2. Créer une branche pour votre fonctionnalité (git checkout -b feature/ma-fonctionnalite)
  3. Commit vos changements (git commit -am 'Ajout de ma fonctionnalité')
  4. Push vers la branche (git push origin feature/ma-fonctionnalite)
  5. Ouvrir une Pull Request

Distribution

Créer un package distributable

# Construire le package
python setup.py sdist bdist_wheel

# Installer localement
pip install dist/secureholiday-1.0.0.tar.gz

Publier sur PyPI

# Installer twine
pip install twine

# Publier
twine upload dist/*

Licence

MIT License - Voir le fichier LICENSE pour plus de détails.

Auteurs

SecureHoliday Team

Signaler un bug

Si vous rencontrez un bug, veuillez ouvrir une issue sur le repository GitHub avec :

  • Description du problème
  • Steps pour reproduire
  • Version de Python utilisée
  • Logs d'erreur (disponibles via le bouton "Journal des Erreurs" dans l'interface)

Documentation

La documentation complète est disponible dans le dossier docs/.


Note : Cette application est conçue pour fonctionner avec les fichiers Excel SecureHoliday. Assurez-vous d'utiliser un template Excel valide comme point de départ. image

About

Générateur de grilles tarifaires pour SecureHoliday

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages