2017.10

Data de postagem: Oct 27, 2017 6:31:12 PM

Publicação Técnica

    • As classes e funções globais nativas do ambiente JavaScript do Engine e do pacote erp-engine.jaz foram migradas para uma nova estrutura de módulos no padrão CommonJS. Essa migração não altera o comportamento dos códigos existentes no sistema, pois todos os símbolos globais foram mantidos para fins de compatibilidade. A nova estrutura de módulos é uma funcionalidade experimental do sistema e ainda não deve ser utilizada em customizações ou produtos desenvolvidos na plataforma Bematech ERP. Por ser uma funcionalidade experimental, ainda são esperadas alterações de estruturas que podem exigir a revisão do uso dos módulos. Será criada uma publicação técnica quando a nova estrutura de módulos estiver amadurecida e pronta para ser utilizada pelos clientes e parceiros. Segue a relação das APIs migradas:

        • ngin.string.removeLineBreaks: erp-engine/lib/string/removeLineBreaks

        • ngin.string.removePrefix: erp-engine/lib/string/removePrefix

        • ngin.string.removeSuffix: erp-engine/lib/string/removeSuffix

        • ngin.string.splitByCommaOrSemicolon: erp-engine/lib/string/splitByCommaOrSemicolon

        • goog.array.remove: erp-engine/lib/array/remove

        • goog.array.removeAt: erp-engine/lib/array/removeAt

        • ngin.classdef.AfterPersistEvent: erp-engine/lib/classdef/AfterPersistEvent

        • ngin.classdef.BeforePersistEvent: erp-engine/lib/classdef/BeforePersistEvent

        • ngin.classdef.Def: erp-engine/lib/classdef/ClassDef

        • ngin.classdef.Cache: erp-engine/lib/classdef/ClassDefCache

        • ngin.classdef.Manager: erp-engine/lib/classdef/ClassDefManager

        • ClassSourceGenerator: erp-engine/lib/classdef/ClassSourceGenerator

        • ngin.classdef.ConfigDef: erp-engine/lib/classdef/ConfigDef

        • ngin.classdef.DataEvent: erp-engine/lib/classdef/DataEvent

        • ngin.classdef.Field: erp-engine/lib/classdef/Field

        • ngin.classdef.FieldChangeEvent: erp-engine/lib/classdef/FieldChangeEvent

        • ngin.classdef.FieldEvent: erp-engine/lib/classdef/FieldEvent

        • ngin.classdef.FieldGroup: erp-engine/lib/classdef/FieldGroup

        • ngin.classdef.FieldList: erp-engine/lib/classdef/FieldList

        • ngin.classdef.FieldNameList: erp-engine/lib/classdef/FieldNameList

        • ngin.classdef.FieldOptionsEvent: erp-engine/lib/classdef/FieldOptionsEvent

        • ngin.classes.getLookupDataClass: erp-engine/lib/classdef/getLookupDataClass

        • ngin.classdef.InterceptorConfiguration: erp-engine/lib/classdef/InterceptorConfiguration

        • ngin.classdef.LookupAddResultEvent: erp-engine/lib/classdef/LookupAddResultEvent

        • ngin.classdef.LookupDisplayEvent: erp-engine/lib/classdef/LookupDisplayEvent

        • ngin.classdef.MasterDeleteAction: erp-engine/lib/classdef/MasterDeleteAction

        • ngin.classdef.ModelDef: erp-engine/lib/classdef/ModelDef

        • ngin.classdef.PermissionField: erp-engine/lib/classdef/PermissionField

        • ngin.classdef.PermissionFieldScope: erp-engine/lib/classdef/PermissionFieldScope

        • ngin.classdef.PersistEvent: erp-engine/lib/classdef/PersistEvent

        • ngin.classdef.ReadOnlyMode: erp-engine/lib/classdef/ReadOnlyMode

        • SessionConfiguration: erp-engine/lib/classdef/SessionConfiguration

        • SessionEnvironmentType: erp-engine/lib/classdef/SessionEnvironmentType

        • SessionPersistence: erp-engine/lib/classdef/SessionPersistence

        • ngin.classdef.SourceType: erp-engine/lib/classdef/SourceType

        • ngin.strict.Evaluator: erp-engine/lib/classdef/StrictModeEvaluator

        • ngin.database.DataType: erp-engine/lib/database/DataType

        • KeysUtilities: erp-engine/lib/database/KeysUtilities

        • QueryUtilities: erp-engine/lib/database/QueryUtilities

        • Method: erp-engine/lib/event/LegacyMethod

        • Event: erp-engine/lib/event/LegacyEvent

        • ngin.geo.AngleFormats: erp-engine/lib/geo/AngleFormat

        • ngin.geo.formatAngle: erp-engine/lib/geo/formatAngle

        • ngin.geo.formatLatitude: erp-engine/lib/geo/formatLatitude

        • ngin.geo.formatLongitude: erp-engine/lib/geo/formatLongitude

        • ngin.geo.LatitudeFormats: erp-engine/lib/geo/LatitudeFormat

        • ngin.geo.LongitudeFormats: erp-engine/lib/geo/LongitudeFormat

        • ngin.geo.parseAngle: erp-engine/lib/geo/parseAngle

        • ngin.geo.parseLatitude: erp-engine/lib/geo/parseLatitude

        • ngin.geo.parseLongitude: erp-engine/lib/geo/parseLongitude

        • goog.math.isInteger: erp-engine/lib/math/isInteger

        • ngin.struct.PropertyMapper: erp-engine/lib/object/PropertyMapper

        • parsePhone: erp-engine/lib/phone/parsePhone

        • PhoneNumber: erp-engine/lib/phone/PhoneNumber

        • ngin.product.canRelateKeys: erp-engine/lib/product/canRelateKeys

        • ngin.product.getChangeableProducts: erp-engine/lib/product/getChangeableProducts

        • ngin.product.getDependencies: erp-engine/lib/product/getDependencies

        • ngin.product.getProductFromKey: erp-engine/lib/product/getProductFromKey

        • ngin.product.canRelateKeys: erp-engine/lib/product/canRelateKeys

        • ngin.security.ClassChangePolicy: erp-engine/lib/security/ClassChangePolicy

        • ngin.security.PermissionModes: erp-engine/lib/security/PermissionMode

        • caseTreatment: erp-engine/lib/string/adjustCase

        • identifierToName: erp-engine/lib/string/identifierToName

        • nameToIdentifier: erp-engine/lib/string/nameToIdentifier

        • goog.string.padNumber: erp-engine/lib/string/padNumber

        • StringList: erp-engine/lib/string/StringList

        • stringToInt32: erp-engine/lib/string/stringToInt32

        • stringToInteger: erp-engine/lib/string/stringToInteger

        • stringToNumber: erp-engine/lib/string/stringToNumber

        • validateString: erp-engine/lib/string/validateString

        • formatNumber: erp-engine/lib/string/formatNumber

        • ngin.testing.classes.testModelDefs: erp-engine/lib/testing/classdef/testModelDefs

        • ngin.testing.classes.testViewDefs: erp-engine/lib/testing/classdef/testViewDefs

        • ngin.dataset.appendRecords: erp-engine/lib/testing/dataset/appendRecords

        • extractNameFromUrl: erp-engine/lib/url/extractNameFromUrl

        • ngin.encode.removeUnsupportedChars: erp-engine/lib/xml/removeUnsupportedChars

        • RoundingMode: erp-engine/lib/math/RoundingMode

        • Math.decimalPrecision: erp-engine/lib/math/decimalPrecision

        • Math.isZero: erp-engine/lib/math/isZero

        • round: erp-engine/lib/math/round

        • DataSetManager: erp-engine/lib/dataset/DataSetManager

        • DataSetManagerError: erp-engine/lib/dataset/DataSetManagerError

        • ngin.keys.PermissionsApplyModes: erp-engine/keys/PermissionApplyModes

        • ngin.classes.getTabularHierarchy: erp-engine/lib/database/Classes#getTabularHierarchy

        • ngin.classes.getOrphans: erp-engine/lib/database/Classes#getOrphans

        • ngin.classes.checkClassPath: erp-engine/lib/database/Classes#checkClassPath

        • ngin.dataset.forEach: erp-engine/lib/dataset/forEachRecord

        • ngin.dataset.pruneTree: erp-engine/lib/dataset/pruneTree

        • ngin.dataset.isTextualField: erp-engine/lib/dataset/isTextualField

        • ngin.dataset.fieldValuesAreEqual: erp-engine/lib/dataset/fieldValuesAreEqual

        • ngin.dataset.fieldValueIsEqual: erp-engine/lib/dataset/fieldValueIsEqual]

        • goog.object.some: erp-engine/lib/object/some

        • goog.object.isEmpty: erp-engine/lib/object/isEmpty

        • goog.object.forEach: erp-engine/lib/object/forEach

        • goog.object.filter: erp-engine/lib/object/filter

        • goog.object.map: erp-engine/lib/object/map

        • goog.object.createSet: erp-engine/lib/object/createSet

        • ngin.keys.Files: erp-engine/keys/Files

        • ngin.keys.Groups: erp-engine/keys/Groups

        • ngin.keys.Products: erp-engine/keys/Products

        • ngin.keys.Roles: erp-engine/keys/Roles

        • ngin.keys.Users: erp-engine/keys/Users

        • ngin.keys.applyDisablingProductKeyCreation: erp-engine/lib/product/applyDisablingProductKeyCreation

        • ngin.progress.task: erp-engine/lib/progress/applyWithProgress

        • ngin.progress.indeterminateTask: erp-engine/lib/progress/applyWithIndeterminateProgress

        • ngin.permission.Assignment: erp-engine/lib/security/PermissionAssignment

        • ngin.permission.Manager: erp-engine/lib/security/PermissionManager

        • ngin.permission.Schema: erp-engine/lib/security/PermissionSchema

        • Permission: erp-engine/lib/security/PermissionReplicator

        • PermissionsMaintenance: erp-engine/lib/security/PermissionMaintenance

        • ngin.security.hasPermissionControl: erp-engine/lib/security/Security#hasPermissionControl

        • ngin.security.suggestPermissionApplyMode: erp-engine/lib/security/Security#suggestPermissionApplyMode

        • goog.object.every: erp-engine/lib/object/every

        • AppSms: erp-engine/lib/sms/AppSms

        • HumanSms: erp-engine/lib/sms/HumanSms

    • As variáveis globais das APIs nativas do Engine passam a também poder ser obtidas construindo as classes associadas a elas. Antes dessa versão, os construtores dessas classes não eram acessíveis. Segue a relação das variáveis globais e os módulos que contêm os construtores equivalentes:

        • memoryManager: erp-engine/lib/engine/MemoryManager

        • profiler: erp-engine/lib/profiler/Profiler

        • criticalSection: erp-engine/lib/sync/CriticalSection

        • classes: erp-engine/lib/database/Classes

        • licenseManager: erp-engine/lib/license/LicenseManager

        • javaServer: erp-engine/lib/java/JavaServer

        • scheduler: erp-engine/lib/scheduler/Scheduler

        • virtualFS: erp-engine/lib/vfs/VirtualFileSystem

        • unionFS: erp-engine/lib/ufs/UnionFileSystem

        • security: erp-engine/lib/security/Security

        • dbCache: erp-engine/lib/database/DBCache

        • idoDBManager: erp-engine/lib/ido/IdoDBManager

        • repository: erp-engine/lib/repository/Repository

    • As variáveis globais request, response, session, connection, database, engine e tempDB, nativas do Engine, passam a também poder ser obtidas por meio de um módulo especial chamado context. Esse módulo passa a representar o contexto de atendimento de uma requisição do Engine e nele estão contidos objetos que são configurados dinamicamente pelo Engine com base no usuário requisitante e a base de dados requisitada. Segue a relação das variáveis globais e seus módulos equivalentes:

        • request: erp-engine/context/request

        • response: erp-engine/context/response

        • session: erp-engine/context/session

        • connection: erp-engine/context/connection

        • database: erp-engine/context/database

        • engine: erp-engine/context/engine

        • tempDB: erp-engine/context/tempDB

    • A classe ComInstaller, responsável pela instalação de objetos COM do Windows, foi movida do produto Engine para o Store, pois era utilizada apenas na instalação do iPdvLib. O licenciamento do produto Store deve ser solicitado se essa classe for utilizada em alguma customização do sistema.

    • Foi criado o método DBCache.tableContainsKey com a finalidade de verificar se uma chave existe em uma tabela do cache local. Mais detalhes em http://developer.erp.bematech.com/js-api/latest/module-erp-engine_lib_database_DBCache-DBCache.html#tableContainsKey. (por Paulo César Moreno, #13102704)

    • [-1897050167,calculoVencimentoCartaoProprio.ijs]

    • [-1895835975,calculaRateioAtualNoExtrato.ijs]

    • [-1898141721,engine.jaz]

    • [-1897023544,erp-task.jaz]

    • [-1898190623,stringList.js]

    • [-1895835988,ExtratoAnterior.ijs]

    • [-1895835985,ReceitasFinanceiras.ijs]

    • [-1895835973,calculaRateioNoMovdispo.ijs]

    • [-1895835962,ValoresReceitasFinanceirasComPagamentoRotativo.ijs]

    • [-1894442748,AcrescimoCondicao.ijs]

    • [-1891604048,0120 Engine.model]

    • [-1898191188,keysUtilities.js]

    • [-1898140328,0320 JAZ API.ijs]

    • [-1897023575,erp-core.jaz]

    • [-1898144796,0100 Engine.is]

    • [-1898140329,0010 StrictMode.config]

    • [-1898142643,0100 Engine.ijs]

    • [-1898144741,KeyUtilities.it]

    • [-1898144910,Validators.iejs]

    • [-1898144405,Validators.it]

    • [-1896041975,erp-store.jaz]

    • [-1895835989,Extrato.ijs]

    • [-1898145965,ComInstaller.js]

    • [-1898141338,0100 Engine.ijs]

    • [-1896042028,0600 Store.config]

    • [-1898141835,iDBCsql library.ijs]

    • [-1895835987,ResumoTitulosDeVenda.ijs]

    • [-1895835963,ConstantesConfiguraçãoCard.ijs]

    • [-1895835977,buscaDadosDoExtrato.ijs]

    • [-1898141289,0100 Engine.ijs]

    • [-1895835960,PrecoServicos.ijs]

    • [-1899925559,errors.js]

    • [-1897050164,funcões Relacionadas a Extrato do Cartão.ijs]

    • [-1898191186,queryUtilities.js]

    • [-1895835986,ResumoMovdispos.ijs]

    • [-1895835976,calculaRateioDoExtratoNaData.ijs]

    • [-1898145969,enumerators.js]

    • [-1898140346,erp-engine.jaz]

    • [-1895835984,CalculaReceitasFinanceirasComPagamentoRotativo.ijs]

    • [-1895835979,GravaResultadosDoExtrato.ijs]

    • [-1898140333,0100 Engine.config]

    • [-1895835983,BuscaServicosAtivos.ijs]

    • [-1897023545,erp-card.jaz]

    • [-1895835974,calculaRateioNaNegociacao.ijs]

    • [-1899925547,numbers.js]

    • [-1892603660,webframework.jaz]

    • [-1895835980,CalculaCarenciaDoExtrato.ijs]

    • [-1895835982,EstornaServicosAtivos.ijs]

    • [-1899925553,strings.js]

    • [-1898140334,0010 StrictMode.config]

    • [-1899925560,events.js]

    • [-1895835981,CalculaValorDoExtrato.ijs]

    • [-1895835971,ConfiguraçãoCard.ijs]