ano_eleicao = '2014'
dbschema = f'rede{ano_eleicao}'
table_receitas = f'{dbschema}.receitas_{ano_eleicao}'
table_receitas_candidatos = f'tse2014.receitas_candidatos_{ano_eleicao}'
table_consulta_cand = f'tse2014.consulta_cand_{ano_eleicao}'
table_receitas_comites = f'tse2014.receitas_comites_{ano_eleicao}'
table_receitas_partidos = f'tse2014.receitas_partidos_{ano_eleicao}'

import os
import sys
sys.path.append('../')
import mod_tse as mtse
home = os.environ["HOME"]


mtse.execute_query(f'CREATE SCHEMA IF NOT EXISTS {dbschema};')

"""
Explanation: RECEITAS 2014
Contêm as receitas de candidatos em 2014, comitês e partidos obtidos
em http://www.tse.jus.br/eleicoes/estatisticas/repositorio-de-dados-eleitorais
http://www.tse.jus.br/eleicoes/eleicoes-2018/divulgacandcontas#/estados/2014/680/BR/candidatos
End of explanation
"""


query_create_table_receitas_2014 = f"""
DROP TABLE IF EXISTS {table_receitas} CASCADE;
create table {table_receitas}
(
    tp_registro varchar,
    cod_eleicao varchar NULL,
    desc_eleicao varchar NULL,
    data_e_hora varchar NULL,
    cnpj_prestador_conta varchar NULL,
    sequencial varchar NULL,
    uf varchar NULL,
    tipo_comite_diretorio varchar,
    sigla__partido varchar NULL,
    tipo_do_documento varchar,
    numero_candidato varchar NULL,
    cargo varchar NULL,
    nome_candidato varchar NULL,
    cpf_do_candidato varchar NULL,
    numero_recibo_eleitoral varchar NULL,
    numero_do_documento varchar NULL,
    cpf_cnpj_do_doador varchar NULL,
    nome_do_doador varchar NULL,
    nome_do_doador_receita_federal varchar NULL,
    sigla_ue_doador varchar NULL,
    numero_partido_doador varchar NULL,
    numero_candidato_doador varchar NULL,
    cod_setor_economico_do_doador varchar NULL,
    setor_economico_do_doador varchar NULL,
    data_da_receita varchar NULL,
    valor_receita numeric(18,2),
    tipo_receita varchar NULL,
    fonte_recurso varchar NULL,
    especie_recurso varchar NULL,
    descricao_da_receita varchar NULL,
    cpf_cnpj_do_doador_originario varchar NULL,
    nome_do_doador_originario varchar NULL,
    tipo_doador_originario varchar NULL,
    setor_economico_do_doador_originario varchar NULL,
    nome_do_doador_originario_receita_federal varchar NULL
);

DROP INDEX if exists receitas_sequencial_idx;
CREATE  INDEX receitas_sequencial_idx ON {table_receitas} (sequencial);

DROP INDEX if exists cpf_do_candidato_idx;
CREATE  INDEX cpf_do_candidato_idx ON {table_receitas} (cpf_do_candidato);

DROP INDEX if exists cnpj_prestador_conta_idx;
CREATE  INDEX cnpj_prestador_conta_idx ON {table_receitas} (cnpj_prestador_conta);

DROP INDEX if exists cpf_cnpj_do_doador_idx;
CREATE  INDEX cpf_cnpj_do_doador_idx ON {table_receitas} (cpf_cnpj_do_doador);

DROP INDEX if exists cpf_cnpj_do_doador_originario_idx;
CREATE  INDEX cpf_cnpj_do_doador_originario_idx ON {table_receitas} (cpf_cnpj_do_doador_originario);


"""

mtse.execute_query(query_create_table_receitas_2014)
print("OK")


"""
Explanation: Define uma estrutura de tabela para representar receitas_2014 no banco de dados
End of explanation
"""


