Abaixo serão listados os recursos da biblioteca.
Expandir |
---|
title | Integração ADVPL x Javascript |
---|
| Expandir |
---|
title | AdvplToJs e JsToAdvpl |
---|
| Painel |
---|
|
Comandos que permitem a integração de códigos ADVPL com códigos Javascript. Repositório com exemplos
Informações |
---|
| Esse recurso funciona apenas quando a aplicação é executada pelo Protheus. Para mais informações, clique aqui. |
Dica |
---|
title | Performance e boas práticas |
---|
| Para garantir melhor performance e boas práticas da aplicação, recomenda-se converter as informações disponibilizadas em serviços web. |
Pré-requisitosPara desenvolver essa integração, é necessário: - Na aplicação web, criar o arquivo advpltojs.js em assets/preload. Esse arquivo irá receber e tratar as instruções ADVPL que foram enviadas.
- No fonte que chama a aplicação (utilizando a FwCallApp), criar uma Static Function com o nome JsToAdvpl. Essa função irá receber e tratar as instruções Javascript que foram enviadas. Importante: o fonte não pode ser tlpp, pois em tlpp não existe a chamada de funções estáticas.
Arquivo advpltojs.js na aplicação webEsse arquivo deve conter uma função e javascript para receber e tratar as instruções ADVPL enviadas. Essa função deve receber dois parâmetros: codeType que indica qual o código da ação que foi definido e content que fornece a informação que deve ser tratada. Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| function(codeType, content) {
// Se a interação que recebi for igual a mensagemProtheus
if (codeType == 'mensagemProtheus') {
// Eu dou um alert com a informação que recebi para trabalhar
alert('Mensagem recebida do Protheus: ' + content);
}
} |
Static Function JsToAdvplEssa função recebe três parâmetros: oWebChannel que é o objeto do TWebEngine, cType que indica qual o código da ação que foi definido e cContent que fornece a informação que deve ser tratada. Bloco de código |
---|
language | c# |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| Function callAppExample()
FwCallApp('nome-do-app.app')
Return Nil
Static Function JsToAdvpl(oWebChannel,cType,cContent)
Do Case
// Se a interação que recebi for igual a mensagemJavascript
Case cType == 'mensagemJavascript'
// Imprimo no server a informação que recebi para trabalhar
Conout(cContent)
End
Return .T. |
Enviando interações- Para enviar as interações desejadas da aplicação web para o Protheus, utilizamos a função jsToAdvpl() do serviço ProJsToAdvplService disponibilizado pela biblioteca;
- Para enviar as interações desejadas do Protheus para a aplicação web, utilizamos o método AdvplToJs() disponibilizado pelo oWebChannel.
Bloco de código |
---|
language | js |
---|
title | Código Javascript - Arquivo advpltojs.js |
---|
linenumbers | true |
---|
collapse | true |
---|
| function(codeType, content) {
// Se a interação que recebi for igual a mensagemProtheus
if (codeType == 'mensagemProtheus') {
// Eu dou um alert com a informação que recebi para trabalhar
alert('Mensagem recebida do Protheus: ' + content);
}
} |
Bloco de código |
---|
language | js |
---|
title | Código Javascript - Componente que envia a interação |
---|
linenumbers | true |
---|
collapse | true |
---|
| import { Component } from '@angular/core';
import { ProJsToAdvplService } from '@totvs/protheus-lib-core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'doc-lib-core';
constructor(private proJsToAdvplService: ProJsToAdvplService) {}
click1(): void {
this.proJsToAdvplService.jsToAdvpl('mensagemJavascript', 'Comando Javascript')
}
click2(): void {
this.proJsToAdvplService.jsToAdvpl('receberProtheus', '')
}
} |
Bloco de código |
---|
language | c# |
---|
title | Código ADVPL |
---|
linenumbers | true |
---|
collapse | true |
---|
| Function doclibcore()
FwCallApp("doc-lib-core")
Return
Static Function JsToAdvpl(oWebChannel,cType,cContent)
Do Case
// Se a interação que recebi for igual a mensagemJavascript
Case cType == 'mensagemJavascript'
// Imprimo a informação que recebi para trabalhar
alert('O que veio do JS: ' + cContent)
// Se a interação que recebi for igual a receberProtheus
Case cType == 'receberProtheus'
// Envio um comando ADVPL para minha aplicação Web
oWebChannel:AdvPLToJS('mensagemProtheus', 'Comando ADVPL')
End
Return .T. |
|
|
Expandir |
---|
title | JsToAdvpl com Observable |
---|
| Para utilização do método jsToAdvpl com observable é necessário seguir os seguintes passos: - No app Angular, utilizar o método buildObservable do serviço ProJsToAdvplService:
Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
collapse | true |
---|
| jsAdvplObs(): Observable<any> {
// Variável que enviará as informações para o Protheus
let sendIfo: ProJsToAdvpl = {
autoDestruct: false, // Informa se o Observable será destruído assim que tiver um retorno
receiveId: "receiveId1", // ID que será recebido pela aplicação Angular no retorno do Protheus
sendInfo: { // Objeto com os dados que serão enviados ao Protheus
type: "jstoadvplPar1", // ID que será enviado ao protheus (Recebido na static function JsToAdvpl)
content: "content" // Conteúdo enviado ao Protheus
}
};
// Callback que será executado após o retorno do AdplToJs
const observableCallback = ({protheusResponse, subscriber}: {protheusResponse: any, subscriber: any}) => {
console.log(protheusResponse);
let isOk = (protheusResponse.length > 0);
if (!isOk) {
subscriber.error({
status: 400,
description: `Error`
});
} else {
subscriber.next( protheusResponse ); // Dispara e evento do observable
}
subscriber.complete();
};
// Realiza a inscrição no Observable, enviando o callback e as informações enviadas ao Protheus)
this.proJsToAdvplService.buildObservable( observableCallback, sendIfo).subscribe({
next: payLoad => {
console.log(payLoad);
console.log("buildObservable subscribe");
}
});
} |
- Ainda no angular no fonte advpltojs.js fazer o envio do evento recebido:
Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
collapse | true |
---|
| function(codeType, content){
// Se a interação que recebi for igual a mensagemProtheus
if (codeType == 'mensagemProtheus') {
// Eu dou um alert com a informação que recebi para trabalhar
alert('Mensagem recebida do Protheus: ' + content);
}
// Efetua o envio do evento para observable do buildObservable
this.eventTarget.send(codeType, content);
console.log(codeType);
console.log(content);
} |
- No fonte advpl que chama a FwCallApp, na função estática chamar o método AdvplToJs do WebChannel:
Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
collapse | true |
---|
| //-------------------------------------------------------------------
/*/{Protheus.doc} JsToAdvpl
chamada a partir do app
@author Totvs
@since 18/11/2022
//-----------------------------------------------------------------*/
Static Function JsToAdvpl(oWebChannel,cType,cContent)
Local nx := 0
_aVarI := {cType,cContent}
VarInfo('_aVarI', _aVarI , , .F. )
;/*logproc*/ConOut(PadC("inicio",32,"=")+ProcSource() + ":"+cValToChar(ProcLine()))
Do Case
Case cType == "preLoad"
Case cType == "jstoadvplPar1"
For nx := 1 to 10
ConOut(cValToChar(nx))
Sleep(1000)
Next
oWebChannel:AdvplToJs("receiveId1", "qwerty")
EndCase
;/*logproc*/ConOut(PadC("Fim JsToAdvpl",32,"=")+ProcSource() + ":"+cValToChar(ProcLine()))
Return |
|
|
Expandir |
---|
| Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProAppConfigService | Função que fecha a aplicação web | void |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
ask | boolean | Indica se deve forçar (true) o fechamento ou não (false). Caso o valor seja false, irá apresentar uma pergunta se deve fechar ou não o aplicativo. | Não | true |
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| fechar(): void {
this.proAppConfigService.callAppClose(true);
} |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProAdapterBaseV2Service | Função que retorna query params (aceitos pela FwAdapterBaseV2) no formato HttpParams. | HttpParams |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
page | number | Número da página | Não | 1 | pageSize | number | Quantidade de registros a serem retornados na página | Não | 20 | filter | string | Filtro a ser utilizado na requisição | Não | Vazio | fields | string | Campos a serem retornados pela requisição | Não | Vazio | order | string | Ordenação a ser utilizada no retorno da requisição | Não | Vazio |
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| getCustomers(): Observable<ProAdapterBaseV2<Customer>> {
const parameters = this.proAdapterBaseV2Service.getHttpParams(1, 10, "contains(name, 'TOTVS')", "id,name", '-id');
return this.httpClient.get('seu endpoint', { params: parameters})
} |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProThreadInfoService | Retorna id, username, nome e emails do usuário logado | Observable de ProUserInfo |
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| getUserInfo(): void {
this.proThreadInfoService.getUserInfoThread().subscribe({
next: (res: ProUserInfo) => this.user = res
});
} |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProBranchService | Retorna as filiais do usuário | Observable de ProBranchList |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
description | string | Descrição da filial | Não | Vazio | page | number | Número da página | Não | 1 | pageSize | number | Quantidade de registros a serem retornados na página | Não | 10 |
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| getUserBranches(): void {
this.proBranchService.getUserBranches('Filial 01', 1, 20).subscribe({
next: res => this.branches = res
});
} |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProCompanyService | Retorna as empresas do usuário | Observable de ProCompanyList |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
corporateName | string | Nome da empresa | Não | Vazio | page | number | Número da página | Não | 1 | pageSize | number | Quantidade de registros a serem retornados na página | Não | 10 |
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| getUserCompanies(): void {
this.proCompanyService.getUserCompanies('Empresa 01', 1, 20).subscribe({
next: res => this.companies = res
});
} |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProUserAccessService | Retorna se o usuário logado possui acesso a determinada rotina e/ou sub-rotina | Observable |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
cRotina | string | Nome da rotina a ser pesquisada | Sim |
| nOpc | number | Posição no menudef da sub-rotina a ser pesquisada, caso não seja passado será feita a pesquisa de acesso considerando apenas a função base | Não |
|
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProUserAccessService, ProUserAccessInterface } from '@totvs/protheus-lib-core';
getAccess(){
this.proUserAccessService.userHasAccess(this.cRotina).subscribe({
next: ( acesso => {
const proUserAccess: ProUserAccessInterface = acesso as ProUserAccessInterface;
console.log(acesso);
this.poAlert.alert({title: cType , message: "Acesso: " + proUserAccess.access + "\n" + "Messagem: " + proUserAccess.message });
})});
} |
Bloco de código |
---|
language | js |
---|
title | Retorno esperado |
---|
collapse | true |
---|
| {
access: false,
message: "Esse usuário não possui acesso para executar essa operação.\r\nMenu: MATA010 / Rotina: A010Inclui"
} |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProUserAccessService | Retorna se o usuário logado possui acesso a determinada tabela e/ou operações com a tabela. | Observable |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
cTabela | string | Tabela a ser pesquisada | Sim |
| nOpc | number | Posição no menudef da sub-rotina a ser pesquisada, caso não seja passado será feita a pesquisa de acesso considerando apenas o acesso geral a tabela | Não |
|
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProUserAccessService, ProUserAccessInterface } from '@totvs/protheus-lib-core';
getAccess(){
this.proUserAccessService.aliasHasAccess(this.cTabela).subscribe({
next: ( acesso => {
const proUserAccess: ProUserAccessInterface = acesso as ProUserAccessInterface;
console.log(acesso);
this.poAlert.alert({title: cType , message: "Acesso: " + proUserAccess.access + "\n" + "Messagem: " + proUserAccess.message });
})});
} |
Bloco de código |
---|
language | js |
---|
title | Retorno esperado |
---|
collapse | true |
---|
| {
access: false,
message: "Esse usuário não possui acesso na tabela"
} |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProUserInfoService | Retorna informações adicionais do usuário logado | Observable |
Parâmetros:Utiliza o usuário logado para efetuar a pesquisa Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProUserInfoService, ProUserPswretInterface } from '@totvs/protheus-lib-core';
pswRet(){
this.proUserInfoService.pswRet().subscribe(
pswret => {
const proUserPswRet: ProUserPswretInterface = pswret as ProUserPswretInterface;
console.log(proUserPswRet);
this.poAlert.alert({title: "okok" , message: proUserPswRet.user_id + " - " + proUserPswRet.user_name });
}
);
} |
Bloco de código |
---|
language | js |
---|
title | Retorno esperado |
---|
collapse | true |
---|
| {
"user_id": "000000",
"user_name": "Administrador",
"user_full_name": "Administrador",
"expiration_date": "00/00/00",
"number_of_days_to_expire": 999,
"authorization_to_change_the_password": true,
"change_password_at_next_logon": false,
"groups_array": [
"000000"
],
"superiors": "",
"department": "",
"position": "",
"email": "[email protected]",
"number_of_simultaneous_accesses": 99,
"date_of_last_change": "2022/07/04",
"user_blocked": false,
"number_of_digits_for_the_year": 4,
"listener_for_calls": false,
"extension": "",
"operation_log": "",
"company_branch_and_registration": "",
"allow_changing_system_database": true,
"days_to_go_back": 0,
"days_to_go_forward": 0,
"date_of_inclusion_in_the_system": "2015/08/28",
"global_field_level": 5,
"access_times": [
"00:00|23:59",
"00:00|23:59",
"00:00|23:59",
"00:00|23:59",
"00:00|23:59",
"00:00|23:59",
"00:00|23:59"
],
"path_for_disk_printing": "\\SPOOL\\",
"driver_for_direct_port_printing": "EPSON.DRV",
"accesses": "SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSNSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSNNNNNNNNNNSNSNNSNNSNSSNNSSSSSSSSNNNNNSSSSNNNSSSSSSSSSSSNNNNNNSNNNSNNSSSSSSSSSNNSSSNSSSSSSSSSSSSNSSNNSSNSSSSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
"companies_array": [
"@@@@"
],
"pe_useracs": "",
"print_type": 1,
"page_format": 1,
"environment_type": 1,
"prioritize_group_configuration": false,
"print_option": "",
"access_other_print_directories": false,
"modules_array": [
"015\\system\\SIGAATF.XNU",
"025\\system\\SIGACOM.XNU",
"035\\system\\SIGACON.xnu",
"045\\system\\SIGAEST.XNU",
"055SIGAFAT",
"065\\system\\SIGAFIN.XNU",
"075\\system\\SIGAGPE.XNU",
"085\\system\\SIGAFAS.xnu",
"095\\system\\SIGAFIS.XNU",
"105\\system\\SIGAPCP.XNU",
"115\\system\\SIGAVEI.XNU",
"125\\system\\SIGALOJA.XNU",
"135\\system\\SIGATMK.XNU",
"145\\system\\SIGAOFI.XNU",
"155\\system\\SIGARPM.xnu",
"165\\system\\SIGAPON.XNU",
"175\\system\\SIGAEIC.XNU",
"185\\system\\SIGATCF.XNU",
"195\\system\\SIGAMNT.XNU",
"205\\system\\SIGARSP.XNU",
"215\\system\\SIGAQIE.XNU",
"225\\system\\SIGAQMT.XNU",
"235\\system\\SIGAFRT.XNU",
"245\\system\\SIGAQDO.XNU",
"255\\system\\SIGAQIP.XNU",
"265\\system\\SIGATRM.XNU",
"275\\system\\SIGAEIF.xnu",
"285\\system\\SIGATEC.XNU",
"295\\system\\SIGAEEC.XNU",
"305\\system\\SIGAEFF.XNU",
"315\\system\\SIGAECO.XNU",
"325\\system\\SIGAAFV.xnu",
"335\\system\\SIGAPLS.XNU",
"345\\system\\SIGACTB.XNU",
"355\\system\\SIGAMDT.XNU",
"365\\system\\SIGAQNC.XNU",
"375\\system\\SIGAQAD.XNU",
"385\\system\\SIGAQCP.xnu",
"395\\system\\SIGAOMS.XNU",
"405\\system\\SIGACSA.XNU",
"415\\system\\SIGAPEC.XNU",
"425\\system\\SIGAWMS.XNU",
"435\\system\\SIGATMS.XNU",
"445\\system\\SIGAPMS.XNU",
"455\\system\\SIGACDA.XNU",
"465\\system\\SIGAACD.XNU",
"475\\system\\SIGAPPAP.XNU",
"485\\system\\SIGAREP.XNU",
"495\\system\\SIGAGE.XNU",
"505\\system\\SIGAEDC.XNU",
"515\\system\\SIGAHSP.XNU",
"525\\system\\SIGAVDOC.xnu",
"535\\system\\SIGAAPD.XNU",
"545\\system\\SIGAGSP.XNU",
"555\\system\\SIGACRD.XNU",
"565\\system\\SIGASGA.XNU",
"575\\system\\SIGAPCO.XNU",
"585\\system\\SIGAGPR.XNU",
"595\\system\\SIGAGAC.XNU",
"605\\system\\SIGAPRA.XNU",
"615\\system\\SIGAHGP.xnu",
"625\\system\\SIGAHHG.xnu",
"635\\system\\SIGAHPL.xnu",
"645\\system\\SIGAAPT.XNU",
"655\\system\\SIGAGAV.XNU",
"665\\system\\SIGAICE.XNU",
"675\\system\\SIGAAGR.XNU",
"685\\system\\SIGAARM.xnu",
"695\\system\\SIGAGCT.XNU",
"705\\system\\SIGAORG.XNU",
"715\\system\\SIGALVE.xnu",
"725\\system\\SIGAPHOTO.XNU",
"735\\system\\SIGACRM.XNU",
"745\\system\\SIGABPM.XNU",
"755\\system\\SIGAAPON.xnu",
"765\\system\\SIGAJURI.XNU",
"775\\system\\SIGAPFS.XNU",
"785\\system\\SIGAGFE.XNU",
"795\\system\\SIGASFC.XNU",
"805\\system\\SIGAACV.xnu",
"815\\system\\SIGALOG.xnu",
"825\\system\\SIGADPR.XNU",
"835\\system\\SIGAVPON.xnu",
"845\\system\\SIGATAF.XNU",
"855\\system\\SIGAESS.XNU",
"865\\system\\SIGAVDF.XNU",
"875\\system\\SIGAGCP.XNU",
"885\\system\\SIGAGTP.xnu",
"895\\system\\SIGATUR.xnu",
"905\\system\\SIGAGCV.xnu",
"915\\system\\SIGAPDS.XNU",
"92X\\system\\SIGATFL.XNU",
"93X\\system\\SIGACEN.XNU",
"94X",
"95X",
"965\\system\\SIGAESP2.xnu",
"975SIGAESP",
"985\\system\\SIGAESP1.xnu",
"995\\system\\SIGACFG.XNU"
]
} |
|
Expandir |
---|
title | ProUserProfileService |
---|
| Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProUserProfileService | Metodo para definir o profile a ser utilizado Antes de utilizar qualquer método de CRUD é necessário definir o profile por esse método pelo menos uma vez. | null |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
programName | string | Nome do programa a ser salvo (max 20) | Sim |
| task | string | Nome da tarefa a ser salvo (max 10) | Sim |
| type | string | Tipo a ser salvo (max 10) | sim |
|
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProUserProfileService } from '@totvs/protheus-lib-core';
profileManager(){
this.proUserProfileService.setProfile(this.cFunction, this.cTask, this.cType);
this.proUserProfileService.create(this.cValue).subscribe({
next: apiReturn => {
console.log(apiReturn);
}
});
} |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProUserProfileService | Cria um novo registro no profile | Observable |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
value | string | Valor a ser gravado | Sim |
|
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProUserProfileService } from '@totvs/protheus-lib-core';
profileManager(){
this.proUserProfileService.setProfile(this.cFunction, this.cTask, this.cType);
this.proUserProfileService.create(this.cValue).subscribe({
next: apiReturn => {
console.log(apiReturn);
}
});
} |
Bloco de código |
---|
language | js |
---|
title | Retorno esperado |
---|
collapse | true |
---|
| {
"message":"Profile criado"
} |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProUserProfileService | Busca o valor de uma chave salva no profile | Observable |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
value | string | Valor default a ser retornado caso a chave de profile não exista | Não | "" | respType | string | tipo de retorno, pode ser text ou json | Não | json |
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProUserProfileService } from '@totvs/protheus-lib-core';
profileManager(){
this.proUserProfileService.setProfile(this.cFunction, this.cTask, this.cType);
this.proUserProfileService.read(this.cValue, "text").subscribe({
next: apiReturn => {
console.log(apiReturn);
}
});
} |
Bloco de código |
---|
language | js |
---|
title | Retorno esperado |
---|
collapse | true |
---|
| "Valor do profile" |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProUserProfileService | Atualiza um registro no profile | Observable |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
value | string | Valor a ser gravado | Sim |
|
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProUserProfileService } from '@totvs/protheus-lib-core';
profileManager(){
this.proUserProfileService.setProfile(this.cFunction, this.cTask, this.cType);
this.proUserProfileService.update(this.cValue).subscribe({
next: apiReturn => {
console.log(apiReturn);
}
});
} |
Bloco de código |
---|
language | js |
---|
title | Retorno esperado |
---|
collapse | true |
---|
| {
"message":"Descrição"
} |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProUserProfileService | Deleta um registro no profile | Observable |
Parâmetros (sem parâmetros para esse metodo.)Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProUserProfileService } from '@totvs/protheus-lib-core';
profileManager(){
this.proUserProfileService.setProfile(this.cFunction, this.cTask, this.cType);
this.proUserProfileService.delete().subscribe({
next: apiReturn => {
console.log(apiReturn);
}
});
} |
Bloco de código |
---|
language | js |
---|
title | Retorno esperado |
---|
collapse | true |
---|
| null |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProUserProfileService | Deleta e cria um registro no profile esse metodo pode substituir o uso do metodo create e update em alguns casos | Observable |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
value | string | Valor a ser gravado | Sim |
|
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProUserProfileService } from '@totvs/protheus-lib-core';
profileManager(){
this.proUserProfileService.setProfile(this.cFunction, this.cTask, this.cType);
this.proUserProfileService.deleteThenCreate(this.cValue).subscribe({
next: apiReturn => {
console.log(apiReturn);
}
});
} |
Bloco de código |
---|
language | js |
---|
title | Retorno esperado |
---|
collapse | true |
---|
| {
"message":"Profile criado"
} |
|
|
Expandir |
---|
title | ProGenericAdapterService |
---|
| Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProGenericAdapterService | Método para devolver uma listagem de registro baseado na api genericList | Observable |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
searchParams | ProAdapterListInterface | Parâmetros a serem enviados para o serviço, para maiores informações consultar a interface abaixo. | Sim |
|
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProGenericAdapterService, ProAdapterListInterface, ProAdapterQueryInterface } from '@totvs/protheus-lib-core';
genericListAdapter(){
let adapterList: ProAdapterListInterface = {
alias: this.genericAdapter.table,
fields: this.genericAdapter.fields,
quickSearch: this.genericAdapter.quicksearch
};
this.proGenericAdapterService.list(adapterList).subscribe({
next: apiReturn => {
console.log(apiReturn);
let propriedades = this.genericAdapter.fields.split(',');
let arrayJSON = propriedades.map((propriedade) => {
return { property: propriedade };
});
this.table.items = apiReturn.items;
this.table.columns = arrayJSON;
}
});
} |
Bloco de código |
---|
language | js |
---|
title | Retorno esperado |
---|
collapse | true |
---|
| ProAdapterBaseV2<T> |
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProGenericAdapterService | Método para devolver uma listagem de registro baseado na api genericQuery | Observable |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
searchParams | ProAdapterQueryInterface | Parâmetros a serem enviados para o serviço, para maiores informações consultar a interface abaixo. | Sim |
|
Exemplo Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProGenericAdapterService, ProAdapterListInterface, ProAdapterQueryInterface } from '@totvs/protheus-lib-core';
genericQueryAdapter(){
let adapterList: ProAdapterQueryInterface = {
tables: this.genericAdapter.table,
fields: this.genericAdapter.fields,
quickSearch: this.genericAdapter.quicksearch
};
this.proGenericAdapterService.query(adapterList).subscribe({
next: apiReturn => {
console.log(apiReturn);
let propriedades = this.genericAdapter.fields.split(',');
let arrayJSON = propriedades.map((propriedade) => {
return { property: propriedade };
});
this.table.items = apiReturn.items;
this.table.columns = arrayJSON;
}
});
} |
Bloco de código |
---|
language | js |
---|
title | Retorno esperado |
---|
collapse | true |
---|
| ProAdapterBaseV2<T> |
|
|
Expandir |
---|
| Informações |
---|
| Esse recurso funciona apenas a partir da biblioteca do Po-Ui 17.3.9 |
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProThemeService | Metodo para definir o tema a ser utilizado com base nas configurações do appserver.ini, verificando a tag THEME.
| Observable |
Parâmetros (sem parâmetros para esse metodo.)
Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProThemeService } from '@totvs/protheus-lib-core';
constructor(
private poTheme: PoThemeService
) {}
setTheme(): {
let proTheme: ProTheme = new ProTheme();
this.proTheme.setTheme(ProThemeEnum.proThemeTotvsClassic);
// Configuração do tema totvs classic, com ativação padrão do tema claro
this.poTheme.setTheme(this.proTheme, PoThemeTypeEnum.light);
// Configuração do tema totvs classic, com ativação padrão do tema escuro
this.poTheme.setTheme(this.proTheme, PoThemeTypeEnum.dark);
// Configuração do tema totvs sunset
this.proTheme.setTheme(ProThemeEnum.proThemeTotvsSunset);
this.poTheme.setTheme(this.proTheme, PoThemeTypeEnum.light);
}
|
|
Expandir |
---|
| Serviço | Descrição | Retorno |
---|
ProTheme | Objeto de temas padronizados para a plataforma Protheus | PoTheme |
ParâmetrosNome | Tipo | Descrição | Obrigatório | Default |
---|
name | string | Nomenclatura do tema a ser instanciado | Sim | '' | active | boolean | Qual configuração deve ser a padrão a ser inicializada | Sim | 0 | type | PoThemeTokens | Descrição da paleta de cores utilizada para a definição do tema novo instanciado | Sim | PoThemeTokens |
Exemploimport { ProThemeService } from '@totvs/protheus-lib-core'; Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProTheme} from '@totvs/protheus-lib-core';
getNewTheme(): ProTheme{
public proTheme: ProTheme = new ProTheme();
return proTheme;
} |
Métodos
availableThemes() Método | Descrição | Retorno |
---|
availableThemes | Retorno de temas padronizados disponíveis pelo serviço ProThemeService | PoTheme |
Parâmetros (sem parâmetros para esse metodo.)
Exemploimport { ProThemeService } from '@totvs/protheus-lib-core'; Bloco de código |
---|
language | js |
---|
title | Exemplo |
---|
linenumbers | true |
---|
| import { ProTheme} from '@totvs/protheus-lib-core';
export enum ProThemeEnum {
proThemeTotvsClassic = 'proThemeTotvsClassic',
proThemeTotvsSunset = 'proThemeTotvsSunset',
}
returnAvailableThemes(): Array<ProThemeEnum>{
return this.proTheme.availableThemes(); // ['proThemeTotvsClassic', 'proThemeTotvsSunset']
} |
|
|
|
Expandir |
---|
| Expandir |
---|
| Interface base para o retorno de APIs que utilizam a classe FwAdapterBaseV2. PropriedadesPropriedade | Tipo |
---|
items | Array<T> - o T indica o tipo dos registros a serem retornados no array | hasNext | boolean | remainingRecords | number |
|
Expandir |
---|
title | ProAdapterListInterface |
---|
| Interface com os parâmetros possíveis para utilização do serviço ProGenericAdapterService.list(). PropriedadesPropriedade | Tipo | Obrigatório | Descrição |
---|
alias | string | sim | Indica o alias da tabela que terá seus dados listados | filialFilter | boolean | não | Indica se deve ser feito o filtro da filial ([ALIAS]_FILIAL) - Opcional, tendo seu valor como verdadeiro por padrão. | deletedFilter | boolean | não | Indica se deve ser feito o filtro de campos deletados de forma lógica (D_E_L_E_T_) | page | numeric | não | número da pagina | pageSize | numeric | não | quantidade de registros por página | filter | string | não | filtro padrão oData a ser utilizado na requisição, ex.: propriedade1 eq 'valor1' and propriedade2 eq 'valor2' | fields | string | não | campos a serem retornados na listagem, caso não seja passado serão retornados todos os campos do alias e o filtro do tipo quickSearch não poderá ser utilizado. ex: a1_cod,a1_loja,a1_nome | order | string | não | ordenação default da lista, ex.: a1_nome | quickSearch | string | não | o valor informado nessa propriedade será utilizado para a pesquisa do tipo quicksearch, pesquisa em todos os campos do tipo character do alias, para funcionar é necessário que seja utilizado o parâmetro fields também. | ? | ? | não | Além dos parâmetros pré-definidos pode ser passado nessa interface parâmetros para filtrar cada propriedade individualmente, usada na busca avançada, ex.: a1_cod='000001' |
|
Expandir |
---|
title | ProAdapterQueryInterface |
---|
| Interface com os parâmetros possíveis para utilização do serviço ProGenericAdapterService.query(). PropriedadesPropriedade | Tipo | Obrigatório | Descrição |
---|
tables | string | sim | Indica o alias da tabela que terá seus dados listados, caso seja mais de uma tabela, os alias devem ser separados por vírgula | filialFilter | boolean | não | Indica se deve ser feito o filtro da filial ([ALIAS]_FILIAL) - Opcional, tendo seu valor como verdadeiro por padrão. | deletedFilter | boolean | não | Indica se deve ser feito o filtro de campos deletados de forma lógica (D_E_L_E_T_) | where | string | não | Indica um filtro SQL que será incluso na query | fromQry | string | não | Para querys mais complexas, que exigem um left join por exemplo, o FROM e JOIN podem ser informados aqui, sendo que por padrão, a tabela deve ter um alias conforme o SX2, exemplo: SED990 SED | page | numeric | não | número da pagina | pageSize | numeric | não | quantidade de registros por página | filter | string | não | filtro padrão oData a ser utilizado na requisição, ex.: propriedade1 eq 'valor1' and propriedade2 eq 'valor2' | fields | string | não | campos a serem retornados na listagem, caso não seja passado serão retornados todos os campos do alias e o filtro do tipo quickSearch não poderá ser utilizado. ex: a1_cod,a1_loja,a1_nome | order | string | não | ordenação default da lista, ex.: a1_nome | quickSearch | string | não | o valor informado nessa propriedade será utilizado para a pesquisa do tipo quicksearch, pesquisa em todos os campos do tipo character do alias, para funcionar é necessário que seja utilizado o parâmetro fields também. | ? | ? | não | Além dos parâmetros pré-definidos pode ser passado nessa interface parâmetros para filtrar cada propriedade individualmente, usada na busca avançada, ex.: a1_cod='000001' |
|
|
|