# Projeto Integrador
Projeto de fim de licenciatura. Entrega da proposta: 20 de janeiro
Datas da cadeira: 6 de fevereiro e 30 de junho
# Dados da proposta
Título: Implementação de campos dinâmicos na emissão de faturas (TÍTULO WIP, ainda aberto a sugestões)
Label: \<VAZIO\>
Tipo: "Estágio"
Áreas envolvidas: Escolher a(s) áreas(s) de domínio de conhecimento que o trabalho envolvido na proposta aborda:
* Arquitetura de Computadores, Sistemas Operativos e Redes :heavy_check_mark:
* Engenharia de Software :heavy_check_mark:
* Programação :heavy_check_mark:
Orientador: NÃO PREENCHER!!! (Será preenchido a-posteriori, aquando da aprovação e efetivação da proposta).
Coorientador: NÃO PREENCHER!!! (Será preenchido a-posteriori, aquando da aprovação e efetivação da proposta, no caso de existir um co-orientador).
Instituição de Acolhimento: Cloudware
Outra Instituição de Acolhimento: \<VAZIO\>
# Supervisor na Instituição de Acolhimento
Nome: Fernando Alves
Email: fernando.alves@cldware.com
Telefone: 913424592
# Orientador Proposto para o Estágio
Nome: Henrique José Carvalho Faria
Afiliação: FCUP, Departamento de Engenharia Informática
# Proposta de Estágio
**Descrição da proposta (contexto, objetivos, plano de trabalho, etc.):**
As soluções da Cloudware focam-se em software de contabilidade e faturação. Todas estas são soluções web e portanto sem a necessidade de instalação nas máquinas dos clientes. Atualmente a Cloudware lida com mais de 160.000 empresas, e para ser capaz de lidar com a elevada carga de pedidos associados a essas entidades, a arquitetura do software segue uma abordagem de micro-serviços que comunicam entre si.
No que toca à área de faturação, diversos clientes têm necessidades diferentes e a Cloudware foca-se no desenvolvimento de funcionalidades que lidem com estes requisitos. A necessidade em questão no contexto deste projeto consiste em possibilitar aos utilizadores emitirem faturas com certos campos preenchidos dinamicamente ao nível da Série. Uma mesma empresa pode ter múltiplas Séries de Documentos, e querer que certos campos nas faturas respetivas variem em função da Série. Exemplo: uma empresa quer que as faturas da Série A tenham o logótipo A e a morada A, enquanto que as da Série B tenham o logótipo B e a morada B.
Os valores que se pretendem poder definir ao nível da Série são o logótipo e os dados de contacto (telefone, email, site, fax), visto esses serem os campos que são visíveis numa fatura que podem depender da Série em questão. Se uma Série não tiver nem o logótipo nem os campos de contacto atribuídos, as faturas devem ser emitidas com os valores da empresa que já são usados atualmente. No entanto, se uma Série tiver esses campos atribuídos, esses serão os valores apresentados nas faturas emitidas para essa Série.
Os logótipos teriam portanto de poder serem carregados para a plataforma pelos utilizadores, e a sua replicação terá de ser garantida para prevenir casos de perda de dados por falha de hardware. Para tal, a Cloudware utiliza um conjunto de file servers cuja principal funcionalidade é guardar grandes quantidades de ficheiros de pequena dimensão (como imagens como é o caso dos logótipos), e garantem a sua replicação. Estes ficheiros são guardados garantindo os requisitos mínimos legais de qualidade de imagem, e os file servers oferecem um elevado grau de eficiência nos acessos a ficheiros.
A proposta de projeto aqui descrita teria então como objetivos:
- criação de um web component (https://www.webcomponents.org/, https://open-wc.org/) para upload genérico de imagens
- implementação de um micro-serviço para o upload de logótipos por parte da empresa e integração com o web component mencionado anteriormente
- comunicação deste novo micro-serviço com o file server respetivo, para guardar o logótipo e garantir a sua replicação
- adicionar os restantes campos necessários à tabela das Séries, e disponibilização de uma interface para atribuir esses valores
- alteração do mecanismo de emissão de faturas para usar os valores da Série, se eles estiverem atribuidos
O plano de trabalho começaria pela implementação da interface que os utilizadores usariam para definir o logótipo e/ou os campos de contacto da Série. Daí seria implementado o micro-serviço de upload do logótipo com que esta interface iria interagir, adicionando também os campos necessários à tabela das Séries. Finalmente, o último passo passaria por alterar o mecanismo atual de emissão de faturas para usar os valores da Série, se estes estiverem definidos. Toda a funcionalidade seria testada no ambiente de integração da Cloudware, e terá de ser aprovada antes de ser lançada nos ambientes de produção.
**Enquadramento temporal esperado (datas de inicio e fim):**
O projeto teria como data de início 10 de fevereiro e terminaria em finais de maio, o que equivale a aproximadamente 14 semanas. Tendo em conta a duração do estágio de 162 horas, e atribuindo cerca de 20 horas para a elaboração do relatório e vídeo curto, o esforço semanal médio seria de 10 horas.