wandersonwhcr / balance Goto Github PK
View Code? Open in Web Editor NEWBalancete Contábil
License: BSD 3-Clause "New" or "Revised" License
Balancete Contábil
License: BSD 3-Clause "New" or "Revised" License
Precisamos criar um arquivo para descrever como um usuário do Github pode contribuir com o projeto.
Os nomes de tipos de conta não estão encapsulados em método. A consulta de contas utiliza um CASE...END
no banco de dados, o select
do formulário utiliza uma configuração direta. Caso necessite modificar num local, como iremos encontrar os outros?
Precisamos encapsular estas informações de tipos de conta, bem como os tipos de entrada de lançamento para futuro desenvolvimento. Não colocar na classe de persistência em banco de dados. Será que não precisamos de um Entity
?
Criar um template para criação de breadcrumbs que serão apresentadas em todas as páginas. Acho que podemos fazer isso em conjunto com o Navigation
do Zend Framework.
Procurar algum módulo do Zend Framework que efetue a renderização do formulário utilizando o Bootstrap. Creio que isto já exista, caso contrário deveríamos criá-lo.
Configurar o banco de dados na máquina virtual. Precisamos de um usuário e um banco de dados com o mesmo nome do projeto. A senha deste usuário pode ser também igual ao nome do usuário.
Devemos criar um favicon
para o projeto. Podemos capturar as próprias imagens do font-awesome
ou procurar alguma imagem aberta na Internet.
Podemos utilizar uma AbstractFactory
para inicializar os elementos do ServiceManager
no Zend Framework. As controladoras e modelos podem usufruir deste tipo de carregamento, assim como outros objetos que utilizam o mesmo tipo de construtores.
Esta tarefa deve ser feita após a issue #31.
Precisamos que o arquivo composer.lock
também esteja versionado, não somente o composer.json
que foi alterado para instalação do Phinx.
Melhorar a apresentação do formulário de contas, buscando encontrar um padrão para o desenvolvimento do sistema. Não sei se o título do topo está bem definido, acho que podemos utilizar um panel
, como na listagem.
Os títulos das páginas devem estar de acordo com o conteúdo a ser exibido. Para tanto, precisamos adicionar configurações de headTitle
nas camadas de visualização, sendo:
Balance\Controller\Home::indexAction() = Página Principal
Balance\Controller\Accounts::indexAction() = Contas - Listar
Balance\Controller\Accounts::editAction() = Contas - (Adicionar|Editar)
Balance\Controller\Postings::indexAction() = Lançamentos - Listar
Balance\Controller\Postings::editAction() = Lançamentos - (Adicionar|Editar)
Na ação de adicionar ou editar, precisamos verificar qual a chave primária informada. Se ela for igual a zero, então estamos adicionando um elemento, caso contrário, editando.
Inicializar as configurações do Vagrant para termos uma máquina virtual de desenvolvimento.
Precisamos desenhar a tela inicial do sistema, onde é apresentado o balanço geral do sistema. Há uma divisão de contas de ativo e passivo e no rodapé da tabela há uma apresentação de lucro ou prejuízo. No topo da página, como filtro, precisamos colocar um campo de texto que possibilita a pesquisa por data limite.
Precisamos instalar o PostgreSQL no Travis CI para testes.
Os tipos de contas e de entradas de lançamento foram desenvolvidos de forma errada. Precisamos criar migrations para alterar esta tipagem. Os tipos corretos são:
contas -> tipo = (Ativo|Passivo)
entradas de lançamento -> tipo = (Crédito|Débito)
Portanto, precisamos criar dois tipos no PostgreSQL separados, diferentemente do estado atual. Os nomes dos tipos serão: ACCOUNT_TYPE
e ENTRY_TYPE
. As variações serão as seguintes:
ACCOUNT_TYPE = (ACTIVE|PASSIVE)
ENTRY_TYPE = (CREDIT|DEBIT)
Após, criar uma migration para alterar as colunas nas tabelas correspondentes.
Criação da camada de modelo para o sistema. Primeiro, criar uma interface para a camada de modelo. Após, utilizá-la nas camadas de modelo criadas. Precisamos criar 2 camadas de modelo: contas e lançamentos.
Adicionar uma configuração de PHP para ajustar a timezone da máquina virtual, evitando avisos do PHP durante a execução do Phinx.
Precisamos instalar o Bower na máquina virtual Vagrant. Isso irá incluir a instalação de dependências, como o npm
e aquela configuração de HTTPS do apt-get
.
Após o desenvolvimento e merge da tarefa #43, precisamos efetuar a pesquisa através do formulário.
As informações de pesquisa deverão ser armazenadas na sessão para que o usuário mantenha a pesquisa em posteriores acesso à página, bem como paginação. Ou será que as informações de pesquisa deveriam ser colocadas numa query
do location
, como as lojas virtuais fazem?
Estudar.
Criação do arquivo de configuração do Composer, incluindo a instalação do aplicativo na máquina virtual no Vagrant.
Quando o composer executa um self-update, está sendo utlizado a variavel
COMPOSER_HOME=/home/vagrant/.composer
realizar a troca para
COMPOSER_HOME=/root/.composer
Criação de menu superior utilizando as rotas criadas em issues anteriores. Este menu deve ser construído conforme os padrões do Bootstrap, seguindo este formato:
Home
Accounts
Postings
Precisamos executar o migrate
no início do script no Travis CI e migrate -t0
na finalização do script. Isso fará os testes com as migrations e inicializará o banco de dados para os testes.
Precisamos melhorar a apresentação de erros internos (HTTP 500) do aplicativo, verificando configurações para condições de exibição ou não de dados sobre o erro gerado.
Acho que seria interessante a existẽncia de uma camada de modelo que possua uma subcamada de persistência, neste caso, uma camada de banco de dados. Esta camada de persistência seria um objeto configurado na camada de modelo.
Com isto, poderemos ter a seguinte estrutura:
Model
Form
Persistence
A classe do tipo Model
é uma camada de modelo normal que possui um objeto não configurável externamente Form
que representa o formulário de cadastro e um objeto externamente configurável do tipo Persistence
que representa a camada de persistência.
Quando inicializado no ServiceManager
, podemos configurar como camada de persistência um objeto de banco de dados.
Configurar o Zend Framework para apresentar os erros de formulário em português brasileiro. Pode ser hardcoded.
Precisamos criar a estrutura básica de banco de dados para armazenar as informações do Balance. Basicamente, o Balance necessita destas informações:
contas
- id
- nome
- tipo (ativo|passivo)
- descrição
lançamentos
- id
- data e hora
- descrição
entradas
- contas -> id
- lançamentos -> id
- tipo (crédito|débito)
- valor
Utilizar o PHINX para criação das migrations de banco de dados. Colocar as migrations dentro do módulo e não na raiz do projeto. Para cada tabela gerada, criar uma migration separada.
O commit 7354115 está com o arquivo de configurações do módulo com o índice service_manager
duplicado, ocasionando um erro de inicialização do objeto de navegação do Zend Framework.
Precisamos criar uma estrutura que possibilite a validação do balanço do lançamento a ser adicionado no banco de dados. Precisamos também criar os devidos testes durante o desenvolvimento. Este validador deve ser um componente isolado que possibilite a reutilização em outros pontos.
Precisamos que a controladora padrão adicione as mensagens necessárias em salvamentos, como em inserção de elemento, atualização e remoção, bem como a validação de formulário.
Precisamos adicionar uma configuração para inicializar o banco de dados durante a execução do aplicativo Balance
através do Zend Framework. Esta configuração deverá ficar na raiz do projeto, porque é indiferente de módulo.
Durante o provisionamento da maquina virtual, o composer está sendo executado como root,
é necessário alterar o puppet para executar com o usuário vagrant.
A execução do composer install
está executando o bower install
com o diretório HOME
dentro do projeto, adicionando assim um diretório .config
que não deve existir. O problema é que este diretório é responsável pelas configurações do Bower e, portanto, o HOME
deve ser o diretório do usuário, no nosso caso, o /home/vagrant
.
Melhorar a página de erro para página não encontrada (HTTP 404) disponível no sistema, verificando configuração para apresentar ou não o tipo de erro gerado.
No formulário de edição de contas, os breadcrumbs estão vazios. Creio que temos que adicioná-los de alguma forma. Se auxiliar, podemos deixar o último elemento das breadcrumbs sem âncora, ignorando a rota.
A verficação do puppet com unless está fazendo com que
as instruções para criação de usuário e base de dados
não seja executado. O retorno da verificação é 0, porém
o código não é executado.
Criar um template para o FlashMessenger
e exibir 4 tipos de mensagens no topo da página principal. As mensagens não importam, somente precisamos apresentá-las nas cores de alertas do Bootstrap, bem como com o ícone de fechamento. A exibição no topo da página principal é somente para apresentação do mesmo.
Devemos criar o template do Paginator
e utilizá-lo nos lançamentos. Este recurso deve trabalhar em conjunto com o objeto Table
durante a configuração em setElements
, já que teremos um paginador do Zend Framework.
Para evitar que algumas âncoras sejam acessadas diretamente, sem confirmação, como por exemplo, remoção de elementos, precisamos criar um Javascript para isto.
Após, adicionar um atributo data-confirm
no botão de remoção do layout/table-action
.
Podemos capturar a renderização da Exception
na issue #32, colocando-a num template e utilizar também na renderização da página de erro desenvolvida na issue #33. Eu só descobri que uma página 404 no ZF também envia uma Exception
por causa do Skeleton. Somente podemos fazer esta tarefa após o término das tarefas em questão.
Precisamos que o bower
esteja instalado no Travis CI.
Instalar o Zend Framework utilizando o Composer. Também inicializá-lo com um módulo homônimo ao projeto, com controladora e visualização vazias.
Precisamos executar as migrações do phinx e o bower após a execução do
composer install
Precisamos criar um pequeno componente onde consigamos cadastrar colunas e linhas para posterior renderização utilizando um template. Quando a estrutura da tabela estiver modificada, poderemos alterar num único local centralizado no sistema.
Este componente pode ser bem simples e possivelmente alguém já pode ter construído ele. Podemos procurar na Internet se já existe um módulo do Zend Framework que faça esta tarefa.
Precisamos configurar o sistema para utilizar algum CI grátis disponível na Internet. Também instalar o PHPLOC, PHPCPD, PHP Parallel Lint, PHPCS, PHPCS Fixer, PHPMD e PHPUnit.
O valor vazio de objetos do tipo Select
de formulários deve ser sempre o mesmo, configurado para todos. Encontrar uma forma de fazer isso. O valor padrão deve ser -- Selecione --
.
Precisamos que o banco de dados esteja corretamente inicializado antes que o composer install
seja executado no Travis CI.
Criar todas as rotas do sistema. Isso incluir a criação de todas as controladoras e visualizações necessárias para estas rotas. Buscar saber quais são os termos utilizados no banco de dados para nomenclatura das controladoras.
Precisamos utilizar o Bower para instalação do jQuery e Bootstrap no aplicativo, inicializando-os no layout.phtml
principal do projeto.
Começar a desenvolver o formulário de pesquisa em listagem, mas somente a visualização, sem o recurso funcionando. Isto será definido em outra tarefa.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.