invoice.py 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import re
  2. import os
  3. import logging
  4. from time import sleep
  5. from datetime import datetime
  6. from datetime import timedelta
  7. import yagmail
  8. from winmentor import Invoice
  9. from winmentor import headers
  10. from winmentor import WinMentor
  11. tarif = {'COM ELECTRO SRL': {'mail': ['comelectrocj@yahoo.com', 'petrisor.sarca@comelectro-cluj.ro'], 'price': 1500},
  12. 'CHRYSOPEEA BRANDING & DESIGN SRL': {'mail': ['cristina.stan@chrysopeea.com', 'sfeliciacristina@yahoo.com', 'sfeliciacristina0@gmail.com'], 'price': 1400},
  13. 'GAL BANCSI ZOLTAN PFA': {'mail': 'zoltang@gmail.com', 'price': 50},
  14. 'K&K INVESTMENT SRL': {'mail': ['office@kkinv.ro', 'katalin.betegh@kkinv.ro'], 'price': 1300},
  15. 'MATHESITRAD SRL': {'mail': 'tudor.aciu@gmail.com', 'price': 100},
  16. 'WEBS RO SRL': {'mail': 'webs_srl@yahoo.com', 'price': 500},
  17. 'IROD M SRL': {'mail': 'irodm.cluj@gmail.com', 'price': 1700},
  18. 'VMI LOGISTIC CAR SRL': {'mail': 'irimias_laura@yahoo.com', 'price': 250},
  19. 'RENOBI CONSULTING SRL': {'mail': 'office@robeni.ro', 'price': 200},
  20. 'ROBENI TRANS SRL': {'mail': 'office@robeni.ro', 'price': 200},
  21. 'PANGEA TOURIMPEX SRL': {'mail': 'office@robeni.ro', 'price': 200},
  22. 'TAURUS IMOBILIARE SRL': {'mail': 'cotinghiu_dan@yahoo.com', 'price': 300}}
  23. # tarif = {'COM ELECTRO SRL': {'mail': 'deeejas@yandex.com', 'price': 1000}}
  24. exclude = ['RENOBI CONSULTING SRL', 'ROBENI TRANS SRL', 'PANGEA TOURIMPEX SRL']
  25. tarif2 = tarif.copy()
  26. for key in exclude:
  27. if key in tarif2:
  28. del tarif2[key]
  29. logging.basicConfig(filename='winmentor/generated_files/inv_number',
  30. format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p', level=logging.INFO)
  31. mentor = WinMentor()
  32. office = mentor.firmlist(headers=headers)
  33. fact = Invoice('RO6110398', office)
  34. fact.add_bank_account('RO90BTRL01301202926963XX')
  35. fact.add_net('www.taxwizard.ro, claudia.conta.ab@gmail.com')
  36. # month_1 = (datetime.now() - timedelta(weeks=12)).month
  37. month_2 = (datetime.now() - timedelta(weeks=4)).month
  38. if datetime.now().month == 1:
  39. year_ = datetime.now().year - 1
  40. else:
  41. year_ = datetime.now().year
  42. service = 'servicii de contabilitate perioada {:02d}-{}'
  43. letter = yagmail.SMTP(user='claudia.conta.ab@gmail.com')
  44. for entity in sorted(office, key=lambda company: company.name):
  45. if entity.name in tarif2:
  46. with open('winmentor/generated_files/inv_number') as logged:
  47. item = logged.readlines()
  48. sep = re.search('-', item[-1])
  49. invNum = int(item[-1][sep.end():-1])
  50. invNum += 1
  51. logging.info(f'inv:{entity.name}_{entity.vat_code}-{invNum}')
  52. sleep(0.5)
  53. fact.gen_file(entity, 'my-logo.png', 'http://www.taxwizard.ro', tarif2, invNum,
  54. service.format(month_2, year_))
  55. for file in os.listdir(fact.PATH_PDF):
  56. # print(i[0] + '_' + str(datetime.now().month) + '_' + str(datetime.now().year) + '_' + str(invNum))
  57. # if re.search(i.name + '_' + str(datetime.now().month) + '_' + str(datetime.now().year) + '_' + str(invNum), f): # str(i[0] + '_' + datetime.now().month + '_' + datetime.now().year + '_' + invNum)
  58. if re.search(entity.name.title() + ' ' + str(datetime.now().date()), file):
  59. print('match found', file)
  60. sleep(0.5)
  61. subj = f'Factura {entity.name.title()} {datetime.now().date()}'
  62. body = f'Regasiti in atasament factura de contabilitate pentru {entity.name.title()} nr. {invNum} din {datetime.now().date()}'
  63. letter.send(to=entity.mail, subject=subj, contents=body, attachments=fact.PATH_PDF + '/' + file)
  64. sleep(0.5)
  65. root, archives = os.walk('winmentor/generated_files')
  66. # print(root)
  67. for file in filter(lambda f: f.endswith('.pdf'), os.listdir('winmentor/generated_files')):
  68. os.rename(os.path.join(root[0], file), os.path.join(archives[0], file))
  69. print('files archived')