Browse Source

Add v0.0.5 automatic client_code generation

main
def 2 weeks ago
parent
commit
666e946833
  1. 2
      VERSION
  2. 41
      backend/app.py
  3. 14
      backend/utils.py
  4. 5
      templates/clients/new.html

2
VERSION

@ -1 +1 @@
0.0.4
0.0.5

41
backend/app.py

@ -1,5 +1,6 @@
from flask import Flask, render_template, request, redirect
from db import get_db_connection
from utils import generate_client_code
app = Flask(
__name__,
@ -11,52 +12,55 @@ app = Flask(
def index():
return """
<h1>OTB Billing</h1>
<p>Version 0.0.4</p>
<p>Version 0.0.5</p>
<p><a href="/clients">Clients</a></p>
"""
@app.route("/dbtest")
def dbtest():
try:
conn = get_db_connection()
cursor = conn.cursor()
cursor.execute("SELECT NOW()")
result = cursor.fetchone()
conn.close()
return f"<h1>Database OK</h1><p>{result[0]}</p>"
except Exception as e:
return f"<h1>Database FAILED</h1><pre>{e}</pre>"
@app.route("/clients")
def clients():
conn = get_db_connection()
cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT * FROM clients ORDER BY created_at DESC")
cursor.execute("SELECT * FROM clients ORDER BY id DESC")
clients = cursor.fetchall()
conn.close()
return render_template("clients/list.html", clients=clients)
@app.route("/clients/new", methods=["GET", "POST"])
@app.route("/clients/new", methods=["GET","POST"])
def new_client():
if request.method == "POST":
client_code = request.form["client_code"]
company_name = request.form["company_name"]
contact_name = request.form["contact_name"]
email = request.form["email"]
phone = request.form["phone"]
conn = get_db_connection()
cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT MAX(id) as last_id FROM clients")
result = cursor.fetchone()
last_number = result["last_id"] if result["last_id"] else 0
client_code = generate_client_code(company_name, last_number)
cursor = conn.cursor()
cursor.execute(
"""
INSERT INTO clients
(client_code, company_name, contact_name, email, phone)
VALUES (%s, %s, %s, %s, %s)
VALUES (%s,%s,%s,%s,%s)
""",
(client_code, company_name, contact_name, email, phone)
)
conn.commit()
conn.close()
@ -64,5 +68,6 @@ def new_client():
return render_template("clients/new.html")
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5050)

14
backend/utils.py

@ -0,0 +1,14 @@
import re
def generate_client_code(company_name, last_number):
# remove non letters
cleaned = re.sub(r'[^A-Za-z]', '', company_name.upper())
# first 5 characters
suffix = cleaned[:5]
number = last_number + 1
code = f"{number:04d}-{suffix}"
return code

5
templates/clients/new.html

@ -10,11 +10,6 @@
<form method="post">
<p>
Client Code<br>
<input name="client_code">
</p>
<p>
Company Name<br>
<input name="company_name">

Loading…
Cancel
Save