Spaces:
Sleeping
Sleeping
from shutil import copyfileobj | |
from pandas import read_excel, DataFrame | |
from os import listdir, remove, mkdir, system | |
from os.path import isdir | |
from loguru import logger | |
class FileProcess: | |
def __init__(self, files, root_dir) -> None: | |
self.files = files | |
self.data_store_path = f"{root_dir}/sabiduria_tool_api/data/" | |
self.root_dir = root_dir | |
self.final_data = { | |
"Ad": [], | |
"Soyad": [], | |
"TC": [], | |
"ToplamMatrah": [], | |
"Brut": [], | |
"EnAzMatrah": [], | |
"OdenecekTutar": [], | |
"DamgaVergisiKesintiToplami": [], | |
"GelirVergisiKesintiToplami": [], | |
"IstisnaEdilenGelirVergisiToplami": [], | |
"GorevSayisi": [], | |
"EnAzMatrahDosyasi": [], | |
"GorevYerleri": [] | |
} | |
async def save_files(self) -> None: | |
if isdir(self.data_store_path): | |
old_files = self.get_files() | |
for o_file in old_files: | |
remove(f"{self.data_store_path}{o_file}") | |
else: | |
mkdir(self.data_store_path) | |
for file in self.files: | |
with open(f"{self.data_store_path}{file.filename}", "wb") as destination: | |
copyfileobj(file.file, destination) | |
def get_files(self) -> list: | |
all_files = listdir(f"{self.data_store_path}") | |
return all_files | |
def preprocess_files(self): | |
all_files = self.get_files() | |
for file in all_files: | |
values = [] | |
selected_data = read_excel(f"{self.data_store_path}{file}", skiprows=9) | |
del selected_data[selected_data.columns[0]] | |
selected_data.rename(columns={'Unnamed: 17':'Kesintiler Toplamı'}, inplace=True) | |
selected_data.rename(columns={'Unnamed: 18':'Ödenecek Tutar'}, inplace=True) | |
for i, sira_no in enumerate(selected_data["Sıra No"]): | |
if type(sira_no) != int: | |
break | |
values.append(selected_data.iloc[[i]].values[0]) | |
temp_df = DataFrame(values, columns=selected_data.columns.values) | |
logger.info(f"FILE SAVED TO: {self.data_store_path}{file}") | |
temp_df.to_excel(f"{self.data_store_path}{file}", sheet_name="page1") | |
def init_data(self): | |
all_file = self.get_files() | |
for file in all_file: | |
file_data = read_excel(f"{self.data_store_path}{file}") | |
file_name = file.split(".")[0] | |
for i, tc in enumerate(file_data['Tc. No']): | |
# init data | |
if tc not in self.final_data["TC"]: | |
self.final_data["TC"].append(tc) | |
self.final_data["Ad"].append(file_data["Adı"][i]) | |
self.final_data["Soyad"].append(file_data["Soyadı"][i]) | |
self.final_data["EnAzMatrah"].append(file_data["Aylık Vergi Matrahı (Kümülatif)**"][i]) | |
self.final_data["Brut"].append(file_data["Brüt Ücret ****"][i]) | |
self.final_data["ToplamMatrah"].append(file_data["Aylık Vergi Matrahı (Kümülatif)**"][i] + file_data["Brüt Ücret ****"][i]) | |
self.final_data["OdenecekTutar"].append(file_data["Ödenecek Tutar"][i]) | |
self.final_data["DamgaVergisiKesintiToplami"].append(file_data["Damga Vergisi Kesintisi"][i]) | |
self.final_data["GelirVergisiKesintiToplami"].append(file_data["Gelir Vergisi Kesintisi"][i]) | |
self.final_data["IstisnaEdilenGelirVergisiToplami"].append(file_data["İstisna Edilen Gelir Vergisi"][i]) | |
self.final_data["GorevSayisi"].append(1) | |
self.final_data["GorevYerleri"].append(file_name + ", ") | |
self.final_data["EnAzMatrahDosyasi"].append(file_name) | |
# find lower basis | |
else: | |
id = self.final_data["TC"].index(tc) | |
if self.final_data["EnAzMatrah"][id] > file_data["Aylık Vergi Matrahı (Kümülatif)**"][i]: | |
self.final_data["EnAzMatrah"][id] = file_data["Aylık Vergi Matrahı (Kümülatif)**"][i] | |
self.final_data["EnAzMatrahDosyasi"][id] = file_name | |
self.final_data["Brut"][id] = file_data["Brüt Ücret ****"][i] | |
self.final_data["ToplamMatrah"][id] = file_data["Aylık Vergi Matrahı (Kümülatif)**"][i] + file_data["Brüt Ücret ****"][i] | |
self.final_data["OdenecekTutar"][id] = file_data["Ödenecek Tutar"][i] | |
self.final_data["DamgaVergisiKesintiToplami"][id] = file_data["Damga Vergisi Kesintisi"][i] | |
self.final_data["GelirVergisiKesintiToplami"][id] = file_data["Gelir Vergisi Kesintisi"][i] | |
self.final_data["IstisnaEdilenGelirVergisiToplami"][id] = file_data["İstisna Edilen Gelir Vergisi"][i] | |
self.final_data["GorevYerleri"][id] = file_name + ", " | |
async def calculate(self): | |
await self.save_files() | |
self.preprocess_files() | |
self.init_data() | |
all_files = self.get_files() | |
for file in all_files: | |
file_data = read_excel(f"{self.data_store_path}{file}") | |
file_name = file.split(".")[0] | |
for i, tc in enumerate(file_data['Tc. No']): | |
id = self.final_data["TC"].index(tc) | |
if file_name != self.final_data["EnAzMatrahDosyasi"][id]: | |
self.final_data["Brut"][id] += file_data["Brüt Ücret ****"][i] | |
self.final_data["ToplamMatrah"][id] += file_data["Brüt Ücret ****"][i] | |
self.final_data["OdenecekTutar"][id] += file_data["Ödenecek Tutar"][i] | |
self.final_data["DamgaVergisiKesintiToplami"][id] += file_data["Damga Vergisi Kesintisi"][i] | |
self.final_data["GelirVergisiKesintiToplami"][id] += file_data["Gelir Vergisi Kesintisi"][i] | |
self.final_data["IstisnaEdilenGelirVergisiToplami"][id] += file_data["İstisna Edilen Gelir Vergisi"][i] | |
self.final_data["GorevSayisi"][id] += 1 | |
self.final_data["GorevYerleri"][id] += file_name + ", " | |
del all_files | |
clean_data = DataFrame(self.final_data) | |
del self.final_data | |
clean_data.to_excel(f"{self.root_dir}/output.xlsx", sheet_name="page1") | |