|
@@ -2,12 +2,16 @@
|
|
Created on Jun 21, 2018 @author: levente.marton
|
|
Created on Jun 21, 2018 @author: levente.marton
|
|
'''
|
|
'''
|
|
import os
|
|
import os
|
|
-import shutil
|
|
|
|
import re
|
|
import re
|
|
import datetime
|
|
import datetime
|
|
from dataclasses import dataclass
|
|
from dataclasses import dataclass
|
|
|
|
+
|
|
|
|
+import shutil
|
|
|
|
+import pandas as pd
|
|
from pypxlib import Table
|
|
from pypxlib import Table
|
|
|
|
|
|
|
|
+from .db_to_df import Dbtodf
|
|
|
|
+
|
|
@dataclass
|
|
@dataclass
|
|
class Company:
|
|
class Company:
|
|
name: str
|
|
name: str
|
|
@@ -187,6 +191,7 @@ class WinMentor(object):
|
|
:param db_file is firme.db from winment/data folder
|
|
:param db_file is firme.db from winment/data folder
|
|
:param list headers is the fields from firme.db file
|
|
:param list headers is the fields from firme.db file
|
|
:param list|str ban companies excluded from list'''
|
|
:param list|str ban companies excluded from list'''
|
|
|
|
+ headers = headers or ['Denumire', 'CF', 'J', 'Adresa', 'Oras', 'Judet', 'Prescurtat', 'Admin', 'AdminP', 'RCNP', 'Obs']
|
|
if ban:
|
|
if ban:
|
|
if type(ban) is list:
|
|
if type(ban) is list:
|
|
for a_company in self.gen_firms(db_file, headers):
|
|
for a_company in self.gen_firms(db_file, headers):
|
|
@@ -259,56 +264,58 @@ class WinMentor(object):
|
|
if bank_account[2].startswith(' '):
|
|
if bank_account[2].startswith(' '):
|
|
yield bank_account
|
|
yield bank_account
|
|
|
|
|
|
|
|
+ def save_oblig(self, short_name):
|
|
|
|
+ df_dicts = self.get_oblig(short_name)
|
|
|
|
+ # create dfs from dicts
|
|
|
|
+ df_parts = pd.DataFrame(df_dicts[1])
|
|
|
|
+ df_conts = pd.DataFrame(df_dicts[2])
|
|
|
|
+ df_oblig = pd.DataFrame(df_dicts[0])
|
|
|
|
+ df_obligf = pd.DataFrame(df_dicts[3])
|
|
|
|
+ df_obligf = df_obligf.rename(columns={'TipTranz': 'TipDoc'})
|
|
|
|
+ # join oblig<>part<>cont with left join
|
|
|
|
+ df_oblig = pd.merge(df_oblig, df_parts, how='left', left_on='Part', right_on='Cod')
|
|
|
|
+ df_oblig.drop(columns=['Part', 'Cod'], inplace=True)
|
|
|
|
+ df_oblig = pd.merge(df_oblig, df_conts, how='left', left_on='Cont', right_on='Cod')
|
|
|
|
+ df_oblig.drop(columns=['Cont', 'Cod'], inplace=True)
|
|
|
|
+ # join obligf<>party<>cont
|
|
|
|
+ try:
|
|
|
|
+ df_obligf = pd.merge(df_obligf, df_parts, how='left', left_on='Part', right_on='Cod')
|
|
|
|
+ df_obligf.drop(columns=['Part', 'Cod'], inplace=True)
|
|
|
|
+ df_obligf = pd.merge(df_obligf, df_conts, how='left', left_on='Cont', right_on='Cod')
|
|
|
|
+ df_obligf.drop(columns=['Cont', 'Cod'], inplace=True)
|
|
|
|
+ df_obligall = pd.concat([df_oblig, df_obligf])
|
|
|
|
+ except KeyError as exc_:
|
|
|
|
+ df_obligall = df_oblig
|
|
|
|
+ options = ['581', '455', '455.01', '167', '666']
|
|
|
|
+ df_obligall = df_obligall.loc[(~df_obligall['Simbol'].isin(options)) & (df_obligall['Rest'] != 0)]
|
|
|
|
+ print(df_obligall.head(10))
|
|
|
|
+ df_obligall.to_excel('obligatii.xlsx')
|
|
|
|
+
|
|
def get_oblig(self, short_name, db_file='/ObligPI.DB'):
|
|
def get_oblig(self, short_name, db_file='/ObligPI.DB'):
|
|
- oblig_headers = ['Part', 'TipDoc', 'Doc', 'NrDoc', 'DataDoc', 'Valoare', 'Rest']
|
|
|
|
|
|
+ firm_list = self.filtered_firmlist(None)
|
|
|
|
+ oblig_headers = ['Part', 'TipDoc', 'Cont', 'Doc', 'NrDoc', 'DataDoc', 'Valoare', 'Rest']
|
|
|
|
+ obligf_headers = ['Part', 'TipTranz', 'Cont', 'Doc', 'NrDoc', 'DataDoc', 'Valoare', 'Rest']
|
|
nparts_headres = ['Cod', 'Denumire', 'CodFiscal']
|
|
nparts_headres = ['Cod', 'Denumire', 'CodFiscal']
|
|
- short_name = self.winment_path + short_name
|
|
|
|
- nparts_db = self.update_copy(short_name + '/NPART.DB')
|
|
|
|
- oblig_db = self.update_copy(short_name + '/2023_02' + db_file)
|
|
|
|
- with Table(oblig_db) as table: # , Table(nbanks) as nbanks
|
|
|
|
- all_oblig = []
|
|
|
|
- parts = []
|
|
|
|
- tips = []
|
|
|
|
- docs = []
|
|
|
|
- nrs = []
|
|
|
|
- dates = []
|
|
|
|
- values = []
|
|
|
|
- rests = []
|
|
|
|
- for row in table:
|
|
|
|
- if row.TipDoc == 1 and row.Rest != 0:
|
|
|
|
- parts.append(row.Part)
|
|
|
|
- all_oblig.append(parts)
|
|
|
|
- tips.append(row.TipDoc)
|
|
|
|
- all_oblig.append(tips)
|
|
|
|
- docs.append(row.Doc)
|
|
|
|
- all_oblig.append(docs)
|
|
|
|
- nrs.append(row.NrDoc)
|
|
|
|
- all_oblig.append(nrs)
|
|
|
|
- dates.append(row.DataDoc)
|
|
|
|
- all_oblig.append(dates)
|
|
|
|
- values.append(row.Valoare)
|
|
|
|
- all_oblig.append(values)
|
|
|
|
- rests.append(row.Rest)
|
|
|
|
- all_oblig.append(rests)
|
|
|
|
-
|
|
|
|
- with Table(nparts_db) as table: # , Table(nbanks) as nbanks
|
|
|
|
- all_nparts = []
|
|
|
|
- cods = []
|
|
|
|
- names = []
|
|
|
|
- fiscals = []
|
|
|
|
- for row in table:
|
|
|
|
- # if row.TipDoc == 1:
|
|
|
|
- cods.append(row.Cod)
|
|
|
|
- all_nparts.append(cods)
|
|
|
|
- names.append(row.Denumire)
|
|
|
|
- all_nparts.append(names)
|
|
|
|
- fiscals.append(row.CodFiscal)
|
|
|
|
- all_nparts.append(fiscals)
|
|
|
|
-
|
|
|
|
- oblig_dict = dict(zip(oblig_headers, all_oblig))
|
|
|
|
- parts_dict = dict(zip(nparts_headres, all_nparts))
|
|
|
|
- return (oblig_dict, parts_dict)
|
|
|
|
-
|
|
|
|
|
|
+ cont_headers = ['Cod', 'Simbol']
|
|
|
|
+ for firm in firm_list:
|
|
|
|
+ if firm[6] == short_name:
|
|
|
|
+ short_path = self.winment_path + short_name
|
|
|
|
+ # update files
|
|
|
|
+ nparts_db = self.update_copy(short_path + '/NPART.DB')
|
|
|
|
+ oblig_db = self.update_copy(short_path + '/' + self.get_last_month(short_name) + db_file)
|
|
|
|
+ obligf_db = self.update_copy(short_path + '/' + self.get_last_month(short_name) + '/ObligF.DB')
|
|
|
|
+ conts_db = self.update_copy(short_path + '/' + self.get_last_month(short_name) + '/NCONT.DB')
|
|
|
|
+ # convert dbs to dfs
|
|
|
|
+ dbtodf_oblig = Dbtodf(oblig_db, *oblig_headers)
|
|
|
|
+ dbtodf_parts = Dbtodf(nparts_db, *nparts_headres)
|
|
|
|
+ dbtodf_conts = Dbtodf(conts_db, *cont_headers)
|
|
|
|
+ dbtodf_obligf =Dbtodf(obligf_db, *obligf_headers)
|
|
|
|
+ # actual converting
|
|
|
|
+ oblig_dict = dbtodf_oblig.convert_oblig()
|
|
|
|
+ obligf_dict = dbtodf_obligf.convert_obligf()
|
|
|
|
+ parts_dict = dbtodf_parts.convert_parts()
|
|
|
|
+ conts_dict = dbtodf_conts.convert_cont()
|
|
|
|
+ return (oblig_dict, parts_dict, conts_dict, obligf_dict)
|
|
|
|
|
|
def corp_list(self, name=None):
|
|
def corp_list(self, name=None):
|
|
'''returns company list from actual shortnames from winmwnt/data folder
|
|
'''returns company list from actual shortnames from winmwnt/data folder
|