INTEQ KB
Registre-se
Advertisement

*** Infraestrutura

Melhoria: O método DataSet.getField() passa a suportar um segundo parâmetro chamado options. Os valores possíves são:

  GetFieldOptions.BEFORE_VALUE: Obtém o valor do campo antes da edição ou inserção atual ter sido iniciada. Se o DataSet não estiver em edição ou inserção, o valor retornado será o mesmo do campo corrente.
  GetFieldOptions.ORIGINAL_VALUE: Obtém o valor original do campo, antes de qualquer edição desde a criação do DataSet ou do último applyUpdates. Esta opção requer que a propriedade DataSet.logChanges seja true e o que dataSet possua os campos iKey/CHAVE e iVersion/VERSAO.
  GetFieldOptions.IGNORE_FIELD_NOT_FOUND: Retorna null ao invés de gerar um erro caso o campo informado não exista.

Obs: Antes desta melhoria, o segundo parâmetro do dataSet era o "ignoreInvalidFieldName" do tipo Boolean. O suporte a este parâmetro foi mantido como deprecated. Códigos novos devem utilizar a nova sintaxe.

Exemplo:

   var ds = connection.getDataSet( "Select CHAVE, VERSAO, CODIGO From ENTIDADE Where CHAVE = 4131044")
   ds.codigo = 'maria'
   ds.applyUpdates()
  
   var ds = connection.getDataSet( "Select CHAVE, VERSAO, CODIGO From ENTIDADE Where CHAVE = 4131044")
   this.checkEquals( 'maria', ds.getField('CODIGO'))
   this.checkEquals( 'maria', ds.getField('CODIGO', GetFieldOptions.BEFORE_VALUE))
   this.checkEquals( 'maria', ds.getField('CODIGO', GetFieldOptions.ORIGINAL_VALUE))
  
   ds.codigo = 'jose'
   this.checkEquals( 'jose', ds.getField('CODIGO'))
   this.checkEquals( 'maria', ds.getField('CODIGO', GetFieldOptions.BEFORE_VALUE))
   this.checkEquals( 'maria', ds.getField('CODIGO', GetFieldOptions.ORIGINAL_VALUE))
  
   ds.post()
   this.checkEquals( 'jose', ds.getField('CODIGO'))
   this.checkEquals( 'jose', ds.getField('CODIGO', GetFieldOptions.BEFORE_VALUE))
   this.checkEquals( 'maria', ds.getField('CODIGO', GetFieldOptions.ORIGINAL_VALUE))
  
   ds.applyUpdates()
   this.checkEquals( 'jose', ds.getField('CODIGO'))
   this.checkEquals( 'jose', ds.getField('CODIGO', GetFieldOptions.BEFORE_VALUE))
   this.checkEquals( 'jose', ds.getField('CODIGO', GetFieldOptions.ORIGINAL_VALUE))
  
   ds.append()
   ds.codigo = 'francisco'
   this.checkEquals( 'francisco', ds.getField('CODIGO'))
   this.checkEquals( null, ds.getField('CODIGO', GetFieldOptions.BEFORE_VALUE))
   this.checkEquals( null, ds.getField('CODIGO', GetFieldOptions.ORIGINAL_VALUE))
  
   ds.post()
   this.checkEquals( 'francisco', ds.getField('CODIGO'))
   this.checkEquals( 'francisco', ds.getField('CODIGO', GetFieldOptions.BEFORE_VALUE))
   this.checkEquals( null, ds.getField('CODIGO', GetFieldOptions.ORIGINAL_VALUE))


Alteração: Foi criada a classe DataSetStates com propriedades que representam os valores que DataSet.state pode assumir. Os valores são: DataSetStates.INACTIVE, DataSetStates.BROWSE, DataSetStates.INSERT e DataSetStates.EDIT.

Exemplo:

   var ds = new DataSet()
   this.checkEquals( DataSetStates.INACTIVE, ds.state)
   ds.createField( 'key', 'integer')
   ds.create()
   this.checkEquals( DataSetStates.BROWSE, ds.state)
   ds.append()
   ds.key = 10
   this.checkEquals( DataSetStates.INSERT, ds.state)
   ds.post()
   this.checkEquals( DataSetStates.BROWSE, ds.state)
   ds.key = 20
   this.checkEquals( DataSetStates.EDIT, ds.state)
   ds.post()
   this.checkEquals( DataSetStates.BROWSE, ds.state)
   ds.close()
   this.checkEquals( DataSetStates.INACTIVE, ds.state)

Obs: DataSet.INACTIVE_STATE, DataSet.BROWSE_STATE, DataSet.EDIT_STATE e DataSet.INSERT_STATE continuam a ser suportados como depreacted. Códigos novos devem utilizar a nova sintaxe.


Correção: A utilização da propriedade DataSet.filter gerava uma perda de (qtd registros / 8) bytes de memória na finalização da sessão JavaScript. Corrigido.

Correção: Um clone de um DataSet poderia retornar informações desatualizadas quando este estava posicionado exatamente sobre um registro que foi alterado por outro clone. Corrigido.


*** Erp

Melhoria: Foram realizadas melhorias no desempenho da abertura de pedidos. É necessário upgrade completo da licença ERP Infrastructure e executar o script "/Admin/Manutencoes/Movimentacoes/Cria Vinculos entre Acessorios e Pedidos" na base do cliente.

Advertisement