Contrats
Responsabilité
Les contrats Accounting sont des données métier persistées/générées qui servent à créer des bills et rapports de contrat, puis à calculer les montants payés/reçus d'avance ou restant à payer/recevoir en fin de période.
Serveur
classes/bills/contracts/ContractBill.js: création du contrat/bill;classes/bills/reports/ContractsReportBill.js: rapport des contrats utilisés;BillCreationContext._usedContractsByType: registre des contrats générés;utilsByModule.getContractPaidOrReceivedInAdvance();utilsByModule.getContractToPayOrReceive().
Types de contrats
Le code traite notamment des contrats fournisseur, client, investissement et prêt court terme. Le type de contrat est stocké dans billData.contractType et influence taxes, comptes et sens de l'écriture.
Modèle Unity
SeededContract contient date, contractRegularizationData, liste de SeededContractBillEntry et unités. Il peut calculer son subtotal pour un type de bill donné.
Relation avec les produits/services
ContractBill réutilise les classes de bill data produit ou service pour stocker les entrées du contrat. Le contrat conserve aussi l'UID de régularisation correspondant.
flowchart LR
CFG[Contract config] --> CB[ContractBill]
CB --> USED[_usedContractsByType]
USED --> REPORT[ContractsReportBill]
USED --> REG[Contract Regularization]
REG --> GJ[Journal / Accounts]
Debug
Pour un montant de contrat incorrect, inspecter d'abord le bill et ses entries, puis contractType, les dates fiscales, contract_regularization_uid et enfin le calcul de régularisation.
Ajouter un type de contrat ou une règle de contrat
- Définir le type dans la configuration/static data concernée.
- Définir si le contrat représente fournisseur, client, investissement, prêt ou une nouvelle catégorie réellement différente.
- Vérifier
ContractBillet le type deBillDatautilisé pour ses entries. - Enregistrer le contrat dans
BillCreationContext._usedContractsByType. - Ajouter/adapter
ContractsReportBill. - Définir le
contract_regularization_uidcorrespondant. - Vérifier les calculs
getContractPaidOrReceivedInAdvance()etgetContractToPayOrReceive(). - Mettre à jour les relations de comptes Answer Key/Grading.
- Ajouter le rendu/report Unity si les colonnes diffèrent.
Dates et durée
Les calculs utilisent la date du contrat, le nombre d'unités/années et les bornes fiscales. Tester un contrat :
- commencé avant l'exercice;
- commencé pendant l'exercice;
- qui se termine pendant l'exercice;
- qui continue après la fin de l'exercice;
- sans fin explicite lorsque le helper accepte
-1.
Debug
Si un contrat apparaît dans le report mais régularise mal, le problème est probablement après ContractBill. Si le contrat lui-même manque, commencer par la génération/bill factory et _usedContractsByType.