mentor_payments.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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_payments.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. payments_df = pd.read_csv(private.MZKCSV, skiprows=14, keep_default_na=False).astype({'Balance': 'object'})
  15. payments_df['Credit'].replace(' ', '', regex=True, inplace=True)
  16. payments_df['Debit'].replace(' ', '', regex=True, inplace=True)
  17. # income_df = payments_df.copy()
  18. payments_df = payments_df.loc[payments_df['Debit'] != '']
  19. # income_df = income_df.loc[income_df['Credit'] != '']
  20. payments_df['Amount'] = payments_df['Debit'].map(str).apply(dig_it).map(abs)
  21. payments_df['Name'] = payments_df['Description'].apply(re_check)
  22. payments_df['Transaction details'] = payments_df['Description']
  23. payments_df['day'] = payments_df['Transaction date'].str.slice(0, 2)
  24. # item_count = payments_df['Debit'].count()
  25. # incas_list = list(range(item_count))
  26. # names = [name for name in payments_df['Name']]
  27. unique_count = payments_df['day'].nunique()
  28. doc_list = list(range(1, unique_count + 1))
  29. days = payments_df['day'].unique().tolist()
  30. trans = []
  31. counts = []
  32. cl_names = []
  33. obs = []
  34. for day in days:
  35. values = payments_df.loc[payments_df['day'] == day, 'Amount'].tolist()
  36. trans.append(values)
  37. trans_dict = {k: v for k, v in zip(days, trans)}
  38. for day in days:
  39. values = payments_df.loc[payments_df['day'] == day, 'Name'].tolist()
  40. for i in range(len(values)):
  41. if values[i] not in mentor_names:
  42. values[i] = ''
  43. cl_names.append(values)
  44. names_dict = {k: v for k, v in zip(days, cl_names)}
  45. for day in days:
  46. values = payments_df.loc[payments_df['day'] == day, 'Transaction details'].tolist()
  47. obs.append(values)
  48. obs_dict = {k: v for k, v in zip(days, obs)}
  49. for day in days:
  50. value_counts = payments_df['day'].value_counts()
  51. count_of_value = value_counts[day]
  52. counts.append(count_of_value)
  53. # payments = payments_df['Amount'].tolist()
  54. # obs = payments_df['Transaction details'].tolist()
  55. data = {'AnLucru': date.today().year,
  56. 'LunaLucru': get_last_month(0),
  57. 'TotalDocumente': unique_count,
  58. 'documents': doc_list,
  59. 'days': days,
  60. 'TotalPlati': counts,
  61. 'incasari': counts,
  62. 'clients': names_dict,
  63. 'cods': fiscal_code_dict,
  64. 'amount': trans_dict,
  65. 'cont': 401,
  66. 'std_client': 'MOZAIK CONSULTING SRL',
  67. 'obs': obs_dict
  68. }
  69. if __name__ == '__main__':
  70. # mentor_txt()
  71. # print(fiscal_code_dict['REMCO SRL'])
  72. # print(days)
  73. output = template.render(data)
  74. print(output)
  75. output_file = 'mentor_plati.txt'
  76. with open(output_file, 'w') as text:
  77. text.write(output)
  78. # remove_indentations(output_file)
  79. # print(item_count)