54a5492a8dfdeca10135faa4273a8681e607f78d
[cascardo/irpf-gui.git] / src / rendimentoPJ.py
1 # coding=utf-8
2 #
3 #   Copyright 2013 Thadeu Lima de Souza Cascardo <cascardo@cascardo.info>
4 #
5 #   This program is free software: you can redistribute it and/or modify
6 #   it under the terms of the GNU General Public License as published by
7 #   the Free Software Foundation, either version 3 of the License, or
8 #   (at your option) any later version.
9 #
10 #   This program is distributed in the hope that it will be useful,
11 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #   GNU General Public License for more details.
14 #
15 #   You should have received a copy of the GNU General Public License
16 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 # -*- mode: python; encoding: utf-8; -*-
18 import xml.dom.minidom
19
20 class RendimentoPJ:
21     def __init__(self, el = None):
22         if el == None:
23             self.rendimento = xml.dom.minidom.Element("item")
24         else:
25             self.rendimento = el
26
27     def get_attr(self, attr):
28         if attr in self.rendimento.attributes.keys():
29             return self.rendimento.attributes[attr].nodeValue
30         return None
31
32     def set_attr(self, attr, val):
33         self.rendimento.setAttribute(attr, val)
34
35 class RendimentosPJ:
36     def __init__(self, contribuinte):
37         self.contribuinte = contribuinte
38         self.rend_PJ = self.contribuinte.dados.getElementsByTagName("rendPJ")[0]
39         self.colecao = self.rend_PJ.getElementsByTagName("colecaoRendPJTitular")[0]
40         self.items = []
41
42         for i in self.colecao.getElementsByTagName("item"):
43             self.items.append(RendimentoPJ(i))
44
45     def _get_attr(self, el, attr):
46         if attr in el.attributes.keys():
47             return el.attributes[attr].nodeValue
48         return None
49
50     def _set_attr(self, el, attr, val):
51         el.attributes[attr].nodeValue = val
52
53     def get_colecao(self, attr):
54         return self._get_attr(self.colecao, attr)
55
56     def set_colecao(self, attr, val):
57         self._set_attr(self.colecao, attr, val)
58
59     def add_item(self, item):
60         self.items.append(item)
61         self.colecao.appendChild(item.rendimento)
62
63     def new_item(self):
64         item = RendimentoPJ(self.colecao.ownerDocument.createElement("item"))
65         self.add_item(item)
66         return item
67
68     def remove_item(self, i):
69         self.items.pop(i)
70         els = self.colecao.getElementsByTagName("item")
71         self.colecao.removeChild(els[i])
72
73 if __name__ == '__main__':
74     import sys
75     from contribuinte import Contribuinte
76
77     contribuinte = Contribuinte(sys.argv[1])
78     rendimentos = RendimentosPJ(contribuinte)
79     print "maior fonte pagadora: " + rendimentos.get_colecao("niMaiorFontePagadora")
80     print "total rendimentos: " + rendimentos.get_colecao("totaisRendRecebidoPJ")
81
82     for i in rendimentos.items:
83         print i.get_attr("nomeFontePagadora") + " " + i.get_attr("rendRecebidoPJ")
84
85 # vim:tabstop=4:expandtab:smartindent