Enhancements

This commit is contained in:
2026-06-25 11:19:08 +02:00
parent 8804d21c32
commit 9343657d20
62 changed files with 10210 additions and 976 deletions
+33 -19
View File
@@ -1,18 +1,25 @@
# Importing libraries
from numpy import genfromtxt
#from numpy import genfromtxt
import pandas as pd
from time import time
from datetime import datetime
from datetime import date, datetime
from models import models
from models.database import engine, SessionLocal
import os, glob
from pytz import timezone
def Load_Data(file_name):
""" def Load_Data(file_name):
#data = genfromtxt(file_name, delimiter=';', skip_header=1, converters={0: lambda s: str(s)})
#str2date = lambda x: datetime.strptime(x, '%d-%m-%y')
data = genfromtxt(file_name, delimiter=';', dtype=None, skip_header=1, encoding='utf-8') #
return data.tolist()
"""
#use pandas instead of genfromtxt for better performance and handling of csv files
def Load_Data(file_name):
df = pd.read_csv(file_name, delimiter=',', encoding='utf-8')
return df.values.tolist()
if __name__ == "__main__":
t = time()
@@ -25,24 +32,31 @@ if __name__ == "__main__":
source_path = os.path.join(home_directory, "OneDrive", "Dokumente", "SUST", "import_csv", "*_out.csv")
for source_csv in glob.glob(source_path):
#source_csv = os.path.join(home_directory, "OneDrive", "Dokumente", "SUST", "UmsatzListe_AT493443700000113407_20250529_091945_mod_out.csv")
data = Load_Data(source_csv)
datas = Load_Data(source_csv)
tz = timezone('UTC') # Replace with your desired timezone
dt = datetime.strptime(data[8], '%d.%m.%Y %H:%M:%S:%f') # type: ignore
ts_timestamp = tz.localize(dt)
for data in datas:
dt = datetime.strptime(data[8], '%d.%m.%Y %H:%M:%S:%f') # type: ignore
ts_timestamp = tz.localize(dt)
record = models.Payments_CSV(**{
'pc_valuta_date' : datetime.strptime(data[0], '%d.%m.%Y').date(),
'pc_client' : data[1],
'pc_reference' : data[2],
'pc_intended' : data[3],
'pc_iban' : data[4],
'pc_entry_date' : datetime.strptime(data[5], '%d.%m.%Y').date(),
'pc_amount' : float(data[6]),
'pc_currency' : data[7],
'pc_timestamp' : ts_timestamp
})
db.add(record) #Add all the records
# Parse year - data[9] is now the year (from convert_payment_export_csv.py)
# Convert year string to a valid date (January 1st of that year)
year_value = data[9] # This is '2025' from the CSV
pc_year = date(int(year_value), 1, 1) # Convert to date: 2025-01-01
#TODO: Check if amout is valid!
record = models.Payments_CSV(**{
'pc_valuta_date' : datetime.strptime(data[0], '%d.%m.%Y').date(),
'pc_client' : data[1],
'pc_reference' : data[2],
'pc_intended' : data[3],
'pc_iban' : data[4],
'pc_entry_date' : datetime.strptime(data[5], '%d.%m.%Y').date(),
'pc_amount' : float(data[6]),
'pc_currency' : data[7],
'pc_timestamp' : ts_timestamp,
'pc_year' : pc_year
})
db.add(record) #Add all the records
try:
db.commit() #Attempt to commit all the records