Ellathet / control.finance

A code created to improve my study together!
1 stars 0 forks source link

Questão SO-pt #1

Open subversivo58 opened 3 years ago

subversivo58 commented 3 years ago

Olá, respondi sua questão no SO-pt sobre executar função uma vez acada 24Hs.

Aparentemente a função conflitava com os demais estados de seu código. Clonei seu repo algumas horas antes de suas ultimas modificações, rodei localmente e não recebi no console nenhum erro ou advertência.

Aparentemente estava td ok

Captura de tela de 2021-02-18 19-41-40

Recentemente fiz um "fetch" das atualizações mais recentes de seu repo.

A pergunta é: você ainda não solucionou a questão?


PS:

Pelo que entendi seu código é para estudo, aprendizagem, etc ... eu achei interessante e caso queira uma colaboração na resolução de problemas eu estaria interessado em colaborar na medida do possível.

Ellathet commented 3 years ago

Até ai tudo bem, porém se eu adiciono uma transação automática para hoje, e voltar para ela ser carrega na HOME, ela vai normal, porém quando eu volto para fazer outra transação automática no mesmo dia ela não vai!

Criando transação automática: image

Ela foi para a Home: image

Indo adicionar outra transação automática: image

Ela não atualiza na Home:

image

Esse é o problema, tentei fazer algo por id só que a logica fugiu da minha cabeça!

E eu testei se ele vai ativar no próximo dia, por exemplo eu agendo algo para amanhã, e ele vai ativar?

subversivo58 commented 3 years ago

Bom, o problema real de você não poder ver as transações automáticas ocorre na forma como estruturou sua inicialização.

Ao inicializar você usa Transacion.all que por sua vez apenas chama Storage.get() que por sua vez busca apenas uma tabela: "high.finances:transactions".

Você deveria criar uma metodo que realmente pegue as duas tabelas (transactions, autotransactions) ... um modo paleativo seria editar sua função incomes() de seu objeto Transaction para concatenar os dois arrays por exemplo:

    incomes() {

        let income = 0;
        Transaction.all.concat(Storage.Autoget()).forEach((transaction) => {
                console.log(transaction)
                if(transaction.amount > 0) {
                    income += transaction.amount
                }
            })

        return income
    }

Como Transaction.all retorna um array e Storage.Autoget() também, você pode simplesmente concatenar e isso ira lhe mostrar o total mesmo sem passar pela função de confirmação.

Tirei alguns prints:

Captura de tela de 2021-02-18 22-00-21 Captura de tela de 2021-02-18 22-00-50 Captura de tela de 2021-02-18 22-01-35 Captura de tela de 2021-02-18 22-01-51

Bom isto apenas ira atualizar os valores de entradas mas não ira mostrar os automáticos na listagem.

Caso precise mosrtar os automáticos na listagem de "Entradas" terá de fazer quase a mesma coisa em seu App.init(): concatenar as duas tabelas para enviar para DOM.addTransaction, algo como isto: Transaction.all.concat(Storage.Autoget()).forEach(DOM.addTransaction) mas dai já teria de ajustar seu DOM.innerHTMLTransaction() para exibir os resultados da tabela "autotransactions".

Uma sugestão seria adiconar a esta tabela (autotransactions) um campo de descrição e um campo data (date) também.

Ellathet commented 3 years ago

Esse método até funcionou em partes, porém ocorre um erro por que não tem nada barrando essa soma, exemplo:

image

Adicionei essa transação automática, para o dia 17, hoje é dia 19, e ela foi cobrada da mesma forma.

image

Sobre adicionar a tabela informações eu faço isso pelo método:

AutoTransations.Convert()

Esse método passa a array por algumas formatações, como adicionar uma data na mesma, já que a a tabela de AutoTransitions não vem com a data completa somente o dia em que ela deve ser executada!