2026-08-16 19:37:15 +02:00
|
|
|
import discord
|
|
|
|
|
from discord import app_commands
|
|
|
|
|
from discord.ext import commands
|
|
|
|
|
|
V2.0: Refonte système bancaire - DB SQLite, RIB FR, TVA auto, multi-banques
- Remplace JSON par SQLite (aiosqlite) pour atomicité et intégrité
- Nouveau format RIB français avec checksum modulo 97
- Chaque banque a son propre rôle Discord (isolation par serveur)
- TVA automatique Particulier -> Entreprise, redirection au Fisc
- Institutions gouvernementales avec droit d'audit optionnel
- Commandes: /gouv, /banque, /audit, /mes-ribs
- Supprime: 16 anciens fichiers (entreprises, FBM, URSAFF, etc.)
- Reset complet des données, repart de zéro
2026-08-18 17:42:03 +02:00
|
|
|
from utils.bank_manager import BankManager
|
|
|
|
|
|
|
|
|
|
bank_manager = BankManager()
|
|
|
|
|
|
2026-08-16 19:37:15 +02:00
|
|
|
|
|
|
|
|
class Compte(commands.Cog):
|
|
|
|
|
def __init__(self, bot):
|
|
|
|
|
self.bot = bot
|
|
|
|
|
|
V2.0: Refonte système bancaire - DB SQLite, RIB FR, TVA auto, multi-banques
- Remplace JSON par SQLite (aiosqlite) pour atomicité et intégrité
- Nouveau format RIB français avec checksum modulo 97
- Chaque banque a son propre rôle Discord (isolation par serveur)
- TVA automatique Particulier -> Entreprise, redirection au Fisc
- Institutions gouvernementales avec droit d'audit optionnel
- Commandes: /gouv, /banque, /audit, /mes-ribs
- Supprime: 16 anciens fichiers (entreprises, FBM, URSAFF, etc.)
- Reset complet des données, repart de zéro
2026-08-18 17:42:03 +02:00
|
|
|
@app_commands.command(name="compte", description="Afficher vos comptes bancaires et vos dernières transactions")
|
|
|
|
|
async def compte(self, interaction: discord.Interaction):
|
|
|
|
|
comptes = await bank_manager.get_comptes_user(interaction.guild.id, interaction.user.id)
|
2026-08-16 19:37:15 +02:00
|
|
|
|
V2.0: Refonte système bancaire - DB SQLite, RIB FR, TVA auto, multi-banques
- Remplace JSON par SQLite (aiosqlite) pour atomicité et intégrité
- Nouveau format RIB français avec checksum modulo 97
- Chaque banque a son propre rôle Discord (isolation par serveur)
- TVA automatique Particulier -> Entreprise, redirection au Fisc
- Institutions gouvernementales avec droit d'audit optionnel
- Commandes: /gouv, /banque, /audit, /mes-ribs
- Supprime: 16 anciens fichiers (entreprises, FBM, URSAFF, etc.)
- Reset complet des données, repart de zéro
2026-08-18 17:42:03 +02:00
|
|
|
if not comptes:
|
|
|
|
|
await interaction.response.send_message(
|
|
|
|
|
"❌ Vous n'avez aucun compte bancaire. Utilisez `/mes-ribs` pour voir vos RIBs.",
|
|
|
|
|
ephemeral=True,
|
|
|
|
|
)
|
|
|
|
|
return
|
2026-08-16 19:37:15 +02:00
|
|
|
|
|
|
|
|
embed = discord.Embed(
|
V2.0: Refonte système bancaire - DB SQLite, RIB FR, TVA auto, multi-banques
- Remplace JSON par SQLite (aiosqlite) pour atomicité et intégrité
- Nouveau format RIB français avec checksum modulo 97
- Chaque banque a son propre rôle Discord (isolation par serveur)
- TVA automatique Particulier -> Entreprise, redirection au Fisc
- Institutions gouvernementales avec droit d'audit optionnel
- Commandes: /gouv, /banque, /audit, /mes-ribs
- Supprime: 16 anciens fichiers (entreprises, FBM, URSAFF, etc.)
- Reset complet des données, repart de zéro
2026-08-18 17:42:03 +02:00
|
|
|
title=f"💳 Comptes de {interaction.user.display_name}",
|
|
|
|
|
color=discord.Color.blue(),
|
2026-08-16 19:37:15 +02:00
|
|
|
)
|
|
|
|
|
|
V2.0: Refonte système bancaire - DB SQLite, RIB FR, TVA auto, multi-banques
- Remplace JSON par SQLite (aiosqlite) pour atomicité et intégrité
- Nouveau format RIB français avec checksum modulo 97
- Chaque banque a son propre rôle Discord (isolation par serveur)
- TVA automatique Particulier -> Entreprise, redirection au Fisc
- Institutions gouvernementales avec droit d'audit optionnel
- Commandes: /gouv, /banque, /audit, /mes-ribs
- Supprime: 16 anciens fichiers (entreprises, FBM, URSAFF, etc.)
- Reset complet des données, repart de zéro
2026-08-18 17:42:03 +02:00
|
|
|
for c in comptes:
|
|
|
|
|
transactions = await bank_manager.get_transactions(interaction.guild.id, c["rib"], limit=5)
|
|
|
|
|
tva_text = f" | TVA: {c['tva_rate']}%" if c["account_type"] == "entreprise" else ""
|
|
|
|
|
|
|
|
|
|
tx_lines = []
|
|
|
|
|
for tx in transactions:
|
|
|
|
|
is_outgoing = tx["emetteur_rib"] == c["rib"]
|
|
|
|
|
direction = "→" if is_outgoing else "←"
|
|
|
|
|
other_rib = tx["destinataire_rib"] if is_outgoing else tx["emetteur_rib"]
|
|
|
|
|
signe = "-" if is_outgoing else "+"
|
|
|
|
|
tx_type = tx["type"]
|
|
|
|
|
if tx_type == "tva_prelevee":
|
|
|
|
|
tx_lines.append(f"- {direction} **TVA** : `{signe}{tx['montant']:.2f}€`")
|
2026-08-16 19:37:15 +02:00
|
|
|
else:
|
V2.0: Refonte système bancaire - DB SQLite, RIB FR, TVA auto, multi-banques
- Remplace JSON par SQLite (aiosqlite) pour atomicité et intégrité
- Nouveau format RIB français avec checksum modulo 97
- Chaque banque a son propre rôle Discord (isolation par serveur)
- TVA automatique Particulier -> Entreprise, redirection au Fisc
- Institutions gouvernementales avec droit d'audit optionnel
- Commandes: /gouv, /banque, /audit, /mes-ribs
- Supprime: 16 anciens fichiers (entreprises, FBM, URSAFF, etc.)
- Reset complet des données, repart de zéro
2026-08-18 17:42:03 +02:00
|
|
|
tx_lines.append(f"- {direction} **{tx_type}** : `{signe}{tx['montant']:.2f}€` vers `{other_rib or '?'}`")
|
2026-08-16 19:37:15 +02:00
|
|
|
|
V2.0: Refonte système bancaire - DB SQLite, RIB FR, TVA auto, multi-banques
- Remplace JSON par SQLite (aiosqlite) pour atomicité et intégrité
- Nouveau format RIB français avec checksum modulo 97
- Chaque banque a son propre rôle Discord (isolation par serveur)
- TVA automatique Particulier -> Entreprise, redirection au Fisc
- Institutions gouvernementales avec droit d'audit optionnel
- Commandes: /gouv, /banque, /audit, /mes-ribs
- Supprime: 16 anciens fichiers (entreprises, FBM, URSAFF, etc.)
- Reset complet des données, repart de zéro
2026-08-18 17:42:03 +02:00
|
|
|
tx_text = "\n".join(tx_lines) if tx_lines else "*Aucune transaction récente.*"
|
2026-08-16 19:37:15 +02:00
|
|
|
|
|
|
|
|
embed.add_field(
|
V2.0: Refonte système bancaire - DB SQLite, RIB FR, TVA auto, multi-banques
- Remplace JSON par SQLite (aiosqlite) pour atomicité et intégrité
- Nouveau format RIB français avec checksum modulo 97
- Chaque banque a son propre rôle Discord (isolation par serveur)
- TVA automatique Particulier -> Entreprise, redirection au Fisc
- Institutions gouvernementales avec droit d'audit optionnel
- Commandes: /gouv, /banque, /audit, /mes-ribs
- Supprime: 16 anciens fichiers (entreprises, FBM, URSAFF, etc.)
- Reset complet des données, repart de zéro
2026-08-18 17:42:03 +02:00
|
|
|
name=f"🏦 {c['bank_name']} ({c['account_type']}){tva_text}",
|
|
|
|
|
value=(
|
|
|
|
|
f"**RIB :** `{c['rib']}`\n"
|
|
|
|
|
f"**Solde :** `{c['solde']:.2f}€`\n\n"
|
|
|
|
|
f"**Transactions récentes :**\n{tx_text}"
|
|
|
|
|
),
|
|
|
|
|
inline=False,
|
2026-08-16 19:37:15 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
await interaction.response.send_message(embed=embed, ephemeral=True)
|
|
|
|
|
|
V2.0: Refonte système bancaire - DB SQLite, RIB FR, TVA auto, multi-banques
- Remplace JSON par SQLite (aiosqlite) pour atomicité et intégrité
- Nouveau format RIB français avec checksum modulo 97
- Chaque banque a son propre rôle Discord (isolation par serveur)
- TVA automatique Particulier -> Entreprise, redirection au Fisc
- Institutions gouvernementales avec droit d'audit optionnel
- Commandes: /gouv, /banque, /audit, /mes-ribs
- Supprime: 16 anciens fichiers (entreprises, FBM, URSAFF, etc.)
- Reset complet des données, repart de zéro
2026-08-18 17:42:03 +02:00
|
|
|
|
2026-08-16 19:37:15 +02:00
|
|
|
async def setup(bot):
|
|
|
|
|
await bot.add_cog(Compte(bot))
|