Além de oferecer 100% de ferramentas e serviços personalizados, nossa equipe tem o foco na alavancagem do seu negócio, informando e auxiliando sua expansão.
O AICS já possuía rotinas internas para processamento
de arquivos ZIP. Agora, foram publicadas e colocadas à
disposição em todos os módulos. Quer um exemplo prático
interessante?
Imagine programar o servidor para, todo domingo à noite,
baixar um ZIP de um site de banco de dados, expandir o
arquivo, validar e importar numa certa base de dados. Após
isso, pode reexportar os dados em Excel, "ZIPar" de novo
e enviar por email a certos destinatários.
Brincadeira? Tudo possível em todas as ferramentas do AICS!
Declarações das rotinas:
Function ZIP(Zip, Mascara:String):boolean
Function UnZIP(Zip, Mascara, Destino:String):boolean
O AICS trabalha sobre bancos SQL; até aí, nenhuma novidade.
Só que as versões mais recentes podem trabalhar AO MESMO
TEMPO, com diversas conexões de dados SQLs ou não.
Na Configuração Geral, aba SQL, pode especificar diversas
Strings de conexão e associar nomes a elas. Estes nomes podem
ser aplicados a comandos SQL de cursores tipo AICS nas
funções TableExecSQLCONN e TablePrepareSQL CONN.
Nos objetos nativos de dados que tenham a propriedade
Connection (como TADOQuery, por exemplo) seria necessário
criar um objeto de conexão e associá-lo a este objeto. Mas,
para que isso se o AICS já gerencia estas conexões múltiplas
sozinho?
Portanto, a BF criou a seguinte função:
Function ConnectionByName(Name:string):TADOConnection
Onde o valor do parâmetro Name deve ser um dos nomes das
conexões definidas na Configuração Geral. Note que nem é
necessário criar um objeto de conexão, esta função já retorna o
objeto interno, otimizado e funcional.
O AICS possui um recurso muito simples para
personalizar as pesquisas internas do sistema. Quando
o filtro é ativado, se existir uma vista com o nome:
USUFILTROXXX,
Onde XXX é o nome da tabela principal, este filtro
será montado e utilizado no lugar do filtro interno do
sistema. Para que este recurso funcione, o usuário
ativo deverá ter direito de PESQUISAR sobre esta
Vista.
Entretanto, este recurso esta habilitado apenas a tabelas
internas e não a telas baseadas no Centro de Informações.
Alguns módulos do AICS atualmente são baseados
diretamente do Centro de Informações e esta característica
de personalização foi requisitada pelos usuários.
Portanto, sendo uma tela interna do sistema OU, agora,
uma tela dinamicamente construída baseada no Centro
de Informações, a regra de substituição do filtro fica
generalizada.
O AICS baixa as NFs dando entrada e saída dos materiais
sempre de forma consistente. Por exemplo, seguindo as
regras indicadas nas CFOPs dos itens e não da NF.
Em situações nas quais ocorre importação de NFs de
outras fontes, pode ser complicado reproduzir a rotina
consistente que o AICS possui internamente. Portanto,
criamos uma função externa, que pode ser chamada,
por exemplo, logo após as importações, cuja sintaxe é:
Function BaixarEstNF(NF_numero:double;Netcod:String):boolean
Onde, informe o Número serial interno e o local da NF.
A rotina pode retornar falso se a NF já foi baixada ou ela
se encontra bloqueada.
Um recurso pouco conhecido do AICS é a importação dos
objetos de formulários em formato textual e conversão dos
mesmos para código visando a criação automática de formulários.
Este mesmo recurso foi extremamente expandido na versão mais
recente do AICS permitindo adicionar conjuntos de objetos em
quaisquer formulários, mesmo pré-existentes. A sintaxe é exatamente
a mesma, bastando indicar o trecho da descrição dos objetos
dentro de um tag numerado DFM. Para deixar este recurso ainda
mais claro, montamos um vídeo explicativo. Basta acessá-lo pelo site.
Em algumas operações que envolvam cópia de arquivos, saber
o espaço livre nas unidades pode ser um ótimo recurso para
escolher, por exemplo, aonde um dado arquivo será gravado.
Para permitir estes controles, publicamos a seguinte função:
Function DiskFree(Unidade:Char):double
Onde a Unidade é a letra (em maiúsculo) desejada. Por exemplo,
DiskFree('C') retorna o espaço livre na unidade C. O valor retornado
é em ponto flutuante pois os tamanhos dos discos atuais são
realmente grandes.
O serviço web do AICS, que pode operar de forma independente como
um servidor Web, apresenta os comandos de retorno direto, que são:
- WriteWeb: Retorno com conversão em HTML
- WriteWebPlain: Retorno original, sem conversão
- WriteWebFile: Envio de um arquivo indicado
No terceito comando, o serviço irá enviar o tipo de dados automaticamente,
seguindo o padrão do tipo de arquivo enviado. No primeiro e segundo
casos, o padrão é sempre text/html. Entretanto, o segundo caso pode
ser muito mais dinâmicro, podendo retornar qualquer tipo. Para isso,
antes de qualquer envio, utlize este novo comando que pode ajustar
o tipo de dado, por exemplo:
SetContentType('text/xml');
O exemplo acima indica aos navegadores que o retorno é em XML.
As ferramentas do AICS permitem exportar os cursores em diversos formatos,
incluindo XML. Para este caso, o procedimento tem a sintaxe:
function ExportCursor(Format, CursorName, FileName:string):boolean
O valor do parâmetro "Format" passa a aceitar:
XML -> Com schema e com acentos
XML2 -> Sem schema e com acentos
XML3 -> Com schema e sem acentos
XML4 -> Sem schema e sem acentos
Este tipo de opção é importante pois nem todos os dispositivos, tais
como dispositivos móveis, aceitam acentuação em todos os casos.
Opção válida para todas as ferramentas do AICS.
A tabela utilizada nos módulos editoriais do AICS que define os
atributos gráficos dos textos é denominada ESTILOS. Esta tabela não
era padrão do AICS porque estava vinculada unicamente a estes módulos.
Para permitir a personalização visual das entradas dos dados (isto é, que
os atributos textuais possam ser controlados nos formulários do AICS),
adicionamos um link entre as colunas das tabelas do sistema e o estilo.
É como se pudéssemos formatar cada entrada de dados dos formulários
do AICS de acordo com as características gráficas desejadas. Este novo
atributo encontra-se no Centro de Informações, aba Opções de Apresentação.
Basta selecionar o nome do estilo (que está numa lista à direita) que a tela
criada automaticamente já se abrirá com o campo formatado seguindo
estas diretrizes.
Este novo recurso vale para entradas de dados e para entradas de dados
tipo RTF. Ainda não foi aplicado aos formulários pela Internet, mas o será
se os usuários assim o desejarem.
Um valioso recurso na implementação de acessos remotos por setores!
As regras de negócio ficam armazenadas nos eventos associados às tabelas
ou colunas. Entretanto, para fins de simplificações ou mesmo de segurança,
é comum e usual criar vistas para acessar os dados de forma indireta.
Por exemplo, podemos criar uma vista sobre o cadastro na qual ela
restrinja a visibilidade dos dados a partir do login ativo. Perfeitamente
simples isso, bastando aplicar :LOGIN em alguma parte da expressão
de seleção.
Entretanto, quando isso ocorre, as regras ficavam na tabela original,
isto é, as regras deveriam ser copiadas ou adaptadas à nova estrutura.
Mas, e se a nova estrutura for realmente apenas uma vista?
Pois bem, a versão mais recente do AICS, caso não haja NENHUMA
REGRA NA VISTA, aplicará as regras da tabela pai sobre ela. De tal
forma que as chamadas aos cursores devem seguir a nova regra
com o uso do nome DEFAULT, para que o cursor aceite ser dinâmico.
Caso haja alguma dúvida sobre isso, consulte o suporte técnico da BF,
mas reiteramos que este novo recurso simplifica extremamente o
projeto deste tipo de projeto, além de potencializá-lo ao mesmo tempo.