query_insert_receitas_candidatos = f"""
insert into {table_receitas}
select 
    'RC',
    cod_eleicao,
    desc_eleicao,
    data_e_hora,
    cnpj_prestador_conta,
    sequencial_candidato,
    uf,
    '#NE',
    sigla__partido,
    '#NE',
    numero_candidato,
    cargo,
    nome_candidato,
    cpf_do_candidato,
    numero_recibo_eleitoral,
    numero_do_documento,
    cpf_cnpj_do_doador,
    nome_do_doador,
    nome_do_doador_receita_federal,
    sigla_ue_doador,
    numero_partido_doador,
    numero_candidato_doador,
    cod_setor_economico_do_doador,
    setor_economico_do_doador,
    data_da_receita,
    valor_receita::numeric,
    tipo_receita,
    fonte_recurso,
    especie_recurso,
    descricao_da_receita,
    cpf_cnpj_do_doador_originario,
    nome_do_doador_originario,
    tipo_doador_originario,
    setor_economico_do_doador_originario,
    nome_do_doador_originario_receita_federal
from {table_receitas_candidatos}
;

update {table_receitas} as r
    set tp_registro = 'RCDO'
where cpf_cnpj_do_doador_originario <> '#NULO'
and tp_registro = 'RC'
;

update {table_receitas} as r
    set tp_registro = 'ROPDO'
where cpf_cnpj_do_doador_originario <> '#NULO'
and tp_registro = 'ROP'
;

"""



mtse.execute_query(query_insert_receitas_candidatos)
print("OK")


"""
Explanation: Insere os dados de receitas de candidatos a partir da tabela receitas candidatos do TSE. Os registros são incluidos com código para indicar a origem da receita:
- 'RC' para indicar receita de candidato de doador direto 
- 'RCDO' para indicar receita de candidato de doador originário
End of explanation
"""


query_insert_receitas_comites = f"""
insert into {table_receitas}
select 
    'ROP',
    cod_eleicao,
    desc_eleicao,
    data_e_hora,
    cnpj_prestador_conta,
    sequencial_comite,
    uf,
    tipo_comite,
    sigla__partido,
    tipo_do_documento,
    '#NE',
    '#NE',
    '#NE',
    '#NE',
    '#NE',
    numero_do_documento,
    cpf_cnpj_do_doador,
    nome_do_doador,
    nome_do_doador_receita_federal,
    sigla_ue_doador,
    numero_partido_doador,
    numero_candidato_doador,
    cod_setor_economico_do_doador,
    setor_economico_do_doador,
    data_da_receita,
    valor_receita::numeric,
    tipo_receita,
    fonte_recurso,
    especie_recurso,
    descricao_da_receita,
    cpf_cnpj_do_doador_originario,
    nome_do_doador_originario,
    tipo_doador_originario,
    setor_economico_do_doador_originario,
    nome_do_doador_originario_receita_federal

from {table_receitas_comites}
;

update {table_receitas} as r
    set tp_registro = 'ROPDO'
where cpf_cnpj_do_doador_originario <> '#NULO'
and tp_registro = 'ROP'
"""

mtse.execute_query(query_insert_receitas_comites)
print("OK") 

"""
Explanation: Atualiza coluna label_recebedor com nome de urna do candidato em consulta_cand_2014 usando o sequencial do candidato como chave de busca
Insere os dados de receitas de comitês a partir da tabela receitas comites do TSE. Os registros são incluidos com código para indicar a origem da receita:
- 'RC'   para indicar receita de comitê de doador direto 
- 'RCDO' para indicar receita de comitê de doador originário
End of explanation
"""


query_insert_receitas_partidos = f"""
insert into {table_receitas}
select   
   'ROP',
    cod_eleicao,
    desc_eleicao,
    data_e_hora,
    cnpj_prestador_conta,
    sequencial_diretorio,
    uf,
    tipo_diretorio,
    sigla__partido,
    tipo_do_documento,
    '#NE',
    '#NE',
    '#NE',
    '#NE',
    '#NE',
    numero_do_documento,
    cpf_cnpj_do_doador,
    nome_do_doador,
    nome_do_doador_receita_federal,
    sigla_ue_doador,
    numero_partido_doador,
    numero_candidato_doador,
    cod_setor_economico_do_doador,
    setor_economico_do_doador,
    data_da_receita,
    valor_receita::numeric,
    tipo_receita,
    fonte_recurso,
    especie_recurso,
    descricao_da_receita,
    cpf_cnpj_do_doador_originario,
    nome_do_doador_originario,
    tipo_doador_originario,
    setor_economico_do_doador_originario,
    nome_do_doador_originario_receita_federal

from {table_receitas_partidos}
;

update {table_receitas} as r
    set tp_registro = 'ROPDO'
where cpf_cnpj_do_doador_originario <> '#NULO'
and tp_registro = 'ROP'
;
"""

mtse.execute_query(query_insert_receitas_partidos)
print("OK")

"""
Explanation: Insere os dados de receitas de partidos a partir da tabela receitas partidos do TSE. Os registros são incluidos com código para indicar a origem da receita:
- 'RC'   para indicar receita de comitê de doador direto 
- 'RCDO' para indicar receita de comitê de doador originário
End of explanation
"""


