123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- '''Created Jan 25, 2022 Levi'''
- from collections import defaultdict
- import xlsxwriter as xlsw
- from lxml import etree as ET
- from declarations.declaration import Declaration
- class D710(Declaration):
- def __init__(self):
- super().__init__()
- def from_xml(self, fp):
- self.obligs = []
- xml = ET.parse(fp)
- root = xml.getroot()
- def_root = defaultdict(lambda: 0)
- def_root.update(root.attrib)
- self.def_root = def_root
- self.cui = def_root['cui']
- self.den = def_root['den']
- self.month = int(def_root['luna'])
- self.year = int(def_root['an'])
- # print(root.nsmap)
- self.tree = xml.xpath('/x:declaratie710/*', namespaces={'x': 'mfp:anaf:dgti:d710:declaratie:v2'})
- for oblig in self.tree:
- print(oblig.attrib)
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['cod_oblig']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_dat_I']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_dat_C']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_ded_I']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_ded_C']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_plata_I']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_plata_C']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_rest_I']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_rest_C']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_bonif_I']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_bonif_C']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_spons_I']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_spons_C']))
- self.obligs.append(int(defaultdict(lambda: 0, oblig.attrib)['suma_AMEF']))
- # print(self.obligs)
- return self
- @property
- def data(self):
- data = {
- self.cui:
- [
- self.den,
- self.month,
- self.year,
- ]
- }
- self.dict_data = data
- return self.dict_data
- def to_xlsx(self, xl_name, w_sheet_name, files, headers=[], **kwargs):
- book = xlsw.Workbook(xl_name + '.xlsm')
- book.add_vba_project('./vbaProject.bin')
- sheet = book.add_worksheet(w_sheet_name)
- # sheet2 = book.add_worksheet('all')
- row, row2, col = 1, 1, 0
- headformat = book.add_format({'bold': True})
- hcol, hcol2 = 0, 0
- for h in headers:
- sheet.write(1, hcol, h, headformat)
- hcol += 1
- hcol2 += 1
- for file in files:
- d = D710() # obj['type']()
- d = d.from_xml(file)
- for i in d.data:
- row += 1
- sheet.write(row, col, i)
- print(f'write {row}', i)
- data = d.data[i]
- data.extend(d.obligs)
- sheet.write_row(row, 1, data) # d.data[i]
- for k, a in kwargs.items():
- if k == 'autofilter':
- sheet.autofilter(a[0], a[1], 100, 100)
- # sheet2.autofilter(a[0], a[1], 1000, 1000)
- if k == 'freeze':
- sheet.freeze_panes(a[0], a[1])
- # sheet2.freeze_panes(a[0], a[1])
- book.close()
- if __name__ == '__main__':
- headers = ['cod fiscal', 'den', 'luna', 'an', 'oblig', 'dat', 'dat_C', 'ded', 'ded_C', 'plata', 'plata_C', 'rest', 'rest_C', 'bonif', 'spons', 'spons_C', 'AMEF',
- 'oblig', 'dat', 'dat_C', 'ded', 'ded_C', 'plata', 'plata_C', 'rest', 'rest_C', 'bonif', 'spons', 'spons_C', 'AMEF']
- d710 = D710()
- # d.from_xml('../D100_2021_6_17259191_generat.xml')
- d710.to_xlsx('D710', 'data', ['D710_47381114_2022_12.xml'], headers, autofilter=[1, 0], freeze=[2, 1])
- # print(d100.data)
|