segunda-feira, 31 de janeiro de 2011

Biblioteca Java para Gertec Busca Preço

Bom pessoal, de olho na portabilidade das minhas aplicações. Desconsiderei as DLLs que vieram no CD de instalação e criei minha própria biblioteca JAVA de integração com os aparelhos, permitindo assim que vc tenha servidores multiplataforma. Estou comercializando a biblioteca, interessados entrar em contato fone (51)84814667.

Silveira.

quinta-feira, 27 de janeiro de 2011

Controle de refeitório usando Gertec Busca Preço

Hoje vou mostrar mais uma das minhas "engenhócas" que deu certo.
Problema:
A empresa precisava controlar quem almoçava para o acerto no final do mês.

Solução anterior:
Imprimia-se vale almoços e esses eram distribuídos para os funcionários no início de mês.
Problemas dessa solução:
-Funcionários perdiam os vales.
-Esqueciam os vales então assinavam um caderninho.
-Horas perdidas ao fim de cada mês, contabilizando as assinaturas no caderno.
-Horas perdidas imprimindo novos vales e recortando.
-Horas perdidas separando vales para cada funcionário com base nos dias úteis daquele mês.

Solução definitiva:
Colocar um Gertec Busca Preço Wireless no refeitório funcionando como um coletor de dados. O mesmo cartão que os funcionários usavam pra bater o ponto agora tb é usado para registrar os almoços.

Problemas dessa solução:
-Um estagiário a menos da empresa.
-No fim do mês o administrador tem que ter todo o trabalho de clicar no botão gerar relatório.
rs..rs.....

Fone pra contato (51)84814667.

abrasss até a próxima..

Silveira

ps: Assistam o video em 360p(qualidade), se não, não dá pra ver nada no visor do aparelho.

terça-feira, 21 de dezembro de 2010

Cigam X Nokia E62 + Tim Ship Infinity Web

Dias atrás, postei um vídeo mostrando o MetaSystem em um coletor de dados com sistema Operacional Windows Mobile integrado com a base de dados Cigam via Wireless. Hoje vou mostrar o mesmo sistema, só que rodando em um celular Nokia E62 com sistema Operacional Symbian integrado com a base de dados Cigam via internet. Isso pra demonstrar que o sistema não tem definitivamente restrições de operação.
Algumas empresas tem entrado em contato pra saber se essas soluções funcionam só com o Cigam. E a resposta é não. Esses soluções funcionam com qualquer ERP desde que criadas as devidas bibliotecas de integração.
Um detalhe a ser ressaltado é que esses aplicativos não usam nenhum tipo de integrador intermediário. Ou seja: Sem troca de arquivos, sem sincronia, sem engatar/desengatar cabos, importação/exportação etc.

O vídeo mostra na primeira parte uma alteração de estoque feita no celular via Internet e depois confere como ficou no Cigam. Na segunda parte uma alteração semelhante é feita na rua em uma praça, longe de qualquer infraestrutura. Isso tudo pra mostrar como seria possível fazer conferencias, consultas ou pedidos remotamente com efeito imediato na base de dados da matriz.

sexta-feira, 19 de novembro de 2010

Cigam X Coletor de dados Wireless

Amigos, é com grande prazer que apresento a vocês, depois de vários testes, duas funcionalidades da versão Mobile do MetaSystem integrado com o ERP Cigam.
Trata-se do inventário(Controle de Estoque) e do gerador de encomendas. Nesse vídeo faço a demonstração da solução com um coletor de dados com sistema operacional Windows Mobile 5.0, mas o aplicativo funciona em qualquer aparelho wireless (coletor, celular, palm, IPad) com SO Windows Mobile, Symbiam ou Android).
As informações são processadas em tempo real via conexão Wireless e WebServices. A tecnologia usada para integrar tudo isso só podia ser JAVA!!! rs...rs...


Até mais ver.
Contato para maiores informações: (51) 84814667... abrasss

quinta-feira, 4 de novembro de 2010

Oficial: Cigam(DeServe) agora TAMBÉM é Java

Agora é oficial, homologada no dia 3 de Novembro de 2010 na PUC em Porto Alegre a versão PAF ECF Cigam(Módulo Loja) desenvolvida pela DeServe Informática + MetaSystem. Uma solução de frente de caixa integrada com Orçamentos e Pré-Venda gerados em Java. Essa solução permite pontos de pré-venda com valor bem reduzido de licenciamento e com sistema operacional Linux.
Você pode obter informações de como adquirir as licenças ou agendar uma demonstração da solução pelo fone (51) 35795555 DeServe Informática.

Nos próximos dias estarei disponibilizando uma versão online do Pré-Venda Web para testes e opinião dos amigos.

Até a próxima.

Silveira

terça-feira, 21 de setembro de 2010

Cigam X Gertec Busca Preço

O "busca preço" da Gertec é um aparelho super útil em lojas que usam o sistema Self-Service como supermercados ou afins. A versão com WiFi permite que se coloque em qualquer lugar que tenha um ponto de rede elétrica.

Para as empresas que usam CIGAM a integração já esta pronta, é o que vou mostrar nesse post.

O aparelho custa em média R$ 800,00. A licença do software é por conexão, ou seja, por ponto de consulta.

domingo, 19 de setembro de 2010

Classe Utilitaria para Sistema Operacional

package funcoes.util;

import java.awt.Dimension;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

public class SistemaOperacional {

public static String getNome() {
String nome = System.getProperty("os.name").toUpperCase();
if (nome.contains(" ")) {
nome = nome.substring(0, nome.indexOf(" "));
}
return nome;
}

public static String getPais() {
return System.getProperty("user.country").toUpperCase();
}

public static String getBarraDiretorios() {
String barra = "/";
if (SistemaOperacional.getNome().equals("LINUX")) {
barra = "/";
} else if ((SistemaOperacional.getNome().equals("WINDOWS"))) {
barra = "\\";
}
return barra;
}

/**
*
* @param data exemplo 01/01/01
*/
public static void mudarDataSistema(String data) {
Date newDate = new Date(data);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String cmd = "cmd /C date " + sdf.format(newDate);
executarComando(cmd);
}

public static void executarComando(String comando) {
try {
Process proc = Runtime.getRuntime().exec(comando);
} catch (IOException ex) {
Logger.getLogger(Windows.class.getName()).log(Level.SEVERE, null, ex);
}
}

public static String getDiretorioAtual() {
return System.getProperty("user.dir").toUpperCase();
}

public static String getVersao() {
return System.getProperty("os.version").toUpperCase();
}

public static String getDiretorioUsuario() {
return System.getProperty("user.home").toUpperCase();
}

public static String getNomeUsuario() {
return System.getProperty("user.home").toUpperCase();
}

public static String getLinguagem() {
return System.getProperty("user.language").toUpperCase();
}

public static String getCpu() {
return System.getProperty("sun.cpu.isalist").toUpperCase();
}

/**
*
* @param hora exemplo 08:30:30
*/
public static void mudarHoraSistema(String hora) {
Date newDate = new Date("01/01/01 " + hora);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
String cmd = "cmd /C time " + sdf.format(newDate);
executarComando(cmd);
}

public static Dimension getResolucao() {
java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
return toolkit.getScreenSize();
}
}

quinta-feira, 16 de setembro de 2010

HashMap para j2me

package j2meuteis;

public class HashMap {

//crie a classe ArrayList para J2ME tambem postada no blog
private ArrayList keys;
private ArrayList values;

public HashMap() {
keys = new ArrayList();
values = new ArrayList();
}

public void put(Object key, Object value) {
getKeys().add(key);
getValues().add(value);
}

public Object get(Object key) {
for (int i = 0; i < getKeys().size(); i++) {
if (key == getKeys().get(i)) {
return getValues().get(i);
}
}
return null;
}

public ArrayList getKeys() {
return keys;
}

public ArrayList getValues() {
return values;
}

public int size() {
return getKeys().size();
}
}

ArrayList para j2me

Uma grande descepcao pra quem comeca a desenvolver em J2ME, e nao poder contar com a clase arrayList.
Para resolver esse problema, so criando na mao.
Eis a classe:

package j2meuteis;

public class ArrayList {
private Object[] storedObjects;
private int growthFactor;
private int size;

public ArrayList() {
this( 10, 75 );
}

public ArrayList( int initialCapacity ) {
this( initialCapacity, 75 );
}

public ArrayList( int initialCapacity, int growthFactor ) {
this.storedObjects = new Object[ initialCapacity ];
this.growthFactor = growthFactor;
}

public int size() {
return this.size;
}

public boolean contains( Object element ) {

if (element == null) {
throw new IllegalArgumentException( "ArrayList cannot contain a null element.");
}
for (int i = 0; i < object =" this.storedObjects[i];" element ="="" i =" 0;" object =" this.storedObjects[i];">= this.size ) {
throw new IndexOutOfBoundsException("the index [" + index + "] is not valid for this list with the size [" + this.size + "].");
}
return this.storedObjects[ index ];
}

public Object remove( int index ) {
if (index <>= this.size ) {
throw new IndexOutOfBoundsException("the index [" + index + "] is not valid for this list with the size [" + this.size + "].");
}
Object removed = this.storedObjects[ index ];
for (int i = index+1; i < element ="="" index =" -1;" i =" 0;" object =" this.storedObjects[i];" index =" i;" index ="="" i =" index+1;" i =" 0;" size =" 0;" element ="="">= this.storedObjects.length) {
increaseCapacity();
}
this.storedObjects[ this.size ] = element;
this.size++;
}

public void add( int index, Object element ) {
if (element == null) {
throw new IllegalArgumentException( "ArrayList cannot contain null.");
}
if (index <> this.size ) {
throw new IndexOutOfBoundsException("the index [" + index + "] is not valid for this list with the size [" + this.size + "].");
}
if (this.size >= this.storedObjects.length) {
increaseCapacity();
}
// shift all following elements one position to the back:
for (int i = this.size; i > index; i--) {
this.storedObjects[i] = this.storedObjects[ i-1 ];
}
// insert the given element:
this.storedObjects[ index ] = element;
this.size++;
}

public Object set( int index, Object element ) {
if (index <>= this.size ) {
throw new IndexOutOfBoundsException("the index [" + index + "] is not valid for this list with the size [" + this.size + "].");
}
Object replaced = this.storedObjects[ index ];
this.storedObjects[ index ] = element;
return replaced;
}

public String toString() {
StringBuffer buffer = new StringBuffer( this.size * 23 );
buffer.append( super.toString() ).append( "{\n" );
for (int i = 0; i < this.size; i++) {
buffer.append( this.storedObjects[i] );
buffer.append('\n');
}
buffer.append('}');
return buffer.toString();
}

public Object[] toArray() {
Object[] copy = new Object[ this.size ];
System.arraycopy( this.storedObjects, 0, copy, 0, this.size );
return copy;
}

public Object[] toArray( Object[] target ) {
System.arraycopy( this.storedObjects, 0, target, 0, this.size );
return target;
}

public void trimToSize() {
if (this.storedObjects.length != this.size ) {
Object[] newStore = new Object[ this.size ];
System.arraycopy( this.storedObjects, 0, newStore, 0, this.size );
this.storedObjects = newStore;
}
}

private void increaseCapacity() {
int currentCapacity = this.storedObjects.length;
int newCapacity = currentCapacity + ((currentCapacity * this.growthFactor) / 100);
if (newCapacity == currentCapacity ) {
newCapacity++;
}
Object[] newStore = new Object[ newCapacity ];
System.arraycopy( this.storedObjects, 0, newStore, 0, this.size );
this.storedObjects = newStore;
}

public Object[] getInternalArray() {
return this.storedObjects;
}
}

Classe Utilitaria para trabalhar com diretorios

package funcoes.util;

import java.io.File;
import java.io.IOException;

public abstract class Diretorios {

public static void main(String[] args) {
criar("c:\\testeNovoDir");
}

public static void criar(String caminho) {
File file = new File(caminho);
file.mkdir();
}

public static void excluir(String caminho) {
File file = new File(caminho);
file.delete();
}

public static boolean existe(String caminho) {
File file = new File(caminho);
return file.exists();
}

public static void deletar(String caminho) {
File dir = new File(caminho);
deletar(dir);
}

public static boolean deletar(File dir) {
File candir;
try {
candir = dir.getCanonicalFile();
} catch (IOException e) {
return false;
}

if (!candir.equals(dir.getAbsoluteFile())) {
return false;
}


File[] files = candir.listFiles();
if (files != null) {
for (int i = 0; i < files.length; i++) {
File file = files[i];

boolean deleted = file.delete();
if (!deleted) {

if (file.isDirectory()) {
deletar(file);
}

}
}
}

return dir.delete();
}
}