1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
//! 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 use Article;
pub use Depot;
pub use DocumentAchat;
pub use DocumentInterne;
pub use DocumentStock;
pub use DocumentVente;
pub use Document;
pub use Famille;
// ============================================================================
// PHASE 2 - Objets Configuration Produits ✅ COMPLÉTÉ
// ============================================================================
pub use Conditionnement;
pub use Gamme;
pub use Glossaire;
pub use Produit;
pub use Unite;
// ============================================================================
// PHASE 3 - Objets Paramètres ✅ COMPLÉTÉ
// ============================================================================
// Groupe A - Catégories comptables
pub use CategorieComptaAchat;
pub use CategorieComptaStock;
pub use CategorieComptaVente;
pub use CategorieTarif;
// Groupe B - Paramètres de documents
pub use ParamDocAchat;
pub use ParamDocInterne;
pub use ParamDocStock;
pub use ParamDocVente;
// Groupe C - Souches de numérotation
pub use SoucheAchat;
pub use SoucheInterne;
pub use SoucheStock;
pub use SoucheVente;
// Groupe D - Autres paramètres
pub use ConditionLivraison;
pub use Expedition;
pub use Modele;
pub use Periodicite;
// ============================================================================
// PHASE 4 - Objets Avancés ✅ COMPLÉTÉ
// ============================================================================
// Groupe A - Barèmes tarifaires
pub use BaremeCommission;
pub use BaremeRabais;
pub use BaremeSolde;
// Groupe B - Statistiques et configuration
pub use Arrondi;
pub use ArticleStat;
// ============================================================================
// PHASE 4bis - Objets Complémentaires ✅ COMPLÉTÉ
// ============================================================================
// Groupe C - Gestion avancée
pub use Agenda;
pub use DossierParam;
pub use Dossier;
pub use MotifDevis;