Prepare ERP source for Gitea deployment
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
|
||||
import csv
|
||||
import io
|
||||
import re
|
||||
|
||||
PAN_RE = re.compile(r"^[A-Z]{5}[0-9]{4}[A-Z]$")
|
||||
GSTIN_RE = re.compile(r"^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][1-9A-Z]Z[0-9A-Z]$")
|
||||
TAN_RE = re.compile(r"^[A-Z]{4}[0-9]{5}[A-Z]$")
|
||||
MOBILE_RE = re.compile(r"^[6-9][0-9]{9}$")
|
||||
PIN_RE = re.compile(r"^[0-9]{6}$")
|
||||
|
||||
def normalize_text(value):
|
||||
if value is None:
|
||||
return None
|
||||
text = str(value).strip()
|
||||
return text or None
|
||||
|
||||
def normalize_upper(value):
|
||||
value = normalize_text(value)
|
||||
return value.upper() if value else None
|
||||
|
||||
def build_csv(rows, headers):
|
||||
output = io.StringIO()
|
||||
writer = csv.writer(output)
|
||||
writer.writerow(headers)
|
||||
for row in rows:
|
||||
writer.writerow(row)
|
||||
return output.getvalue()
|
||||
Reference in New Issue
Block a user