'''Created 9 Jun 2023 Levi''' # import re from datetime import date import pandas as pd from jinja2 import (Environment, PackageLoader) from pymt940.utils import (dig_it, re_check, get_partners, get_last_month) from . import private templates = Environment(loader=PackageLoader('pymt940', 'templates')) template = templates.get_template('body_payments.txt') df_dict = get_partners(private.MZK) fiscal_codes = df_dict['CodFiscal'] mentor_names = df_dict['Denumire'] fiscal_code_dict = {k: v for k, v in zip(mentor_names, fiscal_codes)} payments_df = pd.read_csv(private.MZKCSV, skiprows=14, keep_default_na=False).astype({'Balance': 'object'}) payments_df['Credit'].replace(' ', '', regex=True, inplace=True) payments_df['Debit'].replace(' ', '', regex=True, inplace=True) # income_df = payments_df.copy() payments_df = payments_df.loc[payments_df['Debit'] != ''] # income_df = income_df.loc[income_df['Credit'] != ''] payments_df['Amount'] = payments_df['Debit'].map(str).apply(dig_it).map(abs) payments_df['Name'] = payments_df['Description'].apply(re_check) payments_df['Transaction details'] = payments_df['Description'] payments_df['day'] = payments_df['Transaction date'].str.slice(0, 2) # item_count = payments_df['Debit'].count() # incas_list = list(range(item_count)) # names = [name for name in payments_df['Name']] unique_count = payments_df['day'].nunique() doc_list = list(range(1, unique_count + 1)) days = payments_df['day'].unique().tolist() trans = [] counts = [] cl_names = [] obs = [] for day in days: values = payments_df.loc[payments_df['day'] == day, 'Amount'].tolist() trans.append(values) trans_dict = {k: v for k, v in zip(days, trans)} for day in days: values = payments_df.loc[payments_df['day'] == day, 'Name'].tolist() for i in range(len(values)): if values[i] not in mentor_names: values[i] = '' cl_names.append(values) names_dict = {k: v for k, v in zip(days, cl_names)} for day in days: values = payments_df.loc[payments_df['day'] == day, 'Transaction details'].tolist() obs.append(values) obs_dict = {k: v for k, v in zip(days, obs)} for day in days: value_counts = payments_df['day'].value_counts() count_of_value = value_counts[day] counts.append(count_of_value) # payments = payments_df['Amount'].tolist() # obs = payments_df['Transaction details'].tolist() data = {'AnLucru': date.today().year, 'LunaLucru': get_last_month(0), 'TotalDocumente': unique_count, 'documents': doc_list, 'days': days, 'TotalPlati': counts, 'incasari': counts, 'clients': names_dict, 'cods': fiscal_code_dict, 'amount': trans_dict, 'cont': 401, 'std_client': 'MOZAIK CONSULTING SRL', 'obs': obs_dict } if __name__ == '__main__': # mentor_txt() # print(fiscal_code_dict['REMCO SRL']) # print(days) output = template.render(data) print(output) output_file = 'mentor_plati.txt' with open(output_file, 'w') as text: text.write(output) # remove_indentations(output_file) # print(item_count)