Comptabilité BlueVisa — saisie de dépenses, revenus, paie dans le Google Sheet. Use when user mentions dépense, revenu, salaire, facture, compta, bookkeeping pour BlueVisa. TOUJOURS lire COMPTA.md avant toute opération comptable.
Lire COMPTA.md AVANT toute opération comptable — non négociable.
1CxK1oiU2Ojeyw4Ga8MRkfjie5TeT9I7wtMnItVgQYasVue Générale, DépensesVue Générale = vue consolidée des écritures/factures utiles au pilotageDépenses = source détaillée des dépensesDashboard, Revenus, Banque, Factures Émises, Factures Reçues, Paie, VAT, Plan Comptable ne sont plus la référence opérationnelle du sheet actuel| Col | Contenu |
|---|---|
| A | N° (D-001, D-002...) |
| B | Date (YYYY-MM-DD) |
| C | Fournisseur |
| D | Description |
| E | Montant HT (devise originale) |
| F | Devise (EUR, USD, MUR, GBP...) |
| G | ~Taux Devise/MUR (taux approx au jour de saisie — à recalculer avant déclaration fiscale) |
| H | ~Montant HT (MUR) — formule =E*G (approximatif) |
| I | ~VAT Input (MUR) (approximatif) |
| J | ~TTC (MUR) — formule =H+I (approximatif) |
| K | Catégorie (Salaires, Marketing, IT, Loyer, Services Pro, Transport, Divers) |
| L | Notes |
| M | Payé par (Thisma Consulting OÜ — Wise, BlueVisa Ltd — MCB, etc.) |
curl -s "https://open.er-api.com/v6/latest/EUR" | jq '.rates.MUR'
D-001, D-002... (séquentiel, jamais de trou)Vue Générale utilise un champ libre Invoice number selon le document ou la ligne consolidéeDépensesDépenses et/ou être reflétée dans Vue GénéraleDépenses si une nouvelle dépense est crééeDépensesVue GénéraleTOKEN=$(python3 -c "import json; print(json.load(open('$HOME/.config/google/tokens.json'))['access_token'])")
# Lire
curl -s "https://sheets.googleapis.com/v4/spreadsheets/1CxK1oiU2Ojeyw4Ga8MRkfjie5TeT9I7wtMnItVgQYas/values/TAB!RANGE" \
-H "Authorization: Bearer $TOKEN"
# Écrire (nombres)
curl -s -X PUT "https://sheets.googleapis.com/v4/spreadsheets/1CxK1oiU2Ojeyw4Ga8MRkfjie5TeT9I7wtMnItVgQYas/values/TAB!RANGE?valueInputOption=RAW" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"values": [...]}'
# Écrire (formules)
# Utiliser valueInputOption=USER_ENTERED pour les formules
# Le token expire toutes les ~1h, refresh auto via le script dans le skill
REFRESH_TOKEN=$(python3 -c "import json; print(json.load(open('$HOME/.config/google/tokens.json'))['refresh_token'])")
CLIENT_ID=... CLIENT_SECRET=...
curl -s -X POST "https://oauth2.googleapis.com/token" -d "..."
code/tools/generate-invoice.js : génère PDF proforma ou facturenode generate-invoice.js <data.json> [output.pdf]| Source | Proforma | Facture |
|---|---|---|
| Site | PRO-YYYY-NNNN | INV-YYYY-NNNN |
| Manuel | PRO-MAN-YYYY-NNNN | INV-MAN-YYYY-NNNN |
MEMORY.md → section Facturation pour le dernier numéro manuelMEMORY.md avec le nouveau dernier numérotype du JSON)PROFORMA_FULL — proforma paiement intégralPROFORMA_DEPOSIT — proforma acomptePROFORMA_FINAL — proforma soldeINVOICE_FULL — facture paiement intégralINVOICE_DEPOSIT — facture acompteINVOICE_FINAL — facture soldetype, number, issuedAt, purchaseReference, clientName, clientEmail, items
{
"description": "Pack Société — Création, incorporation, domiciliation 1 an",
"quantity": 1,
"unitPrice": 300000,
"total": 300000
}
⚠️ Montants en centimes (3000€ = 300000)
Vue Générale)Invoice numberTypeCompanyClientIssue dateDue dateCurrencyTotalStatutFile nameDrive linkNotesSource tabVue Générale doit être écrite avec des colonnes bien séparéesgog sheets update, préférer --values-json avec un vrai tableau 2DSource tab doit refléter l'origine réelle de la donnée (Dépenses, etc.)Pour le suivi des factures, maintenir le statut cohérent avec la structure actuelle du sheet (Statut, etc.).
Règle par défaut :
Bookkeeping/ → le Sheet ci-dessusFactures/ → PDFs des factures émises/reçues