NF-e… situações estranhas…

Como sempre soubemos, o governo não gosta de facilitar nossa vida, e sempre que tem a oportunidade de fazê-lo, acaba fazendo com qualidade questionável. Vejamos o exemplo que está deixando muitos programadores loucos: NF-e (Nota Fiscal Eletrônica).

Entre outras exigências, o XML que é enviado para o governo autorizar a emissão da nota, deve conter o nome da cidade e o código do município, segundo cadastro do IBGE. Nem bem acabei de normalizar as informações do meu BD com os dados obtidos do IBGE, e já me deparei com situações que vão de curiosas até ridículas. Vejamos o primeiro exemplo:

Mogi-Mirim: é uma cidade do interior de São Paulo. No entanto, no cadastro do IBGE, o nome se escreve com “j”, ou seja, Moji-Mirim. No entanto, tirando o IBGE, todo o resto da população e organizações escreve o nome com “g”. Olhe o site da prefeitura da cidade, os Correios, etc. e você verá que está tudo com “g”. E aí, quem está certo?

Guará: Na base do IBGE, Guará é um município do estado de São Paulo. No entanto, fui questionado por um cliente que precisava emitir uma NF para Guará no Distrito Federal, e adivinhe?! Na base do IBGE não existe Guará no DF. Alias, DF no IBGE é somente Brasília. Ou seja, nenhuma cidade satélite de Brasília é considerada município pelo IBGE! Indo mais além, Guará-DF, nos Correios, é considerado cidade, e tem até CEP próprio! Ou seja, se você quer emitir uma NF-e para Guará-DF, não vai conseguir (o manual de integração diz que, nesse caso, a cidade a ser usada é Brasília). Mas e se você mandar uma correspondência para Guará usando Brasília como cidade, o Correio vai chiar?

Em suma, a falta de padrão ainda impera nos diversos orgãos deste país. E aí nós, desenvolvedores, ficamos numa sinuca de bico.

Só pra constar, minha instrução para o cliente foi a de colocar Guará como Bairro, e cidade Brasília. Mas aí fica ainda mais estranho, pois Guará-DF tem dois Bairros, Guará I e Guará II… zzzzZZZ.

Share and Enjoy !

Tecnologia “sexto-sentido”

O vídeo abaixo mostra uma tecnologia muito legal que está sendo desenvolvida. Apesar de estar em estágio inicial de desenvolvimento, já dá pra imaginar os inúmeros usos que ela terá, e como poderia ajudar as pessoas em tarefas do dia-a-dia. Audio em inglês, mas se você tem um pouco de conhecimento da língua conseguirá entender perfeitamente.

Share and Enjoy !

Tabela de estados e códigos do IBGE

Abaixo segue o script de criação de uma tabela de estados (para Firebird 2.1), bem como os inserts com todos os estados do Brasil, incluindo o código do IBGE. Se você pretende implementar NF-e nos seus sistemas, provavelmente vai achar útil.

CREATE TABLE ESTADOS (
    SIGLA CHAR(2) CHARACTER SET WIN1252 NOT NULL COLLATE WIN_PTBR,
    CODIGO SMALLINT NOT NULL,
    NOME VARCHAR(30) CHARACTER SET WIN1252 NOT NULL COLLATE WIN_PTBR);

alter table ESTADOS
add constraint PK_ESTADOS
primary key (SIGLA);

alter table ESTADOS
add constraint UNQ_ESTADOS_CODIGO
unique (CODIGO);

commit;

INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (12,'AC','Acre');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (27,'AL','Alagoas');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (13,'AM','Amazonas');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (16,'AP','Amapá');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (29,'BA','Bahia');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (23,'CE','Ceará');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (53,'DF','Distrito Federal');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (32,'ES','Espírito Santo');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (52,'GO','Goiás');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (21,'MA','Maranhão');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (31,'MG','Minas Gerais');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (50,'MS','Mato Grosso do Sul');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (51,'MT','Mato Grosso');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (15,'PA','Pará');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (25,'PB','Paraíba');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (26,'PE','Pernambuco');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (22,'PI','Piauí');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (41,'PR','Paraná');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (33,'RJ','Rio de Janeiro');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (24,'RN','Rio Grande do Norte');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (11,'RO','Rondônia');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (14,'RR','Roraima');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (43,'RS','Rio Grande do Sul');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (42,'SC','Santa Catarina');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (28,'SE','Sergipe');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (35,'SP','São Paulo');
INSERT INTO ESTADOS (CODIGO,SIGLA,NOME) VALUES (17,'TO','Tocantis');

commit;

Provavelmente vai precisar também de uma tabela com os municípios Brasileiros e seus respectivos códigos. Neste caso, sugiro que dê uma olhada neste post.

Os dados foram retirados do site da SPED Fiscal

Share and Enjoy !

Cinco fatos que você não sabia sobre o Delphi

O site мебели софияAbout Delphi publicou um artigo muito interessante, sobre 5 coisas que a maioria dos programadores desconhecem sobre o Delphi. Bom, alguns talvez até conheçam, mas a grande maioria provavelmente não usa.

Você sabia, por exemplo, que podemos criar uma classe interceptora para um classe já existente (no exemplo deles, a TButton) e estender os recursos da classe original sem precisar criar uma nova classe com um nome diferente?

Não deixe de dar uma olhada nos cinco itens listados, pois com certeza, algum dos recursos apresentados poderá lhe poupar muitas horas de programação em algum momento futuro.

Share and Enjoy !

E se o Google virar “do mal”?

Até hoje, o Google tem sido considerado uma empresa “do bem”. Ótimas tecnologias, a maioria sendo oferecida de graça, mecanismo de busca imbatível, etc. fizeram com que o Google crescesse numa velocidade inacreditável. Hoje, dificilmente temos alguém que nunca utilizou alguma das tecnologias oferecidas pelo Google.

Mas e aí? O Google é bonzinho e só faz isso porque gosta de ajudar todo mundo?! Óbvio que não. O Google também quer dinheiro, aliás, deve ser uma das empresas mais lucrativas do mundo.

A coisa começa a ficar preocupante quando você pára pra pensar, e se dá conta que tudo que você faz utilizando as tecnologias do Google, está alimentando uma imensa base de dados (de valor incalculável), e que pode ser usada à seu favor, ou contra você. Se você tem uma conta Google, visite o link History e verá do que estou falando! Tudo que fez nos últimos dias, semanas, meses, está ali! O Google sabe o que você procura mais, os filmes que assistiu (youtube), pra onde você foi (maps), seus compromissos (calendar), seus amigos (gmail, orkut), etc! Imagine se tudo isso cai nas mãos de spammers, ou de empresas não muito éticas?! Obviamente, políticas de segurança garantem algum tipo de proteção, mas todos sabemos que proteção 100% segura não existe.

Por enquanto, creio que ninguém precisa se desesperar, mas é bom ficar esperto, e sempre manter uma certa “pressão” pela ética e segurança das informações.

Um outro artigo que discute essa questão pode ser lido aqui.

Share and Enjoy !

(.NET) Garbage Collector, e você pensava que nunca mais ia ter que liberar memória manualmente…

Este post mostra um cenário interessante, e alerta para o fato de que muitas vezes, mesmo usando linguagens de alto nível, que contam com Garbage Collector para liberar automaticamente a memória não mais necessária, o programador ainda terá que liberar alguns recursos manualmente, para evitar um alto consumo de memória pela aplicação.

Share and Enjoy !

1 11 12 13 14 15 30