objets_metier_rs 1.0.2

Bibliothèque Rust moderne et sûre pour l'API COM Objets Métier Sage 100c - Production Ready
//! Objets métier du module commercial (CIAL)
//!
//! Ce module contient les wrappers pour les objets métier retournés par les factories
//! de l'API BSCIALApplication100c. Chaque objet représente une entité commerciale
//! avec ses propriétés et méthodes.
//!
//! # Organisation
//!
//! Les objets sont organisés selon les phases d'implémentation des factories :
//!
//! ## Phase 1 - Objets Cœur (8 objets) ⚠️ EN DÉVELOPPEMENT
//!
//! - `Article` - Article/Référence produit avec tarifs, stocks, gammes
//! - `DocumentVente` - Document de vente (devis, commande, BL, facture, avoir)
//! - `DocumentAchat` - Document d'achat (commande, BL, facture fournisseur, avoir)
//! - `DocumentStock` - Mouvement de stock (entrée, sortie, transfert, inventaire)
//! - `DocumentInterne` - Document interne
//! - `Document` - Document générique (accès multi-types)
//! - `Depot` - Dépôt de stockage
//! - `Famille` - Famille d'articles
//!
//! ## Phase 2 - Objets Configuration Produits (5 objets) 📋 PLANIFIÉ
//!
//! - `Gamme` - Gamme de produit (couleur, taille, etc.)
//! - `Produit` - Nature du produit
//! - `Unite` - Unité de mesure (pièce, kg, m, etc.)
//! - `Conditionnement` - Conditionnement d'article
//! - `Glossaire` - Terme du glossaire commercial
//!
//! ## Phase 3 - Objets Paramètres (16 objets) 📋 PLANIFIÉ
//!
//! - Catégories comptables (4 objets)
//! - Paramètres de documents (4 objets)
//! - Souches de numérotation (4 objets)
//! - Autres paramètres (4 objets)
//!
//! ## Phase 4 - Objets Avancés (7 objets) 📋 PLANIFIÉ
//!
//! - Barèmes tarifaires (3 objets)
//! - Statistiques et configuration (4 objets)
//!
//! # Utilisation
//!
//! Les objets sont typiquement retournés par les méthodes des factories :
//!
//! ```no_run
//! use objets_metier_rs::wrappers::cial::CialApplication;
//!
//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
//! let cial = CialApplication::new("Objets100c.CIAL")?;
//! cial.set_name("D:\\Sage\\BIJOU.MAE")?;
//! cial.open()?;
//!
//! // Exemple Phase 1 (à implémenter)
//! // let factory_article = cial.factory_article()?;
//! // let article = factory_article.read_reference("REF001")?;
//! // println!("Article : {}", article.designation()?);
//!
//! cial.close()?;
//! # Ok(())
//! # }
//! ```
//!
//! # Structure des objets
//!
//! Chaque objet wrapper suit le pattern :
//!
//! ```rust,ignore
//! pub struct Article {
//!     pub(crate) dispatch: IDispatch,
//! }
//!
//! impl Article {
//!     // Propriétés (getters/setters)
//!     pub fn reference(&self) -> SageResult<String> { ... }
//!     pub fn set_reference(&self, value: &str) -> SageResult<()> { ... }
//!     
//!     // Méthodes métier
//!     pub fn write(&self) -> SageResult<()> { ... }
//!     pub fn remove(&self) -> SageResult<()> { ... }
//! }
//! ```

// ============================================================================
// PHASE 0 - Infrastructure ✅ COMPLÉTÉ
// ============================================================================
// Module structure en place, prêt pour l'implémentation des objets

// ============================================================================
// PHASE 1 - Objets Cœur ✅ COMPLÉTÉ
// ============================================================================
pub mod article_wrapper;
pub mod depot_wrapper;
pub mod document_achat_wrapper;
pub mod document_interne_wrapper;
pub mod document_stock_wrapper;
pub mod document_vente_wrapper;
pub mod document_wrapper;
pub mod famille_wrapper;

