diff --git a/docs/index.md b/docs/index.md
index dbb02c71..fa001bc1 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,4 +1,5 @@
+<<<<<<< HEAD
# AutomaTEC
![logo-finatec](assets/../planejamento/assets/logo.png)
@@ -6,6 +7,15 @@
- **Descrição:** Automação de prestação de contas da FINATEC
- **Resultados esperados:** Sistema de preenchimento de planilhas automático para o processo de prestação de contas
+=======
+# Pipeline Finatec
+![logo-finatec](https://www.finatec.org.br/wp-content/themes/finatec/images/empty.png)
+
+## Sobre
+- **Descrição:** Pipeline de prestação de contas da FINATEC
+
+- **Resultados esperados:** Sistema para visualização do fluxo de prestação de contas
+>>>>>>> parent of fba4d38 (refact: limpando ambiente de desenvolvimento)
- **Habilidades necessárias/preferenciais:** Lógica de programação
@@ -21,32 +31,61 @@
Foto
Nome/Github
+<<<<<<< HEAD
+=======
+ E-mail
+>>>>>>> parent of fba4d38 (refact: limpando ambiente de desenvolvimento)
Papel
Hemanoel Brito
+<<<<<<< HEAD
Scrum Master Garantir os rituais como sprint, review e a daily. Todo mundo commitando no git, etc.Líder Backend Garantir a organização e entrega das atividades da equipe backend.
+=======
+ hemanoel003@gmail.com
+ Devops/Arquitetura Estudando e garantindo que a automação do projeto esta adequada.
+>>>>>>> parent of fba4d38 (refact: limpando ambiente de desenvolvimento)
Isaac Lucas
+<<<<<<< HEAD
Líder Técnico Estudo prévio para passar o conhecimento (garimpando tutoriais, treinamentos, documentando decisões técnicas)Líder Frontend Garantir a organização e entrega das atividades da equipe frontend.
+=======
+ isaaclucas.bezerra@gmail.com
+ Líder Técnico Estudo prévio para passar o conhecimento (garimpando tutoriais, treinamentos, documentando decisões técnicas)
+>>>>>>> parent of fba4d38 (refact: limpando ambiente de desenvolvimento)
Jennifer Costa
+<<<<<<< HEAD
Community Manager Garantir a comunicação com externa do projeto - Gitpage, front...Membro Frontend Ajudar na organização, produção e entrega das atividades da equipe frontend.
+=======
+ cansancaojennifer@gmail.com
+ Scrum Master Garantir os rituais como sprint, review e a daily. Todo mundo commitando no git, etc.
+>>>>>>> parent of fba4d38 (refact: limpando ambiente de desenvolvimento)
Pedro Barbosa
+<<<<<<< HEAD
Devops/Arquitetura Estudando e garantindo que a automação do projeto esta adequada.Líder Design Garantir a organização e entrega das atividades da equipe de design (protótipo, guia de estilo...).Membro Backend Ajudar na organização, produção e entrega das atividades da equipe frontend.
+=======
+ pedrobarbosaocb@gmail.com
+ Product Manager Detalhamento do Roadmap - Garantir a ligação com as issues, organização... Marcar reuniões com os stakeholders
+>>>>>>> parent of fba4d38 (refact: limpando ambiente de desenvolvimento)
Raquel Eucaria
+<<<<<<< HEAD
Product Manager Detalhamento do Roadmap - Garantir a ligação com as issues, organização... Marcar reuniões com os stakeholders. Líder Banco de Dados Estudando e garantindo a estrutura, modelagem, requisição adequada e demais necessidades envolvendo o BD juntamente com o backend. Membro Design Ajudar na organização, produção e entrega das atividades da equipe de design (protótipo, guia de estilo...). Membro Backend Ajudar na organização, produção e entrega das atividades da equipe Backend.
+=======
+ raqueleucaria@gmail.com
+ Community Manager Garantir a comunicação com externa do projeto - Gitpage, front...
+>>>>>>> parent of fba4d38 (refact: limpando ambiente de desenvolvimento)
@@ -60,6 +99,9 @@
| ---- | ------ | ----------| ------- | --------- |
| 10/07/2023 | 1.0 | Criação do documento | [Raquel](https://github.com/raqueleucaria) | [Pedro](https://github.com/pedrobarbosaocb) |
| 02/08/2023 | 2.0 | Papéis dos membros | [Raquel](https://github.com/raqueleucaria) | [Pedro](https://github.com/pedrobarbosaocb) |
+<<<<<<< HEAD
| 23/08/2023 | 3.0 | Atualização do nome do projeto e papéis dos membros | [Raquel](https://github.com/raqueleucaria) | [Pedro](https://github.com/pedrobarbosaocb) |
+=======
+>>>>>>> parent of fba4d38 (refact: limpando ambiente de desenvolvimento)
diff --git a/docs/planejamento/escopo.md b/docs/planejamento/escopo.md
index b285fb65..ad487cac 100644
--- a/docs/planejamento/escopo.md
+++ b/docs/planejamento/escopo.md
@@ -40,7 +40,11 @@ A definir com a FINATEC dia 09/08
A definir com a FINATEC dia 09/08
+<<<<<<< HEAD
# Fluxograma
+=======
+## Fluxograma
+>>>>>>> parent of fba4d38 (refact: limpando ambiente de desenvolvimento)
![fluxograma](assets/fluxograma.png)
## Histórico de Versão
diff --git a/docs/planejamento/heatmap.md b/docs/planejamento/heatmap.md
new file mode 100644
index 00000000..e69de29b
diff --git a/docs/planejamento/metodologia.md b/docs/planejamento/metodologia.md
new file mode 100644
index 00000000..e69de29b
diff --git a/project/app/__init__.py b/project/app/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/project/app/__pycache__/__init__.cpython-310.pyc b/project/app/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 00000000..485edf8e
Binary files /dev/null and b/project/app/__pycache__/__init__.cpython-310.pyc differ
diff --git a/project/app/__pycache__/__init__.cpython-311.pyc b/project/app/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 00000000..1b2ff895
Binary files /dev/null and b/project/app/__pycache__/__init__.cpython-311.pyc differ
diff --git a/project/app/__pycache__/admin.cpython-310.pyc b/project/app/__pycache__/admin.cpython-310.pyc
new file mode 100644
index 00000000..91891dcf
Binary files /dev/null and b/project/app/__pycache__/admin.cpython-310.pyc differ
diff --git a/project/app/__pycache__/admin.cpython-311.pyc b/project/app/__pycache__/admin.cpython-311.pyc
new file mode 100644
index 00000000..0a7faa3a
Binary files /dev/null and b/project/app/__pycache__/admin.cpython-311.pyc differ
diff --git a/project/app/__pycache__/apps.cpython-310.pyc b/project/app/__pycache__/apps.cpython-310.pyc
new file mode 100644
index 00000000..aabcd389
Binary files /dev/null and b/project/app/__pycache__/apps.cpython-310.pyc differ
diff --git a/project/app/__pycache__/apps.cpython-311.pyc b/project/app/__pycache__/apps.cpython-311.pyc
new file mode 100644
index 00000000..26e6a0f6
Binary files /dev/null and b/project/app/__pycache__/apps.cpython-311.pyc differ
diff --git a/project/app/__pycache__/models.cpython-310.pyc b/project/app/__pycache__/models.cpython-310.pyc
new file mode 100644
index 00000000..9a780135
Binary files /dev/null and b/project/app/__pycache__/models.cpython-310.pyc differ
diff --git a/project/app/__pycache__/models.cpython-311.pyc b/project/app/__pycache__/models.cpython-311.pyc
new file mode 100644
index 00000000..6eada88f
Binary files /dev/null and b/project/app/__pycache__/models.cpython-311.pyc differ
diff --git a/project/app/__pycache__/urls.cpython-310.pyc b/project/app/__pycache__/urls.cpython-310.pyc
new file mode 100644
index 00000000..83d53aad
Binary files /dev/null and b/project/app/__pycache__/urls.cpython-310.pyc differ
diff --git a/project/app/__pycache__/urls.cpython-311.pyc b/project/app/__pycache__/urls.cpython-311.pyc
new file mode 100644
index 00000000..4a8e7ef6
Binary files /dev/null and b/project/app/__pycache__/urls.cpython-311.pyc differ
diff --git a/project/app/__pycache__/views.cpython-310.pyc b/project/app/__pycache__/views.cpython-310.pyc
new file mode 100644
index 00000000..76c36902
Binary files /dev/null and b/project/app/__pycache__/views.cpython-310.pyc differ
diff --git a/project/app/__pycache__/views.cpython-311.pyc b/project/app/__pycache__/views.cpython-311.pyc
new file mode 100644
index 00000000..42d3305c
Binary files /dev/null and b/project/app/__pycache__/views.cpython-311.pyc differ
diff --git a/project/app/admin.py b/project/app/admin.py
new file mode 100644
index 00000000..8c38f3f3
--- /dev/null
+++ b/project/app/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/project/app/apps.py b/project/app/apps.py
new file mode 100644
index 00000000..ed327d22
--- /dev/null
+++ b/project/app/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class AppConfig(AppConfig):
+ default_auto_field = 'django.db.models.BigAutoField'
+ name = 'app'
diff --git a/project/app/migrations/__init__.py b/project/app/migrations/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/project/app/migrations/__pycache__/__init__.cpython-310.pyc b/project/app/migrations/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 00000000..b421a4db
Binary files /dev/null and b/project/app/migrations/__pycache__/__init__.cpython-310.pyc differ
diff --git a/project/app/migrations/__pycache__/__init__.cpython-311.pyc b/project/app/migrations/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 00000000..1e5eca08
Binary files /dev/null and b/project/app/migrations/__pycache__/__init__.cpython-311.pyc differ
diff --git a/project/app/models.py b/project/app/models.py
new file mode 100644
index 00000000..71a83623
--- /dev/null
+++ b/project/app/models.py
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
diff --git a/project/app/static/css/style.css b/project/app/static/css/style.css
new file mode 100644
index 00000000..38aac279
--- /dev/null
+++ b/project/app/static/css/style.css
@@ -0,0 +1,154 @@
+* {
+ font-family: "Montserrat", sans-serif;
+}
+
+body {
+ background-color: #021842;
+ flex-direction: column;
+ display: flex;
+ margin: 0;
+ height: 100vh;
+ width: 100vw;
+}
+header {
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+ background-color: #ffffff;
+ color: #004661;
+ height: 100px;
+}
+
+img {
+ width: 203px;
+ height: 58px;
+}
+
+.logo {
+ width: 100px;
+ height: 100px;
+}
+
+h1 {
+ font-size: 18px;
+}
+
+/* estilizacao */
+
+.content {
+ height: 100%;
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+}
+
+.footer {
+ padding: 20px 0px;
+ color: #8a8989;
+ align-self: center;
+}
+
+.container {
+ display: flex;
+ align-items: center;
+ padding: 24px 72px;
+ width: 280px;
+ flex-direction: column;
+ flex-shrink: 0;
+ border-radius: 20px;
+ border: 1px solid #bcbcbc;
+ color: #ffffff;
+ gap: 1em;
+}
+
+.form {
+ display: flex;
+ flex-direction: column;
+ gap: 4em;
+ width: 100%;
+}
+
+.inputGroup {
+ display: flex;
+ flex-direction: column;
+ gap: 1em;
+}
+
+.input {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5em;
+ width: 100%;
+}
+
+.button-submit {
+ color: #004661;
+ background: #ffffff;
+ border: none;
+ border-radius: 20px;
+ padding: 10px 20px;
+ width: 100%;
+ font-weight: 600;
+ transition: 0.3s;
+ cursor: pointer;
+}
+
+.button-submit:hover {
+ background: #bcbcbc;
+}
+
+.placeholder {
+ flex-shrink: 0;
+ border-radius: 20px;
+ border: 1px solid #bcbcbc;
+ background: rgba(0, 0, 0, 0);
+ padding: 10px 20px;
+ color: #ffffff;
+}
+
+.name {
+ font-size: 12px;
+ font-weight: 600;
+}
+
+.placeholder::placeholder {
+ color: #ffffff;
+}
+
+.link {
+ color: #bcbcbc;
+}
+
+.otherLogin {
+ font-size: 12px;
+}
+
+.placeholder option {
+ color: black;
+}
+
+.button-logout{
+ color: #004661;
+ background: #ffffff;
+ border: none;
+ border-radius: 20px;
+ padding: 10px 20px;
+ width: 10%;
+ font-weight: 600;
+ transition: 0.3s;
+ cursor: pointer;
+ position: absolute;
+ right: 150px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-top: 30px;
+}
+
+.button-logout:hover {
+ background: #FF3838;
+ color: #FFF;
+}
+
diff --git a/project/app/static/imagem/finateclogo.png b/project/app/static/imagem/finateclogo.png
new file mode 100644
index 00000000..004347d6
Binary files /dev/null and b/project/app/static/imagem/finateclogo.png differ
diff --git a/project/app/static/imagem/logoFinatec.png b/project/app/static/imagem/logoFinatec.png
new file mode 100644
index 00000000..9a488715
Binary files /dev/null and b/project/app/static/imagem/logoFinatec.png differ
diff --git a/project/app/templates/base.html b/project/app/templates/base.html
new file mode 100644
index 00000000..58d9a66e
--- /dev/null
+++ b/project/app/templates/base.html
@@ -0,0 +1,26 @@
+{% load static %}
+
+
+
+ AutomaTEC
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sistema de prestação automático
+
+ {% block conteudo %}
+
+ {% endblock %}
+
+
+
\ No newline at end of file
diff --git a/project/app/templates/cadastro.html b/project/app/templates/cadastro.html
new file mode 100644
index 00000000..001adbff
--- /dev/null
+++ b/project/app/templates/cadastro.html
@@ -0,0 +1,89 @@
+{% extends 'base.html' %}
+{% block conteudo %}
+{% load static %}
+
+
+
+
+
+
+
+
+
Cadastrar
+
+ {% if error_messages %}
+
+ {% for message in error_messages %}
+ {{ message }}
+ {% endfor %}
+
+ {% endif %}
+
Possui uma conta? Logar
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/project/app/templates/cadastro_legado.html b/project/app/templates/cadastro_legado.html
new file mode 100644
index 00000000..3cc2e497
--- /dev/null
+++ b/project/app/templates/cadastro_legado.html
@@ -0,0 +1,99 @@
+{% load static %}
+
+
+
+ AutomaTEC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sistema de prestação automático
+
+
+
+
+
Cadastrar
+
+ {% if error_messages %}
+
+ {% for message in error_messages %}
+ {{ message }}
+ {% endfor %}
+
+ {% endif %}
+
Possui uma conta? Logar
+
+
+
+
+
+
\ No newline at end of file
diff --git a/project/app/templates/login.html b/project/app/templates/login.html
new file mode 100644
index 00000000..637d2d29
--- /dev/null
+++ b/project/app/templates/login.html
@@ -0,0 +1,77 @@
+{% extends 'base.html' %}
+{% block conteudo %}
+{% load static %}
+
+
+
+
+
+
Login
+
+ {% if error_message %}
+
{{ error_message }}
+ {% endif %}
+
Não possui uma conta? criar
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/project/app/templates/login_legado.html b/project/app/templates/login_legado.html
new file mode 100644
index 00000000..a157f4a9
--- /dev/null
+++ b/project/app/templates/login_legado.html
@@ -0,0 +1,95 @@
+{% load static %}
+
+
+
+ AutomaTEC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sistema de prestação automático
+
+
+
+
+
+
Login
+
+ {% if error_message %}
+
{{ error_message }}
+ {% endif %}
+
Não possui uma conta? criar
+
+
+
+
+
\ No newline at end of file
diff --git a/project/app/templates/projeto.html b/project/app/templates/projeto.html
new file mode 100644
index 00000000..35d3ea33
--- /dev/null
+++ b/project/app/templates/projeto.html
@@ -0,0 +1,38 @@
+{% extends 'base.html' %}
+{% block conteudo %}
+{% load static %}
+
+
+
+
+
+
+
+
Selecione o projeto
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/project/app/templates/projeto_legado.html b/project/app/templates/projeto_legado.html
new file mode 100644
index 00000000..26cfb632
--- /dev/null
+++ b/project/app/templates/projeto_legado.html
@@ -0,0 +1,101 @@
+{% load static %}
+
+
+
+ AutomaTEC
+
+
+
+
+
+
+
+
+
+
+
+
+ Sistema de prestação automático
+
+
+
+
+
+
+
+
+
Selecione o projeto
+
+
+
+
+
+
\ No newline at end of file
diff --git a/project/app/tests.py b/project/app/tests.py
new file mode 100644
index 00000000..7ce503c2
--- /dev/null
+++ b/project/app/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/project/app/urls.py b/project/app/urls.py
new file mode 100644
index 00000000..da413891
--- /dev/null
+++ b/project/app/urls.py
@@ -0,0 +1,13 @@
+from django.urls import path
+from . import views
+from django.contrib.auth import views as auth_views
+
+urlpatterns = [
+ path("cadastro/", views.cadastro, name="cadastro"),
+ path('', views.login, name='login' ),
+ path('projeto/', views.projeto, name='projeto'),
+ path('logout/', views.custom_logout, name='logout'),
+ # path('login_teste/', views.login_teste, name='login_teste'),
+ # path('cadastro_teste/', views.cadastro_teste, name='cadastro_teste'),
+ # path('projeto_teste/', views.projeto_teste, name='projeto_teste'),
+]
\ No newline at end of file
diff --git a/project/app/views.py b/project/app/views.py
new file mode 100644
index 00000000..0483ff1e
--- /dev/null
+++ b/project/app/views.py
@@ -0,0 +1,106 @@
+from django.shortcuts import render
+from django.contrib.auth.models import User
+from django.contrib.auth import authenticate
+from django.contrib.auth import login as login_a
+from django.contrib.auth.decorators import login_required
+from django.http import HttpResponseRedirect
+from django.shortcuts import redirect
+from django.contrib.auth import logout
+from django.contrib.auth.password_validation import validate_password
+
+def cadastro(request):
+ if request.method == "GET":
+ return render(request, 'cadastro.html')
+ else:
+ usuario = request.POST.get('usuario')
+ senha = request.POST.get('senha')
+ email = request.POST.get('email')
+
+ try:
+ validate_password(senha, user=User)
+ except Exception as e:
+ error_messages = e.messages
+ return render(request, 'cadastro.html', {'error_messages': error_messages})
+
+ user = User.objects.filter(username=usuario).first()
+
+ if user:
+ error_messages = ['Usuário já existe']
+ return render(request, 'cadastro.html', {'error_messages': error_messages})
+
+ user = User.objects.create_user(username=usuario, password=senha, email=email)
+ user.save()
+
+ return HttpResponseRedirect('/')
+
+def login(request):
+ if request.method =="GET":
+ return render(request, 'login.html')
+ else:
+ usuario = request.POST.get('usuario')
+ senha = request.POST.get('senha')
+
+ user = authenticate(username=usuario, password=senha)
+
+ if user:
+ login_a(request, user)
+ return HttpResponseRedirect ('projeto/')
+ else:
+ error_message = 'Usuário ou senha inválido.'
+ return render(request, 'login.html', {'error_message': error_message})
+
+@login_required(login_url="/")
+def projeto(request):
+ # if request.user.is_authenticated:
+ # return HttpResponse('Projetos')
+ # else:
+ return render(request, 'projeto.html')
+
+def custom_logout(request):
+ logout(request)
+ return redirect('/')
+
+# def login_teste(request):
+# if request.method =="GET":
+# return render(request, 'login_teste.html')
+# else:
+# usuario = request.POST.get('usuario')
+# senha = request.POST.get('senha')
+
+# user = authenticate(username=usuario, password=senha)
+
+# if user:
+# login_a(request, user)
+# return HttpResponseRedirect ('http://127.0.0.1:8000/projeto/')
+# else:
+# error_message = 'Usuário ou senha inválido.'
+# return render(request, 'login_teste.html', {'error_message': error_message})
+
+# def cadastro_teste(request):
+# if request.method == "GET":
+# return render(request, 'cadastro_teste.html')
+# else:
+# usuario = request.POST.get('usuario')
+# senha = request.POST.get('senha')
+
+# try:
+# validate_password(senha, user=User)
+# except Exception as e:
+# error_messages = e.messages
+# return render(request, 'cadastro_teste.html', {'error_messages': error_messages})
+
+# user = User.objects.filter(username=usuario).first()
+
+# if user:
+# error_messages = ['Usuário já existe']
+# return render(request, 'cadastro_teste.html', {'error_messages': error_messages})
+
+# user = User.objects.create_user(username=usuario, password=senha)
+# user.save()
+
+# @login_required(login_url="/")
+# def projeto_teste(request):
+# # if request.user.is_authenticated:
+# # return HttpResponse('Projetos')
+# # else:
+# return render(request, 'projeto_teste.html')
\ No newline at end of file
diff --git a/project/db.sqlite3 b/project/db.sqlite3
new file mode 100644
index 00000000..7494f163
Binary files /dev/null and b/project/db.sqlite3 differ
diff --git a/project/manage.py b/project/manage.py
new file mode 100755
index 00000000..2c49f3ac
--- /dev/null
+++ b/project/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+"""Django's command-line utility for administrative tasks."""
+import os
+import sys
+
+
+def main():
+ """Run administrative tasks."""
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
+ try:
+ from django.core.management import execute_from_command_line
+ except ImportError as exc:
+ raise ImportError(
+ "Couldn't import Django. Are you sure it's installed and "
+ "available on your PYTHONPATH environment variable? Did you "
+ "forget to activate a virtual environment?"
+ ) from exc
+ execute_from_command_line(sys.argv)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/project/project/__init__.py b/project/project/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/project/project/__pycache__/__init__.cpython-310.pyc b/project/project/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 00000000..89773d19
Binary files /dev/null and b/project/project/__pycache__/__init__.cpython-310.pyc differ
diff --git a/project/project/__pycache__/__init__.cpython-311.pyc b/project/project/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 00000000..73fdbfae
Binary files /dev/null and b/project/project/__pycache__/__init__.cpython-311.pyc differ
diff --git a/project/project/__pycache__/settings.cpython-310.pyc b/project/project/__pycache__/settings.cpython-310.pyc
new file mode 100644
index 00000000..b544b004
Binary files /dev/null and b/project/project/__pycache__/settings.cpython-310.pyc differ
diff --git a/project/project/__pycache__/settings.cpython-311.pyc b/project/project/__pycache__/settings.cpython-311.pyc
new file mode 100644
index 00000000..8ca67426
Binary files /dev/null and b/project/project/__pycache__/settings.cpython-311.pyc differ
diff --git a/project/project/__pycache__/urls.cpython-310.pyc b/project/project/__pycache__/urls.cpython-310.pyc
new file mode 100644
index 00000000..9b9f9900
Binary files /dev/null and b/project/project/__pycache__/urls.cpython-310.pyc differ
diff --git a/project/project/__pycache__/urls.cpython-311.pyc b/project/project/__pycache__/urls.cpython-311.pyc
new file mode 100644
index 00000000..80c9abe2
Binary files /dev/null and b/project/project/__pycache__/urls.cpython-311.pyc differ
diff --git a/project/project/__pycache__/wsgi.cpython-310.pyc b/project/project/__pycache__/wsgi.cpython-310.pyc
new file mode 100644
index 00000000..2b15a062
Binary files /dev/null and b/project/project/__pycache__/wsgi.cpython-310.pyc differ
diff --git a/project/project/__pycache__/wsgi.cpython-311.pyc b/project/project/__pycache__/wsgi.cpython-311.pyc
new file mode 100644
index 00000000..1366548e
Binary files /dev/null and b/project/project/__pycache__/wsgi.cpython-311.pyc differ
diff --git a/project/project/asgi.py b/project/project/asgi.py
new file mode 100644
index 00000000..c9e4e67f
--- /dev/null
+++ b/project/project/asgi.py
@@ -0,0 +1,16 @@
+"""
+ASGI config for project project.
+
+It exposes the ASGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/
+"""
+
+import os
+
+from django.core.asgi import get_asgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
+
+application = get_asgi_application()
diff --git a/project/project/settings.py b/project/project/settings.py
new file mode 100644
index 00000000..e6d07cc2
--- /dev/null
+++ b/project/project/settings.py
@@ -0,0 +1,147 @@
+from pathlib import Path
+import os
+
+# Build paths inside the project like this: BASE_DIR / 'subdir'.
+BASE_DIR = Path(__file__).resolve().parent.parent
+
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = 'django-insecure-tn_bk%@%rt@570m)e14wxmm4u2x_z&lvb8uh3--6ay7@h2olcs'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = [
+ 'django.contrib.admin',
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.messages',
+ 'django.contrib.staticfiles',
+ 'app',
+]
+
+MIDDLEWARE = [
+ 'django.middleware.security.SecurityMiddleware',
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.common.CommonMiddleware',
+ 'django.middleware.csrf.CsrfViewMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.messages.middleware.MessageMiddleware',
+ 'django.middleware.clickjacking.XFrameOptionsMiddleware',
+]
+
+ROOT_URLCONF = 'project.urls'
+
+TEMPLATES = [
+ {
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'DIRS': [],
+ 'APP_DIRS': True,
+ 'OPTIONS': {
+ 'context_processors': [
+ 'django.template.context_processors.debug',
+ 'django.template.context_processors.request',
+ 'django.contrib.auth.context_processors.auth',
+ 'django.contrib.messages.context_processors.messages',
+ ],
+ },
+ },
+]
+
+WSGI_APPLICATION = 'project.wsgi.application'
+
+
+# Database
+# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': BASE_DIR / 'db.sqlite3',
+ }
+}
+
+# DATABASES = {
+# 'default': {
+# 'ENGINE': 'django.db.backends.postgresql',
+# 'NAME': 'myproject',
+# 'USER': 'myprojectuser',
+# 'PASSWORD': 'password',
+# 'HOST': 'localhost',
+# 'PORT': '',
+# },
+# 'finatec': {
+# 'ENGINE': 'sql_server.pyodbc',
+# 'HOST': '(LocalDB)\ProjectLocalDB',
+# 'PORT': '',
+# 'NAME': 'my_db',
+# 'USER': 'my_user',
+# 'PASSWORD': 'my_password',
+# }
+# }
+
+# Password validation
+# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
+
+AUTH_PASSWORD_VALIDATORS = [
+ {
+ 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+ # 'OPTIONS': {
+ # 'message': "A senha é similar as informações do usuário.",
+ # },
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+ # 'OPTIONS': {
+ # 'min_length': 8,
+ # 'message': "A senha deve ter pelo menos %(min_length)d caracteres.",
+ # },
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+ # 'OPTIONS': {
+ # 'message': "A senha é muito simples.",
+ # },
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+ # 'OPTIONS': {
+ # 'message': "A senha não pode conter apenas números.",
+ # },
+ },
+]
+
+
+# Internationalization
+# https://docs.djangoproject.com/en/4.2/topics/i18n/
+
+LANGUAGE_CODE = 'pt-br'
+
+TIME_ZONE = 'UTC'
+
+USE_I18N = True
+
+USE_TZ = True
+
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/4.2/howto/static-files/
+
+STATIC_URL = 'assets/'
+STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
+STATICFILES_DIRS = [
+ os.path.join(BASE_DIR, "static")
+]
+# Default primary key field type
+# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
+
+DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
diff --git a/project/project/urls.py b/project/project/urls.py
new file mode 100644
index 00000000..a3a89530
--- /dev/null
+++ b/project/project/urls.py
@@ -0,0 +1,8 @@
+from django.contrib import admin
+from django.urls import include, path
+
+
+urlpatterns = [
+ path('', include('app.urls')),
+ path('admin/', admin.site.urls),
+]
diff --git a/project/project/wsgi.py b/project/project/wsgi.py
new file mode 100644
index 00000000..6f61a78e
--- /dev/null
+++ b/project/project/wsgi.py
@@ -0,0 +1,16 @@
+"""
+WSGI config for project project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
+
+application = get_wsgi_application()
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 00000000..80b35f82
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,3 @@
+Django==4.2.4
+openpyxl==3.0.10
+pytest==7.1.2
diff --git a/src/codigo-inicial/FUNDEP.xlsx b/src/codigo-inicial/FUNDEP.xlsx
new file mode 100644
index 00000000..40bd2143
Binary files /dev/null and b/src/codigo-inicial/FUNDEP.xlsx differ
diff --git a/src/codigo-inicial/antigo_dev.py b/src/codigo-inicial/antigo_dev.py
new file mode 100644
index 00000000..df5d6a34
--- /dev/null
+++ b/src/codigo-inicial/antigo_dev.py
@@ -0,0 +1,211 @@
+import openpyxl as op
+import datetime
+import os
+
+def pegar_caminho(nome_arquivo):
+
+ # Obter o caminho absoluto do arquivo Python em execução
+ caminho_script = os.path.abspath(__file__)
+
+ # Obter o diretório da pasta onde o script está localizado
+ pasta_script = os.path.dirname(caminho_script)
+
+ # Combinar o caminho da pasta com o nome do arquivo Excel
+ caminho = os.path.join(pasta_script, nome_arquivo)
+
+ return caminho
+
+def preenche_planilha(planilha, dicionario):
+
+ # color = op.styles.PatternFill("solid", start_color="5cb800") # <--- teste com cores
+
+ caminho = pegar_caminho(planilha)
+
+ # carrega a planilha de acordo com o caminho
+ workbook = op.load_workbook(caminho)
+
+ # planilha_preenchida = pegar_caminho('preenchido-' + planilha)
+
+ for nomePlanilha, entradaDados in dicionario.items():
+ planilhaAtual = workbook[nomePlanilha]
+
+ for intervaloCelula, entradaCelula in entradaDados:
+ if ":" in intervaloCelula:
+ inicioCelula, fimCelula = intervaloCelula.split(":")
+ planilhaAtual = workbook[nomePlanilha]
+ planilhaAtual[inicioCelula] = entradaCelula
+ # planilhaAtual[inicioCelula].fill = color <--- teste com cores
+ else:
+ planilhaAtual[intervaloCelula] = entradaCelula
+ # planilhaAtual[intervaloCelula].fill = color <--- teste com cores
+
+ workbook.save("modified_ModeloFub.xlsx")
+
+ print('arquivo salvo como ' + "modified_ModeloFub.xlsx")
+
+
+
+# workbook = op.load_workbook('Modelo_Fub.xlsm')
+# number = 3108
+
+# value = datetime.datetime.strptime("2014-06-23", "%Y-%m-%d")
+
+planilha_local_dados = {
+ "Receita x Despesa": [
+ ("A3:J3", "Título do Projeto:String 1 A3:J3"),
+ ("A4:J4", "Executora: String 2 A4:J4"),
+ ("A5:J5", "Partícipe: String 3 A5:J5"),
+ ("A6:J6", "Período de Execução Físico-Financeiro: String 4 A6:J6"),
+ ("A7:J7", "Período que abrange esta prestação: String 5 A7:J7"),
+ ("A16:A25",datetime.datetime.strptime("2014-06-23", "%Y-%m-%d")),
+ ("B16:B25","STRINGB16B25"),# intervalo nao interfere
+ ("C16:C25","STRINGC16C25"),#intervalo nao interfere
+ ("E16:E25",200),
+ #("I16:I21",223),
+ ("I16", 23),
+ ("I17", 213),
+ ("I18", 223),
+ ("I19", 233),
+ ("I20", 243),
+ ("I21", 253),
+ ("I24", 263),
+ ("I26", 23787),
+ ("I27", 10),
+ ("I32", 100),
+ ("I33", 1000),
+ ("I38", 10000),
+ ("H45", "COORDENADORA_TESTE")
+ ],
+ "Exec. Receita e Despesa":[
+ ("B16",200),
+ ("B17",201),
+ ("B18",202),
+ ("B19",203),
+ ("B20",204),
+ ("B21",205),
+ ("B22",206),
+ ("B23",207),
+ ("C16",205),
+ ("C17",206),
+ ("C18",207),
+ ("C19",208),
+ ("C20",209),
+ ("C21",210),
+ ("C22",211),
+ ("C23",212),
+ ("C24",213),
+ ("C25",214),
+ ("F16",2051),
+ ("F17",2061),
+ ("F18",2071),
+ ("F19",2081),
+ ("F20",2091),
+ ("F21",2101),
+ ("F22",2111),
+ ("F23",2121),
+ ("G16",20351),
+ ("G17",20361),
+ ("G18",20371),
+ ("G19",20381),
+ ("G20",20391),
+ ("G21",21301),
+ ("G22",21311),
+ ("G23",21321),
+ ("I26",2011),
+ ("I28",2001),
+ ("I29",2001),
+ ("B26",3011),
+ ("B28",3001),
+ ("B29",3001),
+ ("B31",3011),
+ ("C26",4011),
+ ("C29",4011),
+ ("C31",4011),
+ ("F26",5011),
+ ("F28",5001),
+ ("F29",5001),
+ ("F31",5011),
+ ("G26",6011),
+ ("G28",6001),
+ ("G29",6001),
+ ("G31",6011)
+ ],
+ "Pessoa Jurídica":[
+ ("B11","TESTE_NOME"),
+ ("C11","TESTE_CPF"),
+ ("D11","TESTE_ESPECIFICACAO"),
+ ("E11","TESTE_DESCRICAO"),
+ ("F11","TESTE_DESCRICAO"),
+ ("F11","TESTE_RECIBO"),
+ ("G11",110101),
+ ("H11","TESTE_CHEQUE"),
+ ("I11",98765431),
+ ("J11",3000)
+
+ ],
+ "Conciliação Bancária":[
+ ("F10",5000),
+ ("F11",5000),
+ ("A15",120623),
+ ("A15",120623),
+ ("B15",9777),
+ ("C15","DOCUMENTO_TESTE"),
+ ("D15","DESCRIÇÃO_TESTE"),
+ ("B38",9777),
+ ("B39",7878),
+ ("C38","TESTESTRALEATORIOC38"),
+ ("C39",'TESTESTRALEATORIOC39'),
+ ("D38","TESTESTRALEATORIOD38"),
+ ("D39",'TESTESTRALEATORIOD39')
+
+ ],
+ "Rendimento de Aplicação":[
+ ("B12",2023),
+ ("C12",2024),
+ ("D12",2025),
+ ("E12",2026),
+ ("F12",2027),
+ ("G12",2028),
+ ("H12",2029)
+ ]
+
+
+}
+
+modelo_fundep = {
+ "Relação e despesas" : [
+ # campos cadastrais
+ ("C3", "Instituição Gestora"),
+ ("F3", "0000*XX"),
+ ("I3", "n_acordo"),
+ ("C4", "Titulo_Projeto"),
+ ("C5", "Nome_Coordenador"),
+
+ # item beneficiarios
+ ("I5", "Dt_PeriodoPrestacao"),
+ ("C7", "Nome_Beneficiario"),
+ ("D7", "CNPJ-CPF-Baneficiario"),
+ ("E7", "Rubrica-Beneficiario"),
+ ("F7", "CH-OB-Beneficiario"),
+ ("G7", "dt-inicial-Beneficiario"),
+ ("H7", "NF-DOC.FISCAL-Beneficiario"),
+ ("I7", "dt-final-Beneficiario"),
+ ("J7", "valor-Beneficiario"),
+ ]
+}
+
+# for nomePlanilha, entradaDados in planilha_local_dados.items():
+# planilhaAtual = workbook[nomePlanilha]
+
+# for intervaloCelula, entradaCelula in entradaDados:
+# if ":" in intervaloCelula:
+# inicioCelula, fimCelula = intervaloCelula.split(":")
+# planilhaAtual = workbook[nomePlanilha]
+# planilhaAtual[inicioCelula] = entradaCelula
+# else:
+# planilhaAtual[intervaloCelula] = entradaCelula
+
+
+# workbook.save("modified_ModeloFub.xlsx")
+
+preenche_planilha('Modelo_Fub.xlsm', planilha_local_dados)
diff --git a/src/codigo-inicial/app.py b/src/codigo-inicial/app.py
new file mode 100644
index 00000000..ec42521a
--- /dev/null
+++ b/src/codigo-inicial/app.py
@@ -0,0 +1,78 @@
+import os
+import openpyxl as op
+
+# Adicionando o nome da gestora do projeto para FINATEC
+
+# -------------------------------------------------------------
+
+# workbook = op.load_workbook('teste-template/FUNDEP.xlsx')
+
+# sheet = workbook.active
+
+# gestora = sheet['C3']
+# gestora.value = "Finatec"
+
+
+# nome_projeto = sheet['C4']
+# nome_projeto.value = "Projeto X"
+
+# coordenador = sheet['C5']
+# coordenador.value = "Suellen"
+
+# referencia = sheet['F3']
+# referencia.value = "Suellen"
+
+# DÚVIDA:
+# Nº Acordo de Parceria
+# Nº Acordo
+
+# print(cell.value)
+
+# workbook.save('FUNDEP-preenchido.xlsx')
+
+# -------------------------------------------------------------
+
+def pegar_caminho(nome_arquivo):
+
+ # Obter o caminho absoluto do arquivo Python em execução
+ caminho_script = os.path.abspath(__file__)
+
+ # Obter o diretório da pasta onde o script está localizado
+ pasta_script = os.path.dirname(caminho_script)
+
+ # Combinar o caminho da pasta com o nome do arquivo Excel
+ caminho = os.path.join(pasta_script, nome_arquivo)
+
+ return caminho
+
+def preenche_planilha(planilha, celulas):
+
+ caminho = pegar_caminho(planilha)
+
+ # carrega a planilha de acordo com o caminho
+ workbook = op.load_workbook(caminho)
+
+ sheet = workbook.active
+
+ for celula, text in celulas:
+ cell = sheet[celula]
+ cell.value = f'{text}'
+
+ planilha_preenchida = pegar_caminho('preenchido-' + planilha)
+
+ workbook.save(planilha_preenchida)
+
+ print('arquivo salvo em ' + planilha_preenchida)
+
+
+
+celulas_preenchidas = [['C3', 'Fundep'], ['C4', 'Projeto X'], ['C5', 'Suellen'], ['F3', 'Suellen'], ['C7', 'Testando Item']]
+
+preenche_planilha('FUNDEP.xlsx', celulas_preenchidas)
+
+
+
+
+
+
+
diff --git a/src/codigo-inicial/index.py b/src/codigo-inicial/index.py
new file mode 100644
index 00000000..ec944264
--- /dev/null
+++ b/src/codigo-inicial/index.py
@@ -0,0 +1,70 @@
+import oracledb
+
+#connection string in the format
+#/@:/
+
+conStr = ''
+
+def getNomeColunas():
+
+ #inicializando o objeto que ira conectar no db
+ conn = None
+ #criando o objeto de conexão das
+ conn = oracledb.connect(conStr)
+ #criar um objeto cursor necessario para fazer as consultas
+ cur = conn.cursor()
+ cur.execute("SELECT * FROM IDEA.STG_PROJETOS_CONVENIAR")
+
+ return cur
+
+def consultaPorID(IDPROJETO):
+ try:
+ connection = oracledb.connect(conStr)
+ cursor = connection.cursor()
+ print("Connected to database")
+
+ # idProjeto = 6411
+ sqlite_select_query = f"SELECT * FROM IDEA.STG_PROJETOS_CONVENIAR WHERE CODIGO='{IDPROJETO}'"
+
+ cursor.execute(sqlite_select_query)
+
+ records = cursor.fetchall()
+
+ collums = getNomeColunas()
+ # print(records)
+
+ # print(len(collums.description))
+ # print(len(records[0]))
+
+ consulta = {}
+
+ for i in range(len(collums.description)):
+ # print(f"{collums.description[i][0]}: {records[0][i]}")
+ consulta[collums.description[i][0]] = records[0][i]
+
+ print(consulta)
+
+ # print(f"\n \n {consulta['OBJETIVOS']} \n")
+ consulta['OBJETIVOS'] = str(consulta['OBJETIVOS'])
+
+ cursor.close()
+
+ except oracledb.Error as error:
+ print("Failed to read data from table", error)
+ finally:
+ if connection:
+ connection.close()
+ print("The connection is closed")
+
+ # return records
+ return consulta
+
+# executando
+a = input("Digite o id do projeto: ")
+print("\n\n")
+resultado = consultaPorID(a)
+
+print(f"\n {resultado} \n")
+
+
+
diff --git a/src/codigo-inicial/inicial.py b/src/codigo-inicial/inicial.py
new file mode 100644
index 00000000..e9a00401
--- /dev/null
+++ b/src/codigo-inicial/inicial.py
@@ -0,0 +1,50 @@
+import os
+import openpyxl as op
+
+# Adicionando o nome da gestora do projeto para FINATEC
+# Ajustando caminho --------------------------------------
+
+ # Obter o caminho absoluto do arquivo Python em execução
+caminho_script = os.path.abspath(__file__)
+
+ # Obter o diretório da pasta onde o script está localizado
+pasta_script = os.path.dirname(caminho_script)
+
+ # Nome do arquivo Excel
+nome_arquivo_excel = 'FUNDEP.xlsx'
+
+ # Combinar o caminho da pasta com o nome do arquivo Excel
+caminho_arquivo_excel = os.path.join(pasta_script, nome_arquivo_excel)
+
+ # Carregar o arquivo Excel
+
+
+
+
+# Código inicial------------------------------------------
+
+workbook = op.load_workbook(caminho_arquivo_excel)
+
+sheet = workbook.active
+
+gestora = sheet['C3']
+gestora.value = "Finatec"
+
+
+nome_projeto = sheet['C4']
+nome_projeto.value = "Projeto X"
+
+coordenador = sheet['C5']
+coordenador.value = "Suellen"
+
+referencia = sheet['F3']
+referencia.value = "27193*14"
+
+# DÚVIDA:
+# Nº Acordo de Parceria
+# Nº Acordo
+
+# Salvando arquivo na mesma pasta
+nome_novo_excel = 'FUNDEP-inicial.xlsx'
+caminho_novo_excel = os.path.join(pasta_script, nome_novo_excel)
+workbook.save(caminho_novo_excel)
\ No newline at end of file
diff --git a/src/scripts/modeloTemplates.py b/src/scripts/modeloTemplates.py
new file mode 100644
index 00000000..74dfd7b3
--- /dev/null
+++ b/src/scripts/modeloTemplates.py
@@ -0,0 +1,318 @@
+import datetime
+
+class ModeloTemplate():
+ def fundep(self):
+ modelo_fundep = {
+ "Relação e despesas" : [
+ # campos cadastrais
+ ("C3", f"{records.NOME_INSTITUICAO_EXECUTORA}"),
+ ("F3", "0000*XX"),
+ ("I3", "n_acordo"),
+ ("C4", f"{records.NOME_PROJETO}"),
+ ("C5", f"{records.NOME_COORDENADOR}"),
+
+ # item beneficiarios
+ ("I5", "Dt_PeriodoPrestacao"),
+ ("C7", "Nome_Beneficiario"),
+ ("D7", "CNPJ-CPF-Baneficiario"),
+ ("E7", "Rubrica-Beneficiario"),
+ ("F7", "CH-OB-Beneficiario"),
+ ("G7", "dt-inicial-Beneficiario"),
+ ("H7", "NF-DOC.FISCAL-Beneficiario"),
+ ("I7", "dt-final-Beneficiario"),
+ ("J7", "valor-Beneficiario"),
+ ]
+ }
+ return modelo_fundep
+
+ def fub(self):
+ modelo_fub = {
+ "Receita x Despesa": [
+ ("A3:J3", f"Título do Projeto: {records.NOME}"), #AJEITAR
+ ("A4:J4", f"Executora: {NOME_INSTITUICAO_EXECUTORA}"),
+ ("A5:J5", f"Partícipe: {NOME_INSTITUICAO}"), # o que eh participe?
+ ("A6:J6", f"Período de Execução Físico-Financeiro: {DATA_ASSINATURA} a {DATA_VIGENCIA}"),
+ ("A7:J7", f"Período que abrange esta prestação: {DATA_VIGE}"), #VAZIO
+ ("A16:A25", datetime.datetime.strptime("2014-06-23", "%Y-%m-%d")),
+ ("B16:B25", "STRINGB16B25"),# intervalo nao interfere
+ ("C16:C25", "STRINGC16C25"),#intervalo nao interfere
+ ("E16:E25", 200),
+ #("I16:I21",223),
+ ("I16", 23),
+ ("I17", 213),
+ ("I18", 223),
+ ("I19", 233),
+ ("I20", 243),
+ ("I21", 253),
+ ("I24", 263),
+ ("I26", 23787),
+ ("I27", 10),
+ ("I32", 100),
+ ("I33", 1000),
+ ("I38", 10000),
+ ("H45", f"NOME_COORDENADOR")
+ ],
+ "Exec. Receita e Despesa":[
+ ("B16",200),
+ ("B17",201),
+ ("B18",202),
+ ("B19",203),
+ ("B20",204),
+ ("B21",205),
+ ("B22",206),
+ ("B23",207),
+ ("C16",205),
+ ("C17",206),
+ ("C18",207),
+ ("C19",208),
+ ("C20",209),
+ ("C21",210),
+ ("C22",211),
+ ("C23",212),
+ ("C24",213),
+ ("C25",214),
+ ("F16",2051),
+ ("F17",2061),
+ ("F18",2071),
+ ("F19",2081),
+ ("F20",2091),
+ ("F21",2101),
+ ("F22",2111),
+ ("F23",2121),
+ ("G16",20351),
+ ("G17",20361),
+ ("G18",20371),
+ ("G19",20381),
+ ("G20",20391),
+ ("G21",21301),
+ ("G22",21311),
+ ("G23",21321),
+ ("I26",2011),
+ ("I28",2001),
+ ("I29",2001),
+ ("B26",3011),
+ ("B28",3001),
+ ("B29",3001),
+ ("B31",3011),
+ ("C26",4011),
+ ("C29",4011),
+ ("C31",4011),
+ ("F26",5011),
+ ("F28",5001),
+ ("F29",5001),
+ ("F31",5011),
+ ("G26",6011),
+ ("G28",6001),
+ ("G29",6001),
+ ("G31",6011)
+ ],
+ "Pessoa Jurídica":[
+ ("B11","TESTE_NOME"),
+ ("C11","TESTE_CPF"),
+ ("D11","TESTE_ESPECIFICACAO"),
+ ("E11","TESTE_DESCRICAO"),
+ ("F11","TESTE_DESCRICAO"),
+ ("F11","TESTE_RECIBO"),
+ ("G11",110101),
+ ("H11","TESTE_CHEQUE"),
+ ("I11",98765431),
+ ("J11",3000)
+
+ ],
+ "Conciliação Bancária":[
+ ("F10",5000),
+ ("F11",5000),
+ ("A15",120623),
+ ("A15",120623),
+ ("B15",9777),
+ ("C15","DOCUMENTO_TESTE"),
+ ("D15","DESCRIÇÃO_TESTE"),
+ ("B38",9777),
+ ("B39",7878),
+ ("C38","TESTESTRALEATORIOC38"),
+ ("C39",'TESTESTRALEATORIOC39'),
+ ("D38","TESTESTRALEATORIOD38"),
+ ("D39",'TESTESTRALEATORIOD39')
+
+ ],
+ "Rendimento de Aplicação":[
+ ("B12",2023),
+ ("C12",2024),
+ ("D12",2025),
+ ("E12",2026),
+ ("F12",2027),
+ ("G12",2028),
+ ("H12",2029)
+ ]
+ }
+
+ return modelo_fub
+
+ def opas(self):
+ modelo_opas = {
+ "Relatório Consolidado" : [
+ # campos cadastrais
+ ("C4","numero_loa"),
+ ("C5","nome_beneficiario"),
+ ("C6","nome_representante_legal"),
+ ("C7","titulo_loa"),
+ ("C8","periodo_despesas"),
+ ("C9","montante_recebido"),
+ ("C10","balanco_pagtos_anteriores"),
+
+ # atividade 1
+ ("A15","atividade_1"),
+
+ # montante previsto/executado atividade 1
+ ("D15","passagens_diarias_previsto"),
+ ("E15","passagens_diarias_executado"),
+
+ ("D16","equipamentos_previsto"),
+ ("E16","equipamentos_executado"),
+
+ ("D17", "construcao_previsto"),
+ ("E17", "construcao_executado"),
+
+ ("D18", "pessoa_fisica_previsto"),
+ ("E18", "pessoa_fisica_executado"),
+
+ ("D19", "servicoes_materiais_previsto"),
+ ("E19", "servicoes_materiais_executado"),
+
+ ("D20", "treinamento_capacitacao_previsto"),
+ ("E20", "treinamento_capacitacao_executado"),
+
+ # atividade 2
+ ("A21","atividade_2"),
+
+ # montante previsto/executado atividade 2
+ ("D21","passagens_diarias_previsto"),
+ ("E21","passagens_diarias_executado"),
+
+ ("D22","equipamentos_previsto"),
+ ("E22","equipamentos_executado"),
+
+ ("D23", "construcao_previsto"),
+ ("E23", "construcao_executado"),
+
+ ("D24", "pessoa_fisica_previsto"),
+ ("E24", "pessoa_fisica_executado"),
+
+ ("D25", "servicoes_materiais_previsto"),
+ ("E25", "servicoes_materiais_executado"),
+
+ ("D26", "treinamento_capacitacao_previsto"),
+ ("E26", "treinamento_capacitacao_executado"),
+
+ # atividade 3
+ ("A27","atividade_3"),
+
+ # montante previsto/executado atividade 3
+ ("D27","passagens_diarias_previsto"),
+ ("E27","passagens_diarias_executado"),
+
+ ("D28","equipamentos_previsto"),
+ ("E28","equipamentos_executado"),
+
+ ("D29", "construcao_previsto"),
+ ("E29", "construcao_executado"),
+
+ ("D30", "pessoa_fisica_previsto"),
+ ("E30", "pessoa_fisica_executado"),
+
+ ("D31", "servicoes_materiais_previsto"),
+ ("E31", "servicoes_materiais_executado"),
+
+ ("D32", "treinamento_capacitacao_previsto"),
+ ("E32", "treinamento_capacitacao_executado"),
+
+ # atividade 4
+ ("A33","atividade_4"),
+
+ # montante previsto/executado atividade 4
+ ("D33","passagens_diarias_previsto"),
+ ("E33","passagens_diarias_executado"),
+
+ ("D34","equipamentos_previsto"),
+ ("E34","equipamentos_executado"),
+
+ ("D35", "construcao_previsto"),
+ ("E35", "construcao_executado"),
+
+ ("D36", "pessoa_fisica_previsto"),
+ ("E36", "pessoa_fisica_executado"),
+
+ ("D37", "servicoes_materiais_previsto"),
+ ("E37", "servicoes_materiais_executado"),
+
+ ("D38", "treinamento_capacitacao_previsto"),
+ ("E38", "treinamento_capacitacao_executado"),
+
+ ],
+
+ "Relatório Detalhado" : [
+ # campos cadastrais
+ ("C4","numero_loa"),
+ ("C5","nome_beneficiario"),
+ ("C6","nome_representante_legal"),
+ ("C7","titulo_loa"),
+ ("C8","periodo_despesas"),
+
+ # despesas
+ ("B13:B42", "nome_fornecedor"),
+ ("C13:C42", "categoria_despesa"),
+ ("D13:D42", "data_despesa"),
+ ("E13:E42", "montante_despesa"),
+
+ ]
+ }
+ return modelo_opas
+
+ def fap(self):
+ modelo_fap = {
+ "" : [],
+ }
+ return modelo_fap
+
+ def fup(self):
+ modelo_fup = {
+ "" : [],
+ }
+ return modelo_fup
+
+ def ceb(self):
+ modelo_ceb = {
+ "" : [],
+ }
+ return modelo_ceb
+
+ def finep(self):
+ modelo_finep = {
+ "" : [],
+ }
+ return modelo_finep
+
+ def ibitic(self):
+ modelo_ibitic = {
+ "Capa Finatec" : [],
+ "Receita x Despesa" : [],
+ "Exec. Receita e Despesa" : [],
+ "Diárias" : [],
+ "Passagens e Desp. Locomoção" : [],
+ "Material de Consumo" : [],
+ "Serviços de Terceiros PF" : [],
+ "Obrig Tribut e Contributivas" : [],
+ "Bolsas de Pesquisa" : [],
+ "Outros Serviços de Terceiros PJ" : [],
+ "Equip. Material Permanente" : [],
+ "Relação de Bens" : [],
+ "Rendimento de Aplicação" : [],
+ "Conciliação Bancária" : [],
+ }
+ return modelo_ibitic
+
+ def anp(self):
+ modelo_anp = {
+ "" : [],
+ }
+ return modelo_anp