JQM & Maker – Um exemplo

25 de novembro de 2015 Deixe um comentário

Olá Pessoal.

Venho neste humilde exemplo, mostrar como podemos fazer uma aplicação para o JQueryMobile que se comunica com o Maker.

Este exemplo foi feito usando o Maker 3.6, algumas funções específicas desenvolvidas pela MEx (Maker Extreme) e banco PostgresSQL 9.0.

Usei a tabela interna de usuários da estrutura do banco como provedora dos dados. Então chega de papo e vamos ao que interessa.

1) Primeiramente você deve baixar o arquivo compactado que contém todos os arquivos necessários ao nosso exemplo neste link: Clica NEU!

Abra ele e você verá a seguinte estrutura:

MakerJQM1

  • A pasta css contém o css do JQM;
  • A pasta js contém o Javascript com as funções que farão a chamada do fluxo externo no Maker, responsável por fornecer os dados;
  • O arquivo FRZ contém o fluxo que fornece os dados utilizando um objeto JSON e três funções que trabalham em conjunto para tratar os dados;
  • O arquivo HTML é o arquivo principal para rodar o exemplo JQM.
  • O Readme contém algumas observações importantes sobre os arquivos.

2) Extraia o conteúdo do arquivo compactado em uma pasta, como exemplo, irei utilizar o caminho C:\MakerJQM. Não use acentos ou espaços no caminho onde colocar esses arquivos.

Você pode rodar o “index.html” e obterá o resultado:

MakerJQM2

Nem adianta clicar no “Show” que não vai acontecer nada, pelo menos ainda. Temos mais alguns passos para isso.

3) No Maker, em um projeto de sua escolha, faça a importação do FRZ pelo menu “Projeto / Importar”. Como disse anteriormente, é 1 fluxo e 3 funções.

4) Depois que você importar, procure o fluxo “wsexemplo” e verifique se as opções “Web” e “Permitir Acesso Externo” estão ativadas, caso contrário ative e salve o projeto.

MakerJQM3

5) Feito isso você deve reiniciar o Webrun e rodar o projeto.

6) Vá ate a pasta “js” no C:\MakerJQM e edite o arquivo “chamadas.js

Na linha 13, você irá encontrar:

var contexto = [‘http://127.0.0.1:8036/webrun/’, ‘ERP’]; //Development address
//var contexto = [‘http://sistemas.seudominio.com.br/’, ‘ERP’]; //Production address

Nessa linha você deve colocar endereço do ambiente de desenvolvimento completo e a sigla do sistema na variável “contexto” do tipo array. Caso você use instância coloque junto a sigla, por exemplo “ERP_JOIEX”.
Quando você for gerar uma aplicação para um dispositivo móvel, lembre-se de comentar a linha 13 e tirar o comentário da linha 14 que é o ambiente de produção, caso contrário não irá funcionar.

7) Está na hora do teste! Rode o “index.html” e clique no botão “Show”. Se tudo estiver no lugar, deve aparecer uma grade com os dados da sua tabela “FR_USUARIO” em uma imagem similar a essa:

MakerJQM4

 

Um toque importante que gostaria de deixar registrado é quanto ao fluxo no Maker que retorna os dados. A tabela que é retornada e usada nas funções não pode ter dados nulos, se tiver não irá funcionar, para evitar isso trate os campos com “coalesce”.

Agradeço muito ao meu amigo Diogo Tedesco pela colaboração das funções de tratamento dos dados.

Caso tenha alguma dúvida basta entrar em contato, se te ajudou de alguma forma eu também gostaria de saber.

Abraços e boa sorte.

Colocando o PostgreSQL em Horário de Verão

25 de novembro de 2015 Deixe um comentário

Senti necessidade esses dias de ter o retorno da função Now() respeitando o horário de verão. Na maioria das vezes eu utilizo a função que retorna o horário do servidor mas houve casos em que usei a data do banco pelo Now() e devido a isso tive essa triste surpresa. Não vou enrolar, segue a solução:

Pelo próprio SQL Editor do PG_ADMIN digite e rode:
SET Time Zone ‘BRAZIL/EAST’;

Para conferir se deu certo:
SELECT now();

Não é necessário reiniciar o serviço mas esse comando deve ser aplicado a cada banco que deseja ter o horário alterado.

Eu rodei este comando no PostgreSQL 9.0.

Espero ter ajudado.
Abraços.

Gerando QR Code no Maker

27 de maio de 2011 Deixe um comentário

Recentemente entrei no mundo dos SmartPhones. Acredito que é uma tarefa muito difícil uma pessoa de TI escolher um aparelho em poucos minutos, pois as possibilidades são tantas que a gente nem sabe por onde começar. Ninguém da nossa área se contenta em somente fazer ligações com esses novos Tamagoshis.

Eu peguei um aparelho com o SO Android Froyo (Frozen Yogurt pra quem não sabe). No meu caso a versão era a 2.1 que eu consegui fazer de tudo no bichinho, exceto instalar o Flash pois pra variar a Adobe não pega leva nas aplicações. Um celular que tem 180 MB de memoria para guardar as aplicações me vem um Flash que ocupa 10 MB, sem contar que não roda em Froyos anteriores a 2.2. Acorda Adobe!!!

Uma das coisas que achei bem interessante foi instalar os aplicativos somente scaneando o QR Code contendo o endereço para baixar o aplicativo que queria.

Achei massa e claro que quis saber como funcionava e como fazer isso no Maker.Não tem segredo, a própria Google disponibiliza um endereço para gerar os códigos QR dinamicamente.

Basta você passar alguns parâmetros para o link e abri-lo em uma moldura e pronto!

Se você passar um link o leitor do Smartphone o aparelho ja sugere a abertura da URL, mas você pode mandar mensagens também. Basta colocar o texto que quiser.

Baixe o exemplo que estou disponibilizando, rode, coloque o texto que quiser ou um link (não se esqueça dos https da vida) e utilize o leitor de códigos QR do seu Smartphone que você vai ver o resultado no seu Tamagoshi.

Exemplo do Exemplo

Link do FRZ: http://www.nembi.com.br/download/QRCode.FRZ

Inté.

PS. Atualmente ja tenho o Froyo 2.2, mas quem disse que consegui instalar o Flash nele? 😛

Categorias:Maker

NFe 2.0 – Prazo prorrogado para 1 de abril de 2011

2 de dezembro de 2010 Deixe um comentário

É gente. Estava muito complicado mesmo. Com a quantidade de updates que o programa da SEFAZ era acometido dava pra percerber que algo não estava indo muito bem.

Se para as pequenas empresas já é dificil se adaptar a uma mudança de NF convencional para eletrônica imagina mudar o sistema para uma versão mais nova em empresas grandes com altos volumes de emissão onde se tem que treinar pessoas, atualizar middle wares, ERPs etc.

Provavelmente por estas dificuldades saiu um Ato COTEPE que prorroga o prazo para obrigatoriedade da versão 2.0 da NFe.

Você pode conferir entrando n0 link abaixo:

http://www.fazenda.gov.br/confaz/confaz/atos/atos_cotepe/2010/ac036_10.htm

Bom, agora podemos fazer alguns testes a mais e deixar as nossas aplicações mais seguras.

Abraços.

Extraindo o CAT-52 pelo Maker

6 de setembro de 2010 Deixe um comentário

Tive esta necessidade estes dias, apesar do Maker ter as funções de acesso as impressoras da Bematech esta função não se encontra dentro de sua lista de opções.

Uma das formas que encontrei foi acessar diretamente o objeto COM da prória Bematech, o BemaFi32.dll.

Fiz alguns fluxos que baseado em um perído e ele retorna os arquivos necessários para ser utilizado nos programas da SEFAZ que tornam o consumidor seu próprio fiscal, como o Nota Fiscal Paulista, Nota Legal, etc…

No caso ele vai extrair diretamente da memória da ECF, claro que quem tiver um sistema de PDV pode optar por fazer na mão esta extração gerando os arquivos textos necessários, seguindo o leiaute imposto pela SEFAZ.

Vamos partir de algumas premissas:

– Ter uma ECF instalada e comunicando (com o emulador tive alguns problemas e não funcionou 100%);

– Ter todos os aquivos da Bematech necessários para esta comunicação, dlls, etc. No caso eu estou usando o BemaFi32.

Vale lembrar que iremos utilizar a DLL da Bematech para isso, portando ao extrair os arquivos, estes serão gerados onde está configurado o caminho para trabalho da Bematech, dentro do BemaFi32.ini. Este arquivo fica junto com as DLLs na pasta system32. A variável dentro do INI que armazena este caminho é a variável “Path”.

Como utilizei o SO Windows XP o caminho do System32 é c:\WINDOWS\system32 digo isso pois para NT e alguns outros esse caminho pode mudar e no caso teria que alterar também nos fluxos que acessam a DLL.

A versão do Maker utilizada foi a 2.5 com webrun 45q.

São 4 fluxos:

ECF – Ler Memória Fiscal

Fluxo principal que recebe o período que seja deseja extrair. O conceito desta função é extrair a memoria fiscal com o período desejado para uma pasta temporária e depois extrair desta memoria, dia a dia do periodo selecionado, pois a extração do CAT-52 é por um dia específico, portanto, o fluxo calcula quantos dias se deseja extrair e chama a DLL quantas vezes for necessária para a extração.

Extrair MFD da ECF

Este faz o download da Memoria da Fita Detalhe (MFD) da ECF e o coloca na pasta TMP do contexto da aplicação.

Gerar CAT-60

Este fluxo extrai dia a dia o CAT-52 da MFD que foi feito o download.

Geral – Notificar Usuário do Parâmetro

Este fluxo informa o status retornada quando se tenta acessar as funções da Bematech, se deu algum problema ou foi tudo certo.

O problema encontrado durante o desenvolvimento deste trabalho que desenvolvi e o que deu mais trabalho para resolver foi um “Kill” no Tomcat. Após alguns momentos depois de acessar a DLL da Bematech o Tomcat simplesmente parou o serviço. Notei que isto acontecia em duas situações:

– Usando o Emulador da Bematech;

– Acessando a DLL de uma pasta diferente que a originalmente instalada no System32;

Vale lembrar que esta funcionalidade foi elaborada para trabalhar na camada servidor.

Espero que seja util.

Link para download dos fluxos: http://www.nembi.com.br/download/Extracao_CAT52.FRZ

Saudações.

Lendo Tags de XML no Maker

3 de setembro de 2010 10 comentários

É, realmente isso não é uma tarefa simples de fazer. Quem ja teve essa missão sabe a dificuldade que é, ainda mais quando temos a necessidade de ler XMLs com filhos, netos, bisnetos, tataranetos, etc…

O Maker disponibiliza varias funções para ler e tratar XMLs mas apesar de facilitar bastante o processo temos que montar outras funções para atingir melhor o objetivo e ser mais direto.

Baseado nessa dificuldade toda, principalmente ao começar a ler os XMLs da Nota Fiscal Eletrônica tive a necessidade de desenvolver algo mais simples e objetivo para ler o conteudo das Tags.

Estou aqui disponibilizando neste post meus fluxos que fazem esta leitura e espero que seja útil para quem está com esta dificuldade.

Vamos ao que interessa pra tirar logo o backlog de nossas costas.

São 3 fluxos que fazem o processo:

– NFe – Busca Valor de Tag em XML (Mem)

Este é o fluxo principal que deve ser utilizado quando você precisa de um valor de uma TAG. Possui dois argumentos, o primeiro é o conteudo do XML que você passa como Letras e o segundo é a TAG que precisa ser retornada o conteúdo. O primeiro não tem segredo, você lê o XML com as funções do Maker e passa o conteudo pro fluxo, já o segundo você deve passar a TAG exatamente como ela é nomeada, considerando letras maiúsculas e minúsculas e sem o indicativo de começo e fim de TAG (<>).

Um detalhe muito interessante que ao meu ver é a grande sacada está no segundo parâmetro, onde você indica a ocorrencia da TAG, por exemplo, suponhamos que você tenha mais de uma ocorrencia da TAG no XML, como no XML da NFe você tem os grupos de produtos, “cProd”,  que podem ser inúmeros, nesse caso você pode passar como parametro a seguinte opção, “cProd,2” que o fluxo irá retornar o conteudo da TAG “cProd” mas de sua segunda ocorrencia dentro do XML. Caso não seja encontrada a TAG ou se ela estiver sem conteudo o resultado será nulo.

Se a TAG só tiver uma ocorrencia ou mesmo se tiver mais de uma e quiser obter somente a primeira o correncia não é necessário indicar o número de ocorrencia neste parâmetro.

– XML – Obter Valor de Elemento

Este sub-fluxo trabalha para dar apoio ao fluxo principal e tem a função de tratar o retorno do terceiro sub-fluxo descrito abaixo.

– XML – Obter Elemento

Este é o fluxo principal que tem a responsabilidade de obter o valor da TAG e também tratar a opção de indicação de ocorrencia da TAG.

Exemplo de uso:

– Pedaço de um XML de NFe –

“…
<prod>
        <cProd>60091</cProd>
        <cEAN/>
        <xProd>Caneta Colorida Arco Iris</xProd>
        <NCM>99999999</NCM>
       <CFOP>6101</CFOP>
        <uCom>UN</uCom>
        <qCom>30.0000</qCom>
        <vUnCom>3.0000</vUnCom>
        <vProd>90.00</vProd>
        <cEANTrib/>
        <uTrib>UN</uTrib>
        <qTrib>30.0000</qTrib>
        <vUnTrib>3.0000</vUnTrib><indTot>1</indTot>
</prod>
…”

– Chamando o fluxo, passando como parâmetro a TAG que armazena a descrição do produto –

NFe – Busca Valor de Tag em XML (Mem)(XML, “xProd”) ou

NFe – Busca Valor de Tag em XML (Mem)(XML, “xProd,5”)  se quiser pegar o conteudo da quinta ocorrencia desta TAG dentro do XML.

Link para baixar os fluxos: http://www.nembi.com.br/download/BuscaValorEmTagsXML.FRZ

Vale lembrar que por ter sido feita pra facilitar a programação sua performance perde em relação ao tratamento direto usando as funções do Maker, mas nos utilizamos este processo em clientes que chegam a emitir 400 NFes por dia e para o usuário final essa perda foi imperceptível.

Caso a utilize e consiga melhorar seu conceito ou performance gostaria que compartilhasse comigo.

Bom, é isso. Espero ter ajudado.

Atualizar apenas um fluxo em uma aplicação em produção (WAR)

3 de setembro de 2010 Deixe um comentário

Algumas vezes ja tive este problema. A aplicação está em produção, você está longe e impossibilitado de colocar um novo update corrigido no local. Subir um WAR de 65MB, testar a integridade, baixar na produção e depois fazer o deploy. Além de trabalhoso o tempo gasto nesse processo é enorme e nem sempre o cliente está disposto a esperar. O stress é eminente.

Uma das coisas que se pode fazer nesse caso é atualizar somente o fluxo alterado no ambiente de produção. O processo é semelhante ao que teria que ser feito com o WAR mas ao inves de 65MB estamos falando de alguns KBytes.

A partir do momento que em seu ambiente de produção você tem o novo WAR gerado siga estes passos:

1) Abra seu WAR utilizando um descompactador, recomendo o WinRAR ou 7Zip;

2) Localize a regra (fluxo) que deseja atualizar. As regras de um sistema dentro do WAR ficam na pasta “\WEB-INF\classes\wfr\com\systems\system_[SIG]\rules”, onde [SIG] é a sigla do sistema. Um outro detalhe enriquecedor é que o nome das regras mudam quando o sistema é compilado. Por exemplo, um fluxo com o nome “Email – Gerenciar Anexos” terá os caracteres especiais e os espaços retirados e ficará assim: “EmailGerenciarAnexos.class”;

3) Extraia a regra localizada e envie para seu cliente, por email ou ftp;

4) No ambiente de produção você pode fazer de duas formas, colocando esta regra exatamente no mesmo lugar onde ela se encontrava dentro do WAR em produção, mas com isso você terá que fazer novamente o deploy ou colocar a regra diretamente na pasta da aplicação depois do deploy, mas lembre-se, se for feito o deploy novamente, a regra antiga irá sobrepor a nova. Com esta ultima opção ganha-se tempo pois você pode simplesmente sobrepor a nova regra.

4) Limpe o cache e reinicie seu servidor de aplicações (Tomcat ou JBoss);

Pronto, a sua nova regra está no lugar da antiga, se a nova foi corrigida ela irá funcionar sem problemas no ambiente de produção.

Categorias:Maker Tags:, , , , , ,