Configuration Accounting — guide des JSON
Objectif
Cette page sert de carte des fichiers de configuration du système Accounting / ByModule. Le point important est de distinguer trois familles : les données statiques utilisées par la simulation, les settings qui activent/configurent les modules, et les definitions qui décrivent surtout les champs disponibles dans les écrans d'édition/wizards.
1. Vue générale du chargement
flowchart LR
JSON[Resources/data_byModule/*.json] --> STATIC[StaticDataByModule.Initialize]
STATIC --> CATALOG[Catalogues statiques]
STATIC --> SETTINGS[ModulesSettings / PagesSettings]
STATIC --> DEFINITIONS[Definitions pour éditeur / wizard]
CATALOG --> GAME[Runtime Accounting]
SETTINGS --> GAME
DEFINITIONS --> EDITOR[Configuration des activités/modules]
EDITOR --> MODULECFG[Configuration sauvegardée du module]
MODULECFG --> GAME
Le point d'entrée Unity est Assets/Src/Game/Data/ByModule/StaticDataByModule.cs. Il charge les fichiers du dossier Assets/GameSpecific/byModule/Resources/data_byModule via Resources.Load.
2. Les JSON principaux
| Fichier | Rôle | Quand le modifier |
|---|---|---|
modules.json |
Catalogue des modules disponibles : uid, nom, description, type de module, editor, icône/image, limites et métadonnées d'affichage. | Quand on ajoute un nouveau module ou qu'on change son identité dans le catalogue. |
modules_settings.json |
Valeurs/settings par défaut des modules : pages, préférences, bills, outils accounting, durée, options de validation, etc. | Quand on change le comportement par défaut d'un module existant ou sa configuration Accounting. |
modules_settings_definitions.json |
Décrit quels champs/préférences/bill definitions sont exposés pour chaque type de module dans les écrans de configuration. | Quand un nouveau paramètre doit devenir configurable dans le wizard/editor. |
module_pages.json |
Structure statique des pages et tableaux : pages, tables, rows, inputs, types d'inputs et outils comme journal général, grand livre, balance, états financiers, cash flow, etc. | Quand la structure visuelle ou fonctionnelle d'une page Accounting change. |
pages_settings.json |
Comportement d'une page : rangées/sections dynamiques, row editor, formules, navigation et autres options runtime. | Quand une page existante doit accepter un comportement dynamique différent. |
pages_settings_definitions.json |
Définitions des champs éditables de pages_settings. |
Quand on ajoute un nouveau setting de page configurable. |
preferences_settings_definitions.json |
Définitions des préférences de module utilisables dans l'éditeur. | Quand une nouvelle préférence doit être sélectionnable/configurable. |
bills_settings_definitions.json |
Schéma des données configurables par type de bill : type, nombre de bills, dates, comptes, taxes, partner subtype, produit/service, règles spécifiques, etc. | Quand un nouveau type de bill ou un nouveau paramètre de génération doit être exposé à la configuration. |
bills_category_settings_definitions.json |
Schéma des options par catégorie de bills. Dans la version actuelle, ces definitions décrivent les options que l'éditeur peut présenter. | Quand une catégorie de bills reçoit une nouvelle option commune. |
accounts.json |
Plan comptable statique : comptes par défaut/by-sector/custom, numéro, nom, type, unique_identifier, ordre, balance par défaut et metadata cash-flow. | Quand on ajoute/modifie un compte ou son comportement comptable. |
account_types.json |
Définitions des types/catégories de comptes. | Quand la taxonomie des comptes change. |
taxes.json |
Taxes de vente et données associées chargées dans SalesTaxes. |
Quand une taxe de vente ou sa configuration statique change. |
income_taxes.json |
Définitions générales des impôts sur le revenu. | Quand les types/règles générales d'impôt changent. |
employer_income_taxes.json |
Données de charges/taxes employeur. | Quand les règles employeur changent. |
income_tax_*_YEAR.json |
Tables fiscales annuelles fédérales/provinciales, chargées à la demande selon région et année. | Lors d'une mise à jour fiscale annuelle. |
income_taxes_codes.json |
Codes liés aux calculs/configurations d'impôt. | Quand la correspondance des codes fiscaux change. |
interests.json |
Définitions de taux/catégories d'intérêts. | Quand le calcul d'intérêts doit utiliser de nouvelles données statiques. |
immobilizations.json |
Catalogue/configuration des immobilisations. | Quand un type d'immobilisation ou ses données changent. |
contract_regularizations.json |
Données de régularisation des contrats. | Quand les règles de régularisation de contrats changent. |
regions.json |
Catalogue des régions supportées. | Quand une région est ajoutée/modifiée. |
regions_settings.json |
Comportements propres à une région : options fiscales/employeur/employé, congés et autres paramètres régionaux. | Quand une région doit avoir un comportement Accounting différent. |
act_settings.json |
Settings globaux d'activité utilisés par les modules. | Pour une configuration transversale à l'activité plutôt qu'à une page/module précis. |
constants.json |
Constantes globales ByModule utilisées par les systèmes runtime. | Quand un comportement dépend d'une constante partagée plutôt que d'un module particulier. |
dropdown_data.json |
Données de dropdown statiques utilisées dans les configurateurs. | Quand une liste de choix statique change. |
dynamic_dropdown_data_structure.json |
Structure des dropdowns dynamiques. | Quand une donnée sélectionnable dépend d'autres données/configurations. |
3. Relation entre modules_settings et les definitions
flowchart TD
DEF[modules_settings_definitions.json] -->|liste des preferences| PREF[preferences_settings_definitions.json]
DEF -->|liste des bills| BILLDEF[bills_settings_definitions.json]
BILLDEF --> WIZ[BillsDataWizardPageControl]
PREF --> WIZARD[Module settings wizard]
DEFAULT[modules_settings.json] --> MS[ModuleSettingsBase]
WIZ --> SAVED[Configuration du module/activité]
WIZARD --> SAVED
SAVED --> MS
MS --> PREFS[preferences]
MS --> BTD[bills_type_data]
MS --> BCS[bills_category_settings]
MS --> HIDDEN[bills_types_hidden_total]
À retenir : un fichier *_definitions.json ne représente pas forcément la valeur runtime. Il définit souvent comment configurer cette valeur. Les valeurs effectives d'un module finissent dans ModuleSettingsBase.
4. Configuration des bills dans un module
ModuleSettingsBase expose deux structures principales :
bills_type_data→ dictionnaire deBillTypeData/ données détaillées de génération par bill;bills_category_settings→ options communes par catégorie, par exemple le nombre de bills aléatoires à sélectionner dans une catégorie.
Le backend lit notamment _moduleSettings.bills_category_settings lors de la génération et utilise bills_type_data comme source réelle pour BillFactory.
bills_settings_definitions.json
Ce fichier est la grosse table de définition des champs disponibles pour les bills. On y retrouve notamment :
type,num_bills,min_num_entries,max_num_entries;- dates, fréquences, occurrences, délais et termes;
- comptes impactés : sales, expenses, payable, receivable, cash, loan, amortization, etc.;
- taxes : taxes de vente, déductions, taxes récupérables;
- relations : product/service, contract, immobilization, employee, supplier, investment;
- règles de création/édition et données spécifiques au type de bill.
5. Configuration des pages Accounting
flowchart LR
M[modules.json] --> UID[module uid]
UID --> MS[modules_settings.json]
MS --> ORDER[pages_order]
ORDER --> MP[module_pages.json]
MP --> STRUCT[Structure UI: page/table/input]
STRUCT --> PS[pages_settings.json]
PS --> BEHAVIOR[Rows/sections dynamiques, formules, navigation]
module_pages.json répond principalement à la question « qu'est-ce qui existe dans la page ? », tandis que pages_settings.json répond à « comment cette page se comporte ? ».
6. Plan comptable et calculs
flowchart LR
ACC[accounts.json] --> STATIC[StaticDataByModule.Accounts]
TYPES[account_types.json] --> STATIC
TAX[taxes / income_taxes / employer_income_taxes] --> STATIC
REG[regions + regions_settings] --> STATIC
STATIC --> BILL[Bills]
STATIC --> JOURNAL[General Journal]
STATIC --> LEDGER[General Ledger]
STATIC --> TB[Trial Balance]
STATIC --> FS[Financial Statements]
7. Règle pratique : quel fichier modifier ?
| Je veux... | Commencer par... |
|---|---|
| Ajouter un nouveau module | modules.json + modules_settings.json + sa définition/settings/pages selon le besoin. |
| Changer la structure d'une page | module_pages.json. |
| Changer le comportement d'une page | pages_settings.json. |
| Ajouter une préférence configurable | preferences_settings_definitions.json puis consommation dans le code/settings. |
| Ajouter un paramètre de bill configurable | bills_settings_definitions.json puis le code serveur qui consomme le champ. |
| Changer combien/quels bills un module génère | Configuration effective bills_type_data/bills_category_settings du module. |
| Ajouter/modifier un compte | accounts.json. |
| Mettre à jour une table fiscale annuelle | income_tax_*_YEAR.json correspondant. |
| Changer une règle propre à une région | regions_settings.json. |
Fichiers de code qui chargent cette configuration
Assets/Src/Game/Data/ByModule/StaticDataByModule.cs— chargement central des JSON dedata_byModule.Assets/Src/Game/Data/ByModule/ModuleSettingsBase.cs— désérialisation des settings runtime, incluant bills.Assets/Src/UI/SimByModule/Data/ModuleSettingsDefinition.cs— relie une définition de module aux définitions de préférences et de bills.Assets/Src/UI/SimByModule/Data/BillsDataWizardPageControl.cs— éditeur des données de bills.Assets/Src/UI/SimByModule/Data/BillDataSettingDefinitionData.cs— représentation Unity d'une définition de bill.Assets/Src/UI/SimByModule/Data/BillCategorySettingDefinitionData.cs— représentation Unity des options de catégorie.
Point important
Il n'existe pas dans cette branche de fichier statique bills_settings.json dans Resources/data_byModule. Les fichiers statiques présents sont bills_settings_definitions.json et bills_category_settings_definitions.json; les valeurs effectives des bills sont intégrées aux settings du module/activité sous bills_type_data et bills_category_settings.