- Infraestrutura
Melhoria: Foi criado o método DataSet.copyRecord( ds, excludeFieldNames) com o objetivo de copiar um registro de outro dataSet. Por ser uma implementação nativa, este método consegue ser 150% mais rápido do que copiar os campos através de um loop em javaScript.
Melhoria: Foi disponibilizada a classe Crypto no ambiente JavaScript com o objetivo de permitir criptografia simétrica. Abaixo segue a API:
Crypto.encrypt( bin, key, cipher, iv ) - Método de classe que criptografa uma string utilizando a chave, o cipher e initialization vector informados. Crypto.decrypt( bin, key, cipher, iv ) - Método de classe que descriptografa uma string utilizando a chave, o cipher e initialization vector informados. Parâmetros: bin: Dado que será criptogrado ou descriptografado. key: Chave de criptografia. O tamanho da chave deve ser compatível com o algoritmo utilizado. cipher: Algoritmo e modo de operação da criptografia. Este parâmetro é opcional e caso não seja informado será considerado "Crypto.AES_ECB". Opções disponíveis: Crypto.AES_ECB ( chave e bloco de 128 bits, 192 bits, 256 bits ) Crypto.AES_CBC ( chave e bloco de 128 bits, 192 bits, 256 bits ) Crypto.DES_ECB ( chave e bloco de 64 bits ) Crypto.DES_CBC ( chave e bloco de 64 bits ) Crypto.DES_CFB ( chave e bloco de 64 bits ) Crypto.DES_OFB ( chave e bloco de 64 bits ) Crypto.DES3_ECB ( chave 192 bits e bloco de 64 bits ) Crypto.DES3_CBC ( chave 192 bits e bloco de 64 bits ) Crypto.DES3_CFB ( chave 192 bits e bloco de 64 bits ) Crypto.DES3_OFB ( chave 192 bits e bloco de 64 bits ) Crypto.BLOWFISH_ECB ( chave variável até 448 bits e bloco de 64 bits ) Crypto.BLOWFISH_CBC ( chave variável até 448 bits e bloco de 64 bits ) Crypto.BLOWFISH_CFB ( chave variável até 448 bits e bloco de 64 bits ) Crypto.BLOWFISH_OFB ( chave variável até 448 bits e bloco de 64 bits ) Crypto.RC2_ECB ( chave variável até 1024 bits e bloco de 64 bits ) Crypto.RC2_CBC ( chave variável até 1024 bits e bloco de 64 bits ) Crypto.RC2_CFB ( chave variável até 1024 bits e bloco de 64 bits ) Crypto.RC2_OFB ( chave variável até 1024 bits e bloco de 64 bits ) iv: Vetor de inicialização do algortimo. O tamanho do iv deve ser o mesmo do bloco utilizado pelo cipher. Não é necessário no modo ECB. Observação: - O resultado de Crypto.encrypt() pode retornar uma string com caracteres especiais. É recomendável a utilização de uma codificação como Base64 caso o resultado tenha que ser legível ou impresso. Exemplo: var key = 'My secret keyXXX' // 16 bytes = 128 bits var plainText = 'My secret text' var cipherText = Crypto.encrypt( plainText, key) if ( Crypto.decrypt( cipherText, key ) == plainText){ // Crypto ok } else { throw new Error( 'Crypto fail !!!') }
Melhoria: Foram criados os seguintes atalhos no editor de scripts:
Ctrl + Alt + U: Converte a seleção em maiúsculas; Ctrl + Alt + L: Converte a seleção em minúsculas; Ctrl + Alt + I: Converte a seleção em um identificador A lista dos principais atalhos do editor pode ser encontrada em: http://inteq.wikicities.com/index.php/Atalhos_do_Editor
Melhoria: Melhorias no recurso Completion Proposal do editor de scripts:
- Todas as classes passam a ser listadas quando pressionado "."; - A facilidade de digitar uma classe.metodo e o editor substituir pelo método passa a funcionar para abreviações do nome da classe. Ex: this.pedido.d.locatePattern -> this.pedido.locatePattern. Abreviações disponíveis: DataSet: d (não pode ser ds, pois ds é um nome de propriedade válido e muito comum) String: s, str Number: n, i Array: ar Date: dt
Melhoria: Foi adicionado completion proposal no editor de scripts para as classes MD5, SHA1 e Base64.
Melhoria: O método DataSet.locatePattern() passa a suportar pesquisas em campos do tipo Integer, Float, DateTime, Date e Time.
Melhoria: O método DataSet.copyStructure( ds, fieldNames) passa a ignorar campos do ds que já existam no DataSet ao invés de apresentar uma mensagem de erro indicando a duplicação.
Alteração: O atalho de criação de ResourceString passa a ser Ctrl + Shift + S, pois o atalho anterior (Ctrl + Shift + C) esta conflitando com a seleção de colunas de texto.
Alteração: O parâmetro targetPaths do construtror new FileSynchronizer( sourcePath, targetServer, targetPaths) passa a ser opcional. Quando não for informado será considerado o diretório de execução do iEngine destino.
Correção: O método String.toSqlString() não estava adicionando aspas simples no resultado. Corrigido.
Correção: Em determinadas situações, a visualização de um script na IDE era considerada uma edição e causava uma gravação no banco de dados. Corrigido.
Correção: O método DataSet.sum() estava alterando o índice corrente do dataSet. Corrigido.
Correção: Em determinadas situações os campos de um clone de um DataSet com recordCount maior que zero sempre estavam retornando null. Corrigido.
Correção: Os métodos DataSet.saveToStream() e DataSet.loadFromStream() estavam perdendo as propriedades tableName, filter, classesFilter, logChanges, streamDelta, insertWithKey, integrityCheck e automaticApplyUpdates, além do índice e range corrente. Corrigido.
- Erp
Correção: A permissão de edição fiscal para estrutura antiga de permissões não estava replicadando na hierarquia de classe. Corrigido.
Correção: A movimentação de depósito com lote vazio passa a ser desconsiderada no consumo dos recursos com controle por lote próprio.
Correção: Foi removida a dependência, criada no build 3.3.1.105, entre a digitação da produção e o modelo do banco de dados através do campo USALOTEPROPRIO.