File size: 6,448 Bytes
d6a1d78
 
5e1537f
d6a1d78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1fa0332
 
 
 
 
 
d6a1d78
1fa0332
 
d6a1d78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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")