mentor_incomes.py 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. '''Created 9 Jun 2023 Levi'''
  2. # import re
  3. from datetime import date
  4. import pandas as pd
  5. from jinja2 import (Environment, PackageLoader)
  6. from pymt940.utils import (dig_it, re_check, get_partners, get_last_month)
  7. from . import private
  8. templates = Environment(loader=PackageLoader('pymt940', 'templates'))
  9. template = templates.get_template('body_incomes.txt')
  10. df_dict = get_partners(private.MZK)
  11. fiscal_codes = df_dict['CodFiscal']
  12. mentor_names = df_dict['Denumire']
  13. fiscal_code_dict = {k: v for k, v in zip(mentor_names, fiscal_codes)}
  14. # parts_df = pd.DataFrame(df_dict)
  15. payments_df = pd.read_csv(private.MZKCSV, skiprows=14, keep_default_na=False).astype({'Balance': 'object'})
  16. payments_df['Credit'].replace(' ', '', regex=True, inplace=True)
  17. payments_df['Debit'].replace(' ', '', regex=True, inplace=True)
  18. income_df = payments_df.copy()
  19. # payments_df = payments_df.loc[payments_df['Debit'] != '']
  20. income_df = income_df.loc[income_df['Credit'] != '']
  21. income_df['Amount'] = income_df['Credit'].map(str).apply(dig_it)
  22. income_df['Name'] = income_df['Description'].apply(re_check)
  23. income_df['Transaction details'] = income_df['Description']
  24. income_df['day'] = income_df['Transaction date'].str.slice(0, 2)
  25. # item_count = income_df['Credit'].count()
  26. # incas_list = list(range(item_count))
  27. # names = [name for name in income_df['Name']]
  28. unique_count = income_df['day'].nunique()
  29. doc_list = list(range(1, unique_count + 1))
  30. days = income_df['day'].unique().tolist()
  31. trans = []
  32. counts = []
  33. cl_names = []
  34. obs = []
  35. for day in days:
  36. values = income_df.loc[income_df['day'] == day, 'Amount'].tolist()
  37. trans.append(values)
  38. trans_dict = {k: v for k, v in zip(days, trans)}
  39. for day in days:
  40. values = income_df.loc[income_df['day'] == day, 'Name'].tolist()
  41. for i in range(len(values)):
  42. if values[i] not in mentor_names:
  43. values[i] = ''
  44. cl_names.append(values)
  45. names_dict = {k: v for k, v in zip(days, cl_names)}
  46. for day in days:
  47. values = income_df.loc[income_df['day'] == day, 'Transaction details'].tolist()
  48. obs.append(values)
  49. obs_dict = {k: v for k, v in zip(days, obs)}
  50. for day in days:
  51. value_counts = income_df['day'].value_counts()
  52. count_of_value = value_counts[day]
  53. counts.append(count_of_value)
  54. # payments = income_df['Amount'].tolist()
  55. # obs = income_df['Transaction details'].tolist()
  56. # selected_value = income_df.loc[income_df['Name'] == 'BLOOM CREATIVE ART SRL', 'day'].iloc[0]
  57. data = {'AnLucru': date.today().year,
  58. 'LunaLucru': get_last_month(0),
  59. 'TotalDocumente': unique_count,
  60. 'documents': doc_list,
  61. 'days': days,
  62. 'TotalIncasari': counts,
  63. 'incasari': counts,
  64. 'clients': names_dict,
  65. 'cods': fiscal_code_dict,
  66. 'amount': trans_dict,
  67. 'cont': '411.01',
  68. 'std_client': 'MOZAIK CONSULTING SRL',
  69. 'obs': obs_dict
  70. }
  71. if __name__ == '__main__':
  72. # mentor_txt()
  73. # print(fiscal_code_dict['REMCO SRL'])
  74. # print(days)
  75. output = template.render(data)
  76. print(output)
  77. output_file = 'mentor_incasari.txt'
  78. with open(output_file, 'w') as text:
  79. text.write(output)
  80. # remove_indentations(output_file)
  81. # print(item_count)
  82. # print(income_df['day'])