pub use article_wrapper::Article;
pub use depot_wrapper::Depot;
pub use document_achat_wrapper::DocumentAchat;
pub use document_interne_wrapper::DocumentInterne;
pub use document_stock_wrapper::DocumentStock;
pub use document_vente_wrapper::DocumentVente;
pub use document_wrapper::Document;
pub use famille_wrapper::Famille;

// ============================================================================
// PHASE 2 - Objets Configuration Produits ✅ COMPLÉTÉ
// ============================================================================
pub mod conditionnement_wrapper;
pub mod gamme_wrapper;
pub mod glossaire_wrapper;
pub mod produit_wrapper;
pub mod unite_wrapper;

pub use conditionnement_wrapper::Conditionnement;
pub use gamme_wrapper::Gamme;
pub use glossaire_wrapper::Glossaire;
pub use produit_wrapper::Produit;
pub use unite_wrapper::Unite;

// ============================================================================
// PHASE 3 - Objets Paramètres ✅ COMPLÉTÉ
// ============================================================================

// Groupe A - Catégories comptables
pub mod categorie_compta_achat_wrapper;
pub mod categorie_compta_stock_wrapper;
pub mod categorie_compta_vente_wrapper;
pub mod categorie_tarif_wrapper;

pub use categorie_compta_achat_wrapper::CategorieComptaAchat;
pub use categorie_compta_stock_wrapper::CategorieComptaStock;
pub use categorie_compta_vente_wrapper::CategorieComptaVente;
pub use categorie_tarif_wrapper::CategorieTarif;

// Groupe B - Paramètres de documents
pub mod param_doc_achat_wrapper;
pub mod param_doc_interne_wrapper;
pub mod param_doc_stock_wrapper;
pub mod param_doc_vente_wrapper;

pub use param_doc_achat_wrapper::ParamDocAchat;
pub use param_doc_interne_wrapper::ParamDocInterne;
pub use param_doc_stock_wrapper::ParamDocStock;
pub use param_doc_vente_wrapper::ParamDocVente;

// Groupe C - Souches de numérotation
pub mod souche_achat_wrapper;
pub mod souche_interne_wrapper;
pub mod souche_stock_wrapper;
pub mod souche_vente_wrapper;

pub use souche_achat_wrapper::SoucheAchat;
pub use souche_interne_wrapper::SoucheInterne;
pub use souche_stock_wrapper::SoucheStock;
pub use souche_vente_wrapper::SoucheVente;

// Groupe D - Autres paramètres
pub mod condition_livraison_wrapper;
pub mod expedition_wrapper;
pub mod modele_wrapper;
pub mod periodicite_wrapper;

pub use condition_livraison_wrapper::ConditionLivraison;
pub use expedition_wrapper::Expedition;
pub use modele_wrapper::Modele;
pub use periodicite_wrapper::Periodicite;

// ============================================================================
// PHASE 4 - Objets Avancés ✅ COMPLÉTÉ
// ============================================================================

// Groupe A - Barèmes tarifaires
pub mod bareme_commission_wrapper;
pub mod bareme_rabais_wrapper;
pub mod bareme_solde_wrapper;

pub use bareme_commission_wrapper::BaremeCommission;
pub use bareme_rabais_wrapper::BaremeRabais;
pub use bareme_solde_wrapper::BaremeSolde;

// Groupe B - Statistiques et configuration
pub mod arrondi_wrapper;
pub mod article_stat_wrapper;

pub use arrondi_wrapper::Arrondi;
pub use article_stat_wrapper::ArticleStat;

// ============================================================================
// PHASE 4bis - Objets Complémentaires ✅ COMPLÉTÉ
// ============================================================================

// Groupe C - Gestion avancée
pub mod agenda_wrapper;
pub mod dossier_param_wrapper;
pub mod dossier_wrapper;
pub mod motif_devis_wrapper;

pub use agenda_wrapper::Agenda;
pub use dossier_param_wrapper::DossierParam;
pub use dossier_wrapper::Dossier;
pub use motif_devis_wrapper::MotifDevis;