-
Notifications
You must be signed in to change notification settings - Fork 0
/
igor.py
115 lines (77 loc) · 3.74 KB
/
igor.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
from collections import defaultdict
from pprint import pprint
# region dados
backoffice_data = (
('BO_SONGCODE', 'SONG_TITLE', 'SONG_OWNERS', 'ROYALTIES_TO_BR_PAID_$'),
(4836078, 'UTOPIA', 'PAULO LEANDRO FERNANDES SOARES / APARECIDO DE TOLEDO, VALTENIR / MALI', 800),
(4836078, 'UTOPIA', 'PAULO LEANDRO FERNANDES SOARES / APARECIDO DE TOLEDO, VALTENIR / MALI', 200),
#(4836078, 'UTOPIA', 'PAULO LEANDRO FERNANDES SOARES / APARECIDO DE TOLEDO, VALTENIR / MALI', 1000),
(4836079, 'PIA', 'JOAO FERNANDES SOARES / ANTONIO DE TOLEDO, VALTENIR / PEDRO', 200),
(4836077, 'PIANO', 'MALI / PEDRO', 500),
)
contratos = (
('Clientes', 'Taxa Contrato', 'Taxa Cliente'),
('Editora A', 10, 20),
)
direitos = (
('Representante', 'Código Música', 'Título Música', 'Autor', 'Percentual'),
('Editora A', 4836078, 'UTOPIA', 'PAULO LEANDRO FERNANDES SOARES', 10),
('Editora A', 4836078, 'UTOPIA', 'APARECIDO DE TOLEDO, VALTENIR', 30),
('' , 4836078, 'UTOPIA', 'MALI', 60),
#('Editora A', 4836077, 'PIANO', 'MALI', 50),
#('Editora A', 4836077, 'PIANO', 'PEDRO', 50),
)
# endregion
relatorio_esperado = (
('Representante', 'Autor', 'Total', 'Tx Contrato', 'TT Editora', 'Tx Editora', 'R$ Autor'),
('Editora A' , 'PAULO LEANDRO FERNANDES SOARES', 250, 25, 225, 45, 180),
('Editora A' , 'APARECIDO DE TOLEDO, VALTENIR', 250, 25, 225, 45, 180),
('Editora A' , 'MALI', 500, 50, 450, 90, 360),
)
def calcula_total_por_musica(data):
total = defaultdict(int)
for pagamento in data[1:]:
total[(pagamento[0:3])] += pagamento[3]
#pprint(total)
return total
def calcula_direitos_por_representante_musica_artista(total_por_musica, direitos):
resp_ok = defaultdict(float)
musicas_faltam_cadastro = []
dict_direitos = defaultdict(list)
for direito in direitos[1:]:
dict_direitos[direito[1]] += (direito,)
#pprint(dict_direitos)
for musica, total in total_por_musica.items():
#pprint(musica)
direitos = dict_direitos[musica[0]]
if not direitos:
musicas_faltam_cadastro.append((musica, total))
else:
for direito in dict_direitos[musica[0]]:
#pprint(f"direito: {direito}")
editora = direito[0]
autor = direito[3]
autor_percentual = direito[4]
resp_ok[(editora, autor)] += total * autor_percentual / 100
#pprint(resp)
print("miscas que faltam cadastro")
pprint(musicas_faltam_cadastro)
return resp_ok, musicas_faltam_cadastro
def gera_relatorio(direitos_bruto, contratos):
resp = []
contratos_dict = dict()
for contrato in contratos[1:]:
contratos_dict[contrato[0]] = (contrato[1], contrato[2])
for (representante, autor), valor_tt in direitos_bruto.items():
pct_contrato, pct_editora = contratos_dict[representante]
tx_contrato = valor_tt * pct_contrato /100
tt_editora = valor_tt - tx_contrato
tx_editora = tt_editora * pct_editora / 100
vlr_autor = tt_editora - tx_editora
resp += ((representante, autor, valor_tt, tx_contrato, tt_editora, tx_editora, vlr_autor),)
print("\n\n Relatorio")
pprint(resp)
return resp
total_recebido_por_musica = calcula_total_por_musica(backoffice_data)
direitos_bruto, musicas_faltam_cadastro = calcula_direitos_por_representante_musica_artista(total_recebido_por_musica, direitos)
relatorio = gera_relatorio(direitos_bruto, contratos)