PROJETO BALANCETE EM HTML + SQLITE + PCGI + CSS + JS + PRISMA

Iniciado por rafael, Março 03, 2017, 09:34:17 AM

tópico anterior - próximo tópico

rafael

BOM DIA PESSOAL,

ESSA LINGUAGEM JÁ TEM ME AJUDADO MUITO...

ENTÃO RESOLVI COMPARTILHAR UM PROJETO QUE FIZ

PRA TALVEZ AJUDAR ALGUÉM TAMBÉM.






LEMBRANDO QUE:

USO LINUX UBUNTU 64BITS
APACHE2 COM CGI HABILITADO E ÍNDICE PARA ARQUIVOS .PRISMA
USEI A FORMATAÇÃO DO MATERIALIZE


O QUE AINDA NÃO CONSEGUI FAZER FOI UM CALENDÁRIO

SE FIZER ALGUMA MELHORIA POSTE PRA NÓS

SE ALGUÉM QUISER ALTERAR SEM INSTALAR TAMBÉM
POSSO DISPONIBILIZAR UM SERVIDOR RODANDO UMA CÓPIA NA REDE


adalberto

#1
Muito obrigado por disponibilizar seu projeto. Vou testá-lo.

Notei que você fez umas alterações na lib html:

html.folha_de_estilo("formatartabela.fec");

Se for possível, poste as libs com os upgrades.


rafael


adalberto

Só alguns detalhes que peguei até agora:

Para este código funcionar na versão 1.0.99 é necessário mudar os comentários multilinhas:

de

/**   
      ...     
**//

para

/*
  ...   
*/

ou para manter compatibilidade entre as duas versões:
/**
  ...   
**///

Consegui fazê-lo rodar no Xampp windows.

adalberto

Rafael, não sei o que está acontecendo, consegui rodar seu projeto no Linux também, mas algumas coisas não funcionam, como os botões de editar.

rafael

DEVE SER O JQUERY OU CSS

USE ESSES DOIS:

js/materialize.min.js
js/jquery.min.js
css/meteralize.min.css

se não der certo tô enviando os arquivos principais que modifiquei

Em breve posto os gráficos

adalberto

Baixei os arquivos modificados, e o jquery + materialize e funcionou.
Seu projeto é de primeira linha, parabéns.

Veja o print em meu pc:


rafael

Os gráficos já estão quase prontos mas ainda preciso alimentar o banco.

Estou tendo uma dificuldade em capturar os dados do extrato bancário txt:
06/02/17;COMPRA MAESTRO                ;401997;19,00-;5.351,53+;
04/02/17;COMPRA MAESTRO                ;401997;24,00-;5.327,53+;
05/02/17;COMPRA MAESTRO                ;401997;70,90-;5.256,63+;

Quero pegar os dados linha por linha e gravar no banco.
Exemplo:
Onde tiver ocorrência de ;401997; pegue o valor até a próxima ; e pegue o valor até a antecessora ; mais a data
e formate assim:
data = "dataX"
valor = "valorX"
descricao = "descricaoX"
se valorX tive um sinal de + entao
tipo = "entrada" senao tipo = "saída" fim

Agora pego as variáveis pra gravar no banco, isso já sei...

Alguém me ajuda?


adalberto

Boa noite.
Dê uma olhada neste código aqui:

//05/02/17;COMPRA MAESTRO                ;401997;70,90-;5.256,63+;

sis.deflocal('pt_BR.UTF-8');//define o idioma.
//abrindo o arquivo:

local arq = 'tmp.txt';
local tab_dados = {}; //criando uma tabela vazia. (matriz) para gravar as linhas
local cont = 1;//tabelas em Prisma começam por um e nao zero.

//este é um modo simples de ler linha por linha de um arquivo usando o 'para':
local a, erro_msg = es.abra(arq,'leitura');
se a entao
  enquanto 1 inicio
    local lin = a:leia();//pega uma linha de cada vez
    se nao lin entao quebre fim;//quebra o laço de repetição.
    se string.procure(lin, ';401997;') entao //se houver ;401997; na linha lida entao:
      local t = string.analise(lin, ';');//cada vez que tiver um ';' a string é quebrada
      //o retorno t é uma tabela
      tab_dados[cont] = {}; //cada indice de tab.. é uma nova tabela.
      tab_dados[cont].data =  t[1]:apare(); // o mesmo que: string.apare(t[1]); mas no modo objeto.
      tab_dados[cont].descricao = t[3]:apare(); //t[2] é o ';'
      tab_dados[cont].valorSaida = t[7]:apare(); //t[4] é o ';', t[5] é 401997 e t[6] é ';'
      tab_dados[cont].valorEntrada = t[9]:apare();//t[8] = ';' 
      cont = cont + 1; //incrementando para a proxima linha.
    fim
  fim
  a:feche(); 
senao
  imprima("Erro:", erro_msg);
  sis.saia(1);   
fim


//Agora você pode usar o comando abaixo para gravar no banco de dados:
para i = 1, #tab_dados inicio //de 1 até o tamanho de tab_dados
 
//cada indice de tab_dados é uma sub tabela com aqueles valores:
  imprima ( //aqui você pode fazer o código para gravar no banco de dados;
   "\nData: " .. tab_dados[i].data,
   "\nDescrição: " .. tab_dados[i].descricao,
   "\nSaída: " .. tab_dados[i].valorSaida:corte(1,-2) ,//eliminando o último caractere -
   "\nEntrada: " .. tab_dados[i].valorEntrada:corte(1,-2)//idem
   );
   poe'----------------------------------------------'
fim



O comando string.analise quebra uma string em tokens que você define no segundo parâmetro ex.:
s = "imprima( tab.nome);"

t = string.analise(s, '().;');

O resultado é uma tabela, mais ou menos assim:

t[1] = imprima
t[2] = (
t[3] = tab
t[4] = .
t[5] = nome
t[6] = )
t[7] = ;

Veja que a quebra ocorre cada vez que um caractere do segundo parâmetro é encontrado na string passada no primeiro parâmetro. Como o conteúdo do extrato é bem delimitado pelo ';' então usei ele como quebra de token.

Até mais.

rafael

Obrigado Adalberto,

Me ajudou muito,

Aproveito pra atualizar o projeto, agora já tem gráficos e correção de alguns tilts da folha de estilo.


rafael


rafael

Ele também usa o chartjs:

js/plugins/chartjs/chart.min.js

anexo

adalberto


adalberto

Ocorreu um erro quando fui testar o upload.
Object not found!

Faltou o arquivo: gravandoarquivo.prisma

Seu projeto está gigante heim. O primeiro deste porte na linguagem.

Uma dica para quem usa servidor no linux. Não se esqueça de dar permissão para os arquivos novos.

Em geral, o comando  sudo chmod -R +x *  dentro da pasta do programa já serve.

Falou até mais.

rafael

Este não deu certo porque não consegui instalar a versão 1.0.100

O formulário de envio de arquivos serviria pra tratar o extrato bancário e alimentar o banco a partir deste automaticamente.

Eu fiz um outro programa derivado do seu código acima pra fazer este tratamento manualmente.

Ele pega um arquivo de texto contendo o extrato, seleciona as sentenças que eu quero importar depois grava no banco.

Se alguém quiser está anexo.