Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from json_file_io import JsonFileIo
- from Opiti.from_excel.classes.global_inc import registry # TODO KАКВО Е ТОВА ???
- import re
- class ExcelAccData:
- def __init__(self):
- self.acc_data = [] # dict # Сурови данни от Excel -> Списък от речници
- self.acc_data_bycode = {} # Данни от Excel с Ключ "сметка" -> Речник в речник {10: {'code': '10', 'name':..}}
- self.min_top_group_digits = 0 # Минимален брой цифри в топ групата на кода на сметките -> spin_1
- self.max_top_group_digits = 0 # Максимален брой цифри в топ групата на кода на сметките -> spin_1
- self.max_groups = 0 # Максимален брой групи в кода на сметките
- def get_acc_data_bycode(self):
- return self.acc_data_bycode
- def get_min_top_group_digits(self):
- return self.min_top_group_digits
- def get_max_top_group_digits(self):
- return self.max_top_group_digits
- def get_max_groups(self):
- return self.max_groups
- def count_acc_digits(self, code): # Броим групи и цифри в кода на сметките
- groups_in_top_code = re.findall('[0-9]+', code) # '400-20-2' -> ['400', '20', '2']
- len_groups = len(groups_in_top_code) # Брой групи в 'code' -> max за spin_level_2
- len_digits_top_group = len(groups_in_top_code[0]) # Брой цифри в топ групата -> min и max за spin_level_1
- if self.min_top_group_digits == 0: self.min_top_group_digits = len_digits_top_group
- if len_digits_top_group < self.min_top_group_digits: self.min_top_group_digits = len_digits_top_group
- if len_digits_top_group > self.max_top_group_digits: self.max_top_group_digits = len_digits_top_group
- if len_groups > self.max_groups: self.max_groups = len_groups # max level_spin_2
- self.max_groups = self.max_groups - 1
- def read_json(self):
- json_file_io = JsonFileIo(file_name=registry["trial_balance_file_name"])
- self.acc_data = json_file_io.read_content()
- def convert_json_data(self): # TODO МАЙ Е 1-ви метод дето трябва да се пусне от MAIN()
- self.read_json()
- def to_float(value):
- if value is None or value == "":
- return 0.0
- return float(value)
- def to_text(value):
- if value is None or value == "":
- return "0.0"
- return f'{float(value):,.2f}'.replace(',', ' ')
- for acc_row in self.acc_data:
- acc_code = acc_row['code'] # Взимаме 'code' от acc_dada '10'
- if acc_code is None or acc_row == '':
- continue # Прескачаме посления ред на Excel със сумата и паразитни редове
- #self.list_all_code_account.append(acc_code) # TODO -> Списък със всички кодове на сметки
- # self.acc_data_bycode[acc_code] = acc_row # Създаваме ключ 'acc_code'='10' -> {'10': {'code': '10', 'name':}
- self.acc_data_bycode[acc_code] = {
- 'code': acc_row["code"],
- "name": acc_row["name"],
- "open_d": to_float(acc_row["open_d"]),
- "open_c": to_float(acc_row["open_c"]),
- "turn_d": to_float(acc_row["turn_d"]),
- "turn_c": to_float(acc_row["turn_c"]),
- "close_d": to_float(acc_row["close_d"]),
- "close_c": to_float(acc_row["close_c"]),
- "str_open_d": to_text(acc_row["open_d"]),
- "str_open_c": to_text(acc_row["open_c"]),
- "str_turn_d": to_text(acc_row["turn_d"]),
- "str_turn_c": to_text(acc_row["turn_c"]),
- "str_close_d": to_text(acc_row["close_d"]),
- "str_close_c": to_text(acc_row["close_c"]),
- }
- # Да дадем кода на с/та за да го броим (Обща дължина на сметката, брой групи, мин и макс на ТОП група)
- self.count_acc_digits(acc_code) # Подаваме 'code' за да броим Top_grup и count_grups in code
- # self.acc_tree.add_code(acc_code) # Захранваме наследственото дърво в новия клас
- return
- class MappedAccData:
- def __init__(self):
- self.mapped_acc = {}
- def read_json(self):
- print("RRRRRRRRRRRRRRR")
- json_file_io = JsonFileIo(file_name=registry['mapped_account_file_name'])
- self.mapped_acc = json_file_io.read_content()
- if self.mapped_acc is None:
- self.mapped_acc = {}
- print("MappedAccData: self.mapped_acc", self.mapped_acc)
- def get_mapped_acc(self):
- return self.mapped_acc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement