-
Notifications
You must be signed in to change notification settings - Fork 0
/
changelog.txt
333 lines (306 loc) · 17.1 KB
/
changelog.txt
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
Histórico de versões:
====================
---
v.0.22 - 31/03/2018
* As sessões de acesso à base de dados passam a ser geradas através de um
`@contextmanager` chamado `db_main.db_session_scope()`.
* Reorganização geral do código referente ao acesso à base de dados,
repartindo-o por várias classes e módulos de acordo com as suas áreas de
ação.
* Corrigido um bug que poderia fazer com que uma janela de detalhes de
contacto ou de remessa abrissem ocasionalmente em branco e sem quaisquer
controlos.
* Para simplificar um pouco o desenvolvimento, optou-se por eliminar a tabela
de produtos, incluindo os dois campos correspondentes na tabela reparações.
* Foi corrigido um bug que impedia a visualização da senha do cliente.
---
v.0.21 - 15/03/2018 - Área de contactos 100% operacional!
* As senhas dos utilizadores já não são armazenadas na base dados. Em vez
disso, é gerado e armazenado um hash, que é depois utilizado para a
verificação da senha no momento do login.
* Ao executar `db_local_admin.py`, é pedida a introdução de uma senha inicial
para o administrador (npk).
* Já é possível efetuar a alteração da senha de utilizador.
* Já é possível atualizar os dados dos contactos a partir da respetiva janela
de detalhes.
* Os números de telefone na janela de detalhes de contactos são agora
formatados automaticamente, à semelhança do que já contecia no painel de
introdução de novo contacto.
* Ao adicionar um contacto novo, caso não esteja já a ser criada uma nova
reparação, é apresentada ao utilizador uma caixa de diálogo perguntando se
deseja criar reparação utilizando esse contacto. O tipo da reparação a
criar (artigo de stock ou de cliente) é selecionado automaticamente com
base no tipo de contacto.
* A pesquisa de contactos agora abrange também o campo NIF.
* Ao pesquisar contactos com um termo de pesquisa numérico, é adicionado
automaticamente um wildcard no final, por forma a fornecer mais resultados.
* As senhas de equipamentos de clientes são sujeitas a um procedimento de
ofuscação simples antes de guardar na base de dados. Adicionalmente, na
janela de detalhes de reparação, para reduzir a probabilidade de
apropriação não autorizada, a senha apenas é mostrada quando o ponteiro do
rato é colocado por cima do campo correspondente e é novamente ocultada
assim que o ponteiro do rato se afaste.
* Na janela de detalhes de contactos o separador "Reparações" já apresenta a
lista de reparações obtida a partir da base de dados. Ao clicar numa dessas
reparações, é aberta a respetiva janela de detalhes, conforme esperado.
Este separador é mostrado tanto para clientes como fornecedores.
* Na janela de detalhes de contactos já é possível copiar dados do contacto
para a área de transferência.
* O método `popupMsg` da classe `baseApp` foi convertido numa função, ficando
a partir de agora no módulo `extra_tk_utilities.py`. Deste modo, pode ser
utilizado por qualquer janela do tkinter, mesmo que esta não herde da
classe `baseApp`. Foram também efetuados alguns ajustes visuais por forma a
melhorar um pouco o contraste com o conteúdo da janela onde aparecem estas
mensagens.
* A lista de dependências (`requirements.txt`) foi atualizada de modo a melhor
refletir as dependências secundárias.
---
v.0.20 - 9/03/2018
* Já é possível inserir novos contactos na base de dados utilizando o
respetivo formulário.
* Implementada validação básica de endereços de email, números de telefone e
outros dados ao criar um contacto.
* Ao criar um novo contacto, se já existir na base de dados algum contacto
com o NIF introduzido, o utilizador é informado, com a opção de consultar
numa janela à parte o registo já existente.
* As janelas de contactos e remessas são agora apresentadas no ecrã
encostadas ao lado direito da janela principal. No caso de não haver espaço
suficiente, aparecem encostadas à extremidade direita do ecrã.
* Adicionada uma breve mensagem informativa ao módulo db_local_admin.py para
ser apresentada na eventualidade de a configuração inicial da base de dados
falhar.
* As caixas ttk.ScrolledText foram substituídas por caixas simples tk.Text.
* Alguns ajustes visuais para permitir a interface ajustar-se melhor a ecrãs
mais pequenos.
---
v.0.19 - 1/03/2018
* O botão "Criar reparação" na janela de detalhes de contacto já funciona.
* Ao sair do campo do número de contacto, o nome do cliente/fornecedor e a
informação de contacto são preenchidos automaticamente. Caso não exista
cliente ou fornecedor com o número indicado, é dada ao utilizador a opção
de criar um novo contacto.
* Adicionados calendários para facilitar a introdução de datas nos
formulários.
* Adicionadas barras de progresso à janela principal, contactos e remessas.
* Ao selecionar uma reparação na janela principal, já mostra na barra de
estado o número de série do artigo a que se refere esse processo.
* O separador "Geral" da janela de detalhes da reparação já mostra dados
obtidos a partir da base de dados.
* Os itens de menu "Nova reparação", "Novo contacto" e "Nova remessa" são
desativados ou ativados automaticamente conforme, respetivamente, estejam
visíveis ou não os respetivos formulários de introdução de dados.
* Foi efetuada uma reorganização dos módulos agrupando-os em pacotes/pastas.
---
v.0.18 - 14/02/2018 - A comemorar 1 ano de desenvolvimento(s).
* Adicionados comandos ao menu para filtrar reparações por estados.
* Janela "Acerca de" agora informa sobre o tamanho atual do ficheiro da base
de dados, bem como do número total de reparações e contactos já registados.
* Novos atalhos de teclado.
* Corrigido um bug que impedia que fosse mostrado o fundo das linhas em cor
alternada nas listas de reparações e contactos.
* Criado método para preencher lista de mensagens a partir da base de dados.
* As janelas de detalhes de evento/mensagem já mostram dados obtidos a partir
da base de dados.
* Melhoramentos na pesquisa de reparações: agora são incluídos os registos em
que é encontrada correspondência nos dados do cliente e/ou do artigo.
* Algumas alterações para facilitar o desenvolvimento futuro.
---
v.0.17 - 31/01/2018
* Criado método para preencher lista de reparações a partir da base de dados.
* Criado método para filtrar reparações por estados.
* Criado método para realizar pesquisas de reparações, filtrando por estados
e com suporte básico para "wildcards" (*, ?, %). É possível usar expressões
com "wildcards" (ex.: "N?twork*"), sendo que nesse caso é necessário
especificar na expressão se no início e/ou no final também leva "wildcard".
Por defeito, todas as pesquisas sem "wildcards", com exceção das pesquisas
numéricas, são realizadas com "wildcards" antes e depois da expressão
introduzida ("%pesquisa%"), de modo a fornecerem mais resultados. As
pesquisas começam automaticamente quando o utilizador introduz um mínimo de
4 caracteres e são atualizadas em tempo real à medida que escreve. As
pesquisas são feitas sempre considerando apenas os estados de reparação
correspondentes à vista selecionada. Para selecionar em toda a base de
dados, basta clicar em "Mostrar processos… > Todos os processos" antes de
iniciar uma nova pesquisa.
* Criado método callback para alterar o estado de uma reparação (falta a
implementação correspondente nos módulos de base de dados).
* Criado método para preencher lista de contactos a partir da base de dados.
* Criado método para filtrar contactos por tipo (clientes/fornecedores).
* Criado método para realizar pesquisas de contactos, filtrando por tipo
(cliente ou fornecedor) e com suporte básico para "wildcards". As pesquisas
começam automaticamente quando o utilizador introduz um mínimo de 3
caracteres e são atualizadas em tempo real à medida que escreve. As
pesquisas são feitas sempre considerando apenas o tipo de contacto
correspondente à vista selecionada.
* Logotipo na janela de login.
* Possibilidade de terminar sessão e efetuar login com utilizador diferente.
---
v.0.16 - 15/01/2018
* Lojas passam a ser representadas numa tabela independente dos contactos.
* Janelas de login e de alteração de senha.
* Iniciado o rascunho de alguns dos primeiros modelos de dados (SQLalchemy).
* Bug fixes.
---
v.0.15 - 28/12/2017
* Agora a função obter_lista_artigos_emprest() devolve uma estrutura de dados
diferente, baseada em dicionários e tuplas.
* No separador "Empréstimos", ao selecionar um artigo da combobox, é mostrado
automaticamente no campo "ID" o número de artigo correspondente.
* No separador "Empréstimos", ao introduzir um ID de artigo, é selecionado
automaticamente na combobox o artigo de empréstimo correspondente.
* Adicionada opção de configuração que permitirá escolher entre uma base de
dados local (SQLite, via SQLalchemy?) ou o acesso a uma web API.
---
v.0.14 - 17/09/2017
* Corrigido um bug que impedia a expansão e o correto redimensionamento da
tabela do histórico de reparações (janela detalhes de reparação).
* Corrigido um bug que impedia a expansão e o correto redimensionamento de
alguns campos de texto no painel geral da janela detalhes de reparação.
* Corrigido um bug que impedia a expansão e o correto redimensionamento do
campo de notas na janela detalhes de contacto.
* Corrigido um bug que impedia a expansão e o correto redimensionamento do
campo de notas na janela detalhes de mensagem.
* Ajustada a altura máxima da janela de detalhes de reparação.
* Ajustada a altura máxima da janela de detalhes de mensagem.
* Agora o painel de mensagens abre automaticamente ao iniciar a aplicação no
caso de haver uma ou mais mensagens na lista. Caso não haja mensagens, a
aplicação abre com esse painel oculto.
* Adicionado novamente separador "Empréstimos" (em construção).
* Botão '+' da janela de detalhes de reparação já abre a ficha de contacto.
---
v.0.13 - 03/09/2017
* Adicionado separador "histórico" à janela de detalhes de reparação.
* Temporariamente ocultados os separadores "Orçamentos" e "Empréstimos", que
deverão ser adicionados novamente numa fase posterior do desenvolvimento.
* Adicionadas funções de contagem de remessas, contactos, mensagens (atualizam
p.ex. o texto da barra de estados nas janelas e painéis respetivos).
* Adicionada função que permite alterar o título (Label) dos campos de texto
das classes LabelEntry e LabelText.
---
v.0.12 - 15/07/2017
* Adicionados botões à barra de ferramentas da janela de detalhes de remessa.
* Adicionada contagem do nº de processos de reparação presentes na remessa.
* Criada função para teste da tabela da janela de detalhes de remessa.
* Alguns ajustes na tabela de reparações na janela detalhes de remessa e nas
dimensões dessa janela.
* Criada janela de detalhes de contactos.
* Nas janelas que fazem uso de separadores (detalhes de contacto e detalhes de
reparação), caso o utilizador não tenha redimensionado a janela, ao mudar de
separador, o tamanho da janela é ajustado automaticamente em função dos seus
widgets.
---
v.0.11 - 03/07/2017
* Adicionadas callbacks aos vários botões da janela de detalhes de mensagem.
* Foi simplificado o código relativo à geração das janelas de detalhes.
* Adicionada indicação sobre pagamento ou oferta de portes à janela de
detalhes de reparação.
* Criada janela de detalhes de remessa.
---
v.0.10 - 17/06/2017
* Adicionadas dicas aos botões e campos de pesquisa das barras de ferramentas.
* Adicionadas dicas a alguns controlos em formulários para clarificar a sua
funcionalidade.
* Criada janela de detalhes de mensagem/evento.
* Adicionado à tabela de reparações um campo para especificar se o processo
corresponde ou não a uma reincidência.
---
v.0.9 - 30/05/2017
* Adicionados mais campos de informação ao painel de detalhes de reparação.
* O código da classe de detalhes de reparação foi reorganizado.
* Adicionada morada para entrega no formulário de introdução de reparação,
na janela de detalhes de reparação e no botão "Copiar".
* Adicionada indicação de pagamento de portes nos casos aplicáveis.
* Adicionados métodos para limpar os formulários de introdução de dados.
* Adicionadas caixas de diálogo para confirmação de impressão (nova reparação
e nova remessa) e para cancelamento de introdução de dados.
* No formulário de nova remessa, o número de processos a enviar é agora
apresentado na própria barra de estado, conforme seria esperado.
* As listas de países e créditos de contribuidores foram integradas no módulo
'global_setup.py'.
* Adicionados placeholders para algumas funções auxiliares.
---
v.0.8 - 17/05/2017
* Criada estrutura da janela de detalhes de reparação, com parte dos widgets.
* Corrigido um bug que fazia com que alguns registos nas tabelas ficassem
fora da área visível da janela.
* Corrigido um bug que impedia a abertura de um comando do menu.
* Corrigido um bug que impedia o fecho das janelas "Sobre" e "Agradecimentos".
* O comando de criar nova remessa agora ativa a janela de remessas no caso de
ela se encontrar por detrás de outras janelas.
* Os botões "Adicionar" nos paineis de introdução de dados são agora
destacados como ativos, seguindo a recomendação das macOS Human Interface
Guidelines.
* O tamanho do texto nos paineis de introdução de dados foi reduzido e os
títulos de cada secção têm agora mais destaque, com a aplicação de estilos
(permite uma mais fácil alteração, no módulo 'base_app.py').
* O tamanho do texto dos botões nas barras de ferramentas das janelas
secundárias foi ligeiramente reduzido.
* Foi simplificado o código relativo à aplicação de estilos dos widgets.
---
v.0.7 - 30/04/2017
* Criado mecanismo para abertura de janelas secundárias com informação
detalhada sobre um determinado processo de reparação, um contacto, uma
remessa ou uma mensagem.
* Corrigido um bug que impedia o fecho de janelas secundárias.
* Adicionados menus contextuais nas tabela de reparações e mensagens.
---
v.0.6 - 14/04/2017 (2 meses desde o início do projeto)
* Adicionados campos ao painel de introdução de nova remessa.
* Ajustes na janela de remessas.
* Criação de novas classes LabelEntry e LabelText, que ajudam a reduzir a
extensão do código e a melhorar a sua legibilidade ao criar formulários.
* Aplicação dessas duas novas classes nos locais apropriados.
* Correção da codificação do ficheiro de países e respetiva abertura.
---
v.0.5 - 06/04/2017
* Adicionado painel de introdução de novo contacto, na janela de contactos.
* Botão "+" no painel de criação de reparação abre a janela de contactos,
caso não esteja aberta, e mostra o painel de criação de novo contacto.
* Adicionado painel de introdução de nova remessa, na janela de remessas
(ainda incompleto).
* Corrigidos bugs que impediam a abertura das janelas "Acerca" e
"Agradecimentos".
* Nova tentativa de separar as classes por ficheiros diferentes sem perder a
comunicação entre elas.
---
v.0.4 - 24/03/2017
* Removida coluna do nº de série na tabela de reparações, para libertar espaço
e melhorar a legibilidade.
* O nº de série aparece agora na barra de estado, ao selecionar a reparação.
* Ajustes na animação do painel de entrada de dados.
* Ajustes na largura das colunas da tabela de reparações.
* Adicionados no formulário de entrada de dados os campos para reparações de
stock, bem como os métodos necessários para mostrar e esconder os campos,
reorganizando visualmente o formulário.
* Ajustes visuais no formulário de entrada de dados.
* Para facilitar comunicação entre as diferentes janelas e respetivos painéis
de introdução de dados, etc., as classes ContactsWindow() e RemessasWindow()
voltam a residir no mesmo módulo que a classe App() (i.e., a classe da
janela principal).
---
v.0.3 - 13/03/2017 (1 mês desde o início do projeto)
* Adicionado painel de mensagens, atalho de teclado e botão para abrir e
fechar.
* Aumentada a largura máxima da janela.
* Criado método na classe baseApp para colorir alternadamente as linhas de
tabelas.
* Criado método inserir_msg() para formatar, moldar e inserir o texto de cada
mensagem.
* Adicionado painel de entrada de dados, com animação (opcional) e atalhos de
teclado.
---
v.0.2 - 07/03/2017
* Menu da aplicação.
* Atalhos de teclado para abrir/fechar janelas secundárias (contactos e
remessas).
* Organização dos botões nas barras de ferramentas.
* Adicionados ícones aos botões.
* Ajustes visuais (largura das colunas, tamanho dos botões).
* Rascunho inicial do ERD para a base de dados
---
v.0.1 - 24/02/2017
* Rascunho inicial da interface de utilizador.
* Criação dos módulos e classes de base para as janelas principais.
---
v.0.0 - 14/02/2017
* Levantamento inicial de funcionalidades da versão antiga.
* Configuração inicial da pasta do projeto.