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.
(http://i68.tinypic.com/14vij4j.png)
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
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.
Beleza foram poucas alterações, segue anexo.
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.
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.
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
Baixei os arquivos modificados, e o jquery + materialize e funcionou.
Seu projeto é de primeira linha, parabéns.
Veja o print em meu pc:
(http://i2.wp.com/linguagemprisma.br4.biz/blog/wp-content/uploads/2017/03/balancete_prisma.png)
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?
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.
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.
Ficou faltando o fornecedores.prisma anexo.
Ele também usa o chartjs:
js/plugins/chartjs/chart.min.js
anexo
Blz. Já estou baixando.
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.
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.
Se for questão do módulo html Prisma, só descompactar o instalador e entrar em usr/local/share/prisma/1.0/plib e copie a pasta html, ela é compatível com versão Prisma 1.0.99
Você pode baixar os fontes e tentar compilar também, compilar_so_prisma.sh ou entre na pasta e compile as libs que preferir e instalar pelo próprio script .sh. Mas eu acho que vai ter algumas incompatibilidades pelo menos em relação ao comentário multilinhas com seu programa.
Até mais.