@mostajs/fournisseurs
v0.2.0
Published
Référentiel des TIERS QUI NOUS VENDENT : identité, références croisées code ↔ matière, rapprochement d'un nom lu sur une facture.
Maintainers
Readme
@mostajs/fournisseurs
Auteur : Dr Hamid MADANI [email protected] Licence : AGPL-3.0-or-later · Version : 0.1.0 · Dépendances : aucune
Le référentiel des tiers qui nous vendent : identité, références croisées « code ↔ matière », rapprochement d'un nom lu sur une facture avec un fournisseur connu.
Le problème qu'il résout
Trois modules touchent au fournisseur ; aucun ne le possédait :
| module | ce qu'il en fait |
|---|---|
| @mostajs/piece-extract | produit une identité en lisant une facture — et ne la range nulle part |
| @mostajs/sourcing | consomme une liste de « fournisseurs connus » — sans la constituer |
| @mostajs/stocks | garde une chaîne libre sur chaque matière — pas une entité |
D'où « METRO », « METRO FRANCE » et « Metro France » comme trois fournisseurs distincts, et aucun rapprochement possible. Ce module tient l'entité, une fois, pour tous.
Installation
pnpm add @mostajs/fournisseursUsage
import { creerFournisseurs } from '@mostajs/fournisseurs';
import { register } from '@mostajs/fournisseurs/register'; // au montage — sans lui, aucune table
const fournisseurs = creerFournisseurs({
depot: magasin.repo('fournisseurs'),
depotReferences: magasin.repo('references_fournisseur'),
});
const metro = await fournisseurs.creer({ nom: 'METRO FRANCE', siret: '…', delaiPaiementJours: 30 });
await fournisseurs.referencer({ fournisseurId: metro.id, code: '4711', matiereId: riz.id, parColis: 12 });
const connu = await fournisseurs.trouverParNom(piece.emetteur.nom); // PROPOSE, ne crée jamaisLes quatre règles à connaître
trouverParNompropose, ne crée JAMAIS. La machine rapproche, l'humain rattache.- Le SIRET est facultatif (un fournisseur étranger n'en a pas) mais vérifié par la clé de Luhn s'il est fourni. Mieux vaut vide que faux.
- Un code est unique par fournisseur, jamais globalement : « 4711 » est du riz chez l'un, du saumon chez l'autre.
matiereIdest opaque. Le module ne connaît pas@mostajs/stocks— c'est ce qui le rend utilisable par une association qui n'a aucun stock.
La fiche complète, avec tous les pièges : llms.txt.
Ce qu'il ne fera pas
Les commandes d'achat et la comptabilisation (@mostajs/compta), la recherche d'offres et la
comparaison de prix (@mostajs/sourcing), les mouvements de stock (@mostajs/stocks).
⚠️ Le mot « fournisseur » désigne ici un tiers commercial. Dans @mostajs/payment,
aop-providers et chat, il désigne un prestataire technique (banque, modèle de langage) :
rien de commun.
Essais
pnpm test # 31 essais — @mostajs/mjs-unit, preuve HTML dans test-scripts/.out/Six groupes, un par exigence de docs/DEVTEST-PLAN.fournisseurs.json
(format mostajs-devtest/1).
