A muito, muito tempo atrás(1997) eu tinha um utilitário, de uns 50k e que através de um script me gerava relatórios em texto. O problema de usá-lo é que meus indices eram CDX e ele não os reconhecia.
Era um daqueles utilitários que só encontramos no VETUSWARE, mas este site era tão repleto que até cansava.
Bom como não tinha como usá-lo mas a proposta era boa, decidi fazer o meu mesmo.
Parti do princípio de que o script ao ser jogado na pasta do meu sistema fosse reconhecido por ele e já o adaptasse ao menu de relatórios(parte avançada), ou seja, se o script fosse trabalhar com o arquivo de contas, ele apareceria automaticamente no menu RELATORIOS/FINANCEIRO.
Exemplo:
Código: Selecionar todos
--RPT1.FRM
HT RELATORIO DE CLIENTES
HT ------------------------------------------------------------------------------------------------------------------------------------
HT NUM CLIENTE TELEFONE CREDITO ENDERECO
HT ----- ---------------------------------------- -------------- -------------- -------------------------------------------------------
DT 99999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX 99999999999.99 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ET**** END OF REPORT ****
TA clientes
-- NX clien003
DC idcliente,nome,telefone,credito,endereco
-- CQ nome
SM credito
RE NAO
ST NAO
LP 132
-- WH idcliente > 10 .and. idcliente < 16
-- - Funciona como um REM do DOS, atuando como uma anotação.
HT - Funciona como o marcador de linhas do cabecalho.
DT - Funciona como o formatador da linha de dados.
ET - Significa fim do relatorio.
TA - Nome da tabela que será usada para obter os dados.
NX - Nome do indice usado para colocar ordem na listagem.
DC - Nomes dos campos que terão seus dados capturados e inxertados na estrutura formatada em DT.
CQ - Funciona como quebra, ou salto que o relatorio deverá ocasionar.
SM - Campo que deverá ser somado ou sumarizado e o resultado apresentado no final do relatorio.
RE - recebe SIM ou NAO para resumir o relatorio.
ST - recebe SIM ou NAO para subtotalizar o relatorio e os campos contidos em SM
LP - Largura do relatorio conforme a impressora.
WH - Funciona como filtragem, WHILE.
Exemplo de script para montar o relatorio resumido, sub-totalizado e com quebra:
Código: Selecionar todos
--RPTfat08.FRM
HT **** VENDAS POR GRUPO ****
HT ---------------------------------------------------------------
HT CATEGORIA QUANTDADE VENDA CUSTO LUCRO
HT -------------------- --------- ---------- ---------- ----------
DT XXXXXXXXXXXXXXXXXXXX 999999999 999,999.99 999,999.99 999,999.99
ET**** END OF REPORT ****
GT --------- ---------- ---------- ----------
GT Total 999999999 999,999.99 999,999.99 999,999.99
TA es
NX es
DC linha|quantidade|valorvenda|customedio|valorvenda-customedio
GC 0|quantidade|valorvenda|customedio|valorvenda-customedio
CQ linha
--SM SIM
RE SIM
ST SIM
LP 64
WH (YEAR(DATAPED) > 2013 .AND. MONTH(DATAPED) = 1) .AND. !EMPTY(LINHA)
Código: Selecionar todos
**** VENDAS POR GRUPO ****
Pagina: 0001 Data: 28/11/2014
---------------------------------------------------------------
CATEGORIA QUANTDADE VENDA CUSTO LUCRO
-------------------- --------- ---------- ---------- ----------
LOJA DIVERSOS 1 38.00 0.00 38.00
---------------------------------------------------------------
SUBTOTAL
7918 20,232.47 7,936.23 12,296.24
LOJA ESPUMAS 6 353.40 0.00 353.40
---------------------------------------------------------------
SUBTOTAL
184556 29,659.23 6,644.54 23,014.69
LOJA-DIVERSOS 1 13.30 6.53 6.77
---------------------------------------------------------------
SUBTOTAL
779 2,366.73 1,073.51 1,293.22
Código: Selecionar todos
--RPT2.FRM
HT **** Contas a Receber/Pagar ****
HT ----------------------------------------------------------------------------------------------------------
HT Vencto Descricao Nome Valor
HT ---------- ---------------------------------------- ---------------------------------------- -------------
DT 99/99/9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 99,999,999.99
ET**** END OF REPORT ****
GT -------------
GT Total 99,999,999.99
TA contas
NX contas
DC areceber|descricao|nome|valor
GC 0|0|0|valor
CQ areceber
--SM areceber
--RE SIM
ST SIM
LP 107
WH YEAR(ARECEBER) > 2013 .AND. MONTH(ARECEBER) = 1
Segue o executável demonstrativo e para usar basta comandar:
NFWRPT.EXE RPT1.FRM TESTE.TXT
RPT1.FRM é um script de configuração da saida.
TESTE.TXT é o nome do arquivo que receberá o conteúdo, segue sem formatação de fontes, somente com EJECT para o salto de folhas.
O demonstrativo tem um preview apenas para mostrar o resultado, também não tem formatação de fontes e nem divisão de páginas.
O código segue com alterações feitas em 28/11/2014, portanto quem quiser usá-lo, pode alterar e caso melhore coloque aqui seu resultado.
O código esta DEFINIDO em sua compilação pela variável contida na primeira linha, ou seja, padrão FIVEWIN e para compilar normal para o console basta colocar outro nome no lugar de FIVEWIN. Porém todos os ajustes que eu tenha feito fiz na parte FIVEWIN, mas acho que refletem no resto.
Uma pequena alteraçãozinha deverá ser feita nas linhas 500,501 e 502, trocando-as por:
Código: Selecionar todos
IF cST = 'SIM'
MyTOT_01(2, aDC, aDT, aHT )
ENDIF

