Simple Invoice UI System | ESX Framework
urBills est un système de facturation performant pour FiveM, entièrement refait avec une interface NUI simple, fluide et optimisée. Fini RageUI : place à une interface web responsive et rapide.
✅ Interface web NUI responsive
✅ Design épuré (couleurs plates, sans dégradés)
✅ Animations fluides et interactions intuitives
✅ Optimisé performance (aucune dépendance RageUI)
✅ Simple à utiliser et rapide en jeu
🔹 Framework : ESX
🔹 Compatible serveurs RP
🔹 Nécessite un job (pas unemployed) pour facturer
iBills dans resources/server.cfg :1ensure iBills
📁 Client + Server Lua
📁 Interface HTML / CSS / JS
📁 Communication Lua ↔ NUI (callbacks)
📁 Système optimisé et propre
1Config = {}
2
3Config.Locale = 'fr'
4
5Config.Locales = {
6 ["fr"] = {
7 -- UI - Menu de création
8 ["create_invoice"] = "Crée une facture",
9 ["your_company"] = "Votre Entreprise",
10 ["invoice_amount"] = "Montant de la facture ($)",
11 ["enter_amount"] = "Entrez le montant",
12 ["invoice_reason"] = "Raison de la facture",
13 ["enter_reason"] = "Entrez la raison",
14 ["send"] = "Envoyer",
15 ["cancel"] = "Annuler",
16
17 -- UI - Menu de réception
18 ["new_invoice_received"] = "Nouvelle Facture Reçue",
19 ["created_by"] = "Créé par:",
20 ["amount"] = "Montant:",
21 ["company"] = "Entreprise:",
22 ["reason"] = "Raison:",
23 ["payment_method"] = "Méthode de paiement",
24 ["cash"] = "Liquide",
25 ["bank"] = "Banque",
26 ["pay"] = "Payer",
27 ["refuse"] = "Refuser",
28
29 -- Notifications UI
30 ["enter_valid_amount"] = "Veuillez entrer un montant valide",
31 ["enter_reason_text"] = "Veuillez entrer une raison",
32
33 -- Client
34 ["unemployed"] = "Sans Emploi",
35 ["need_job_invoice"] = "Vous devez avoir un métier pour créer une facture",
36 ["invoice_sent"] = "Facture envoyée avec succès",
37 ["invoice_sent_self"] = "Facture envoyée à vous-même",
38 ["payment_done"] = "Paiement effectué: %s$",
39 ["insufficient_funds"] = "Fonds insuffisants",
40 ["invoice_refused"] = "Facture refusée",
41
42 -- Server
43 ["refused_invoice"] = " a refusé de payer votre facture",
44 ["payment_received"] = "~g~<C>Paiement</C>~s~\nVous avez reçu %s$ de %s",
45 },
46
47 ["en"] = {
48 -- UI - Create menu
49 ["create_invoice"] = "Create an invoice",
50 ["your_company"] = "Your Company",
51 ["invoice_amount"] = "Invoice amount ($)",
52 ["enter_amount"] = "Enter amount",
53 ["invoice_reason"] = "Invoice reason",
54 ["enter_reason"] = "Enter reason",
55 ["send"] = "Send",
56 ["cancel"] = "Cancel",
57
58 -- UI - Receive menu
59 ["new_invoice_received"] = "New Invoice Received",
60 ["created_by"] = "Created by:",
61 ["amount"] = "Amount:",
62 ["company"] = "Company:",
63 ["reason"] = "Reason:",
64 ["payment_method"] = "Payment method",
65 ["cash"] = "Cash",
66 ["bank"] = "Bank",
67 ["pay"] = "Pay",
68 ["refuse"] = "Refuse",
69
70 -- UI Notifications
71 ["enter_valid_amount"] = "Please enter a valid amount",
72 ["enter_reason_text"] = "Please enter a reason",
73
74 -- Client
75 ["unemployed"] = "Unemployed",
76 ["need_job_invoice"] = "You need to have a job to create an invoice",
77 ["invoice_sent"] = "Invoice sent successfully",
78 ["invoice_sent_self"] = "Invoice sent to yourself",
79 ["payment_done"] = "Payment made: %s$",
80 ["insufficient_funds"] = "Insufficient funds",
81 ["invoice_refused"] = "Invoice refused",
82
83 -- Server
84 ["refused_invoice"] = " refused to pay your invoice",
85 ["payment_received"] = "~g~<C>Payment</C>~s~\nYou received %s$ from %s",
86 },
87}
88
89function _U(str, ...) -- Translation function
90 local currLocale = Config.Locale and Config.Locale or "en";
91 local text = Config.Locales[currLocale] and Config.Locales[currLocale][str] or nil;
92
93 if text then
94 return text:format(...);
95 else
96 return 'Translation [' .. str .. '] does not exist for locale [' .. currLocale .. ']'
97 end
98end