Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Painel
borderColor#dddedf
titleBGColor#ADD8E6
titleSobre

O protheus-lib-core é um pacote NPM cujo objetivo é facilitar a criação de apps voltados para o Protheus. Para isso, ele disponibiliza alguns serviços e interceptadores HTTP. 

Ele tem como base os pacotes do Angular e PO UI. Sua main version acompanha as versões do Angular e PO UI, logo a versão 14 19 do Protheusprotheus-lib-core tem como dependências as versões 14 19 do Angular e do PO UI.


Aviso
titleVersão 19.0.0

Por conta de uma inconsistência no pacote do PO-UI que na versão 19 só funciona para versões ~19.0.X do Angular, é necessário instalar a lib utilizando o --force. Foram realizados os devidos testes para garantir que a lib está funcionando corretamente mesmo forçando sua instalação.

Versões

Exibir filhos

Exemplo

Painel
borderColor#dddedf
titleBGColor#ADD8E6
titleRecursos

Abaixo serão listados os recursos da biblioteca.


Parâmetros

Exemplo

Expandir
titleIntegração ADVPL x Javascript com
Expandir
titleAdvplToJs e JsToAdvpl
Painel
borderStyledashed


Comandos que permitem a integração de códigos ADVPL com códigos Javascript.

Repositório com exemplos




Informações
titleFuncionamento

Esse recurso funciona apenas quando a aplicação é executada pelo Protheus. Para mais informações, clique aqui.

Dica
titlePerformance 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é-requisitos

Para desenvolver essa integração, é necessário:

  1. 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.
  2. 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 web

Esse 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
languagejs
titleExemplo
linenumberstrue
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 JsToAdvpl

Essa 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
languagec#
titleExemplo
linenumberstrue
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

  1. 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;
  2. Para enviar as interações desejadas do Protheus para a aplicação web, utilizamos o método AdvplToJs() disponibilizado pelo oWebChannel.

Image Modified


Bloco de código
languagejs
titleCódigo Javascript - Arquivo advpltojs.js
linenumberstrue
collapsetrue
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
languagejs
titleCódigo Javascript - Componente que envia a interação
linenumberstrue
collapsetrue
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
languagec#
titleCódigo ADVPL
linenumberstrue
collapsetrue
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
Funções

Parâmetros

Exemplo

  1. No app Angular, utilizar o método buildObservable do serviço ProJsToAdvplService:
    JsToAdvpl com Observable

    Para utilização do método jsToAdvpl com observable é necessário seguir os seguintes passos:

    Expandir
    titlecallAppClose
    ServiçoDescriçãoRetorno
    ProAppConfigServiceFunção que fecha a aplicação webvoid
    NomeTipoDescriçãoObrigatórioDefault
    askboolean

    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ãotrue
    Bloco de código
    languagejs
    titleExemplo
    linenumbers
      1. collapsetrue
    fechar
      1. jsAdvplObs(): 
    void
      1. Observable<any> {
        	
    this.proAppConfigService.callAppClose(true); }
    Expandir
    titlegetHttpParams
    ServiçoDescriçãoRetorno
    ProAdapterBaseV2ServiceFunção que retorna query params (aceitos pela FwAdapterBaseV2) no formato HttpParams.HttpParams
    NomeTipoDescriçãoObrigatórioDefault
    pagenumber

    Número da página

    Não1
    pageSizenumberQuantidade de registros a serem retornados na páginaNão20
    filterstringFiltro a ser utilizado na requisiçãoNãoVazio
    fieldsstringCampos a serem retornados pela requisiçãoNãoVazio
    orderstringOrdenação a ser utilizada no retorno da requisiçãoNãoVazio
    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    titlegetUserThreadInfo
    ServiçoDescriçãoRetorno
    ProThreadInfoServiceRetorna id, username, nome e emails do usuário logadoObservable de ProUserInfo
    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    getUserInfo(): void {
        this.proThreadInfoService.getUserInfoThread().subscribe({
          next: (res: ProUserInfo) => this.user = res
        });
      }
    Expandir
    titlegetUserBranches
    ServiçoDescriçãoRetornoProBranchServiceRetorna as filiais do usuárioObservable de ProBranchList

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefaultdescriptionstring

    Descrição da filial

    NãoVaziopagenumberNúmero da páginaNão1pageSizenumberQuantidade de registros a serem retornados na páginaNão10

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    getUserBranches(): void { this.proBranchService.getUserBranches('Filial 01', 1, 20).subscribe({ next: res => this.branches = res
      1. // 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`
                });
        
    } Expandir
    titlegetUserCompanies
    ServiçoDescriçãoRetornoProCompanyServiceRetorna as empresas do usuárioObservable de ProCompanyList

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefaultcorporateNamestring

    Nome da empresa

    NãoVaziopagenumberNúmero da páginaNão1pageSizenumberQuantidade de registros a serem retornados na páginaNão10

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    getUserCompanies(): void { this.proCompanyService.getUserCompanies('Empresa 01', 1, 20
      1.       } 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: 
    resServiçoDescriçãoRetornoProUserAccessServiceRetorna se o usuário logado possui acesso a determinada rotina e/ou sub-rotinaObservable

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefaultcRotinastring

    Nome da rotina a ser pesquisada

    SimnOpcnumberPosiçã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 baseNão

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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 }); })}); }
      1. payLoad =>
    this.companies = res }); } Expandir
    titleuserHasAccess
      1.  {
                console.log(payLoad);
                console.log("buildObservable subscribe");
              }
            });
          }
    1. Ainda no angular no fonte advpltojs.js fazer o envio do evento recebido:
      1. Bloco de código
        languagejs
        titleExemplo
        collapsetrue
        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);
        }
    2. No fonte advpl que chama a FwCallApp, na função estática chamar o método AdvplToJs do WebChannel:
      1. Bloco de código
        languagejs
        title
    Retorno esperadoServiçoDescriçãoRetornoProUserInfoServiceRetorna informações adicionais do usuário logadoObservable

    Parâmetros:

    Utiliza o usuário logado para efetuar a pesquisa

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    languagejs
    titleRetorno esperado
    collapsetrue
    { "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": [
      1. Exemplo
        collapsetrue
    {
        access: false,
        message: "Esse usuário não possui acesso para executar essa operação.\r\nMenu: MATA010 / Rotina: A010Inclui"
    }
    Expandir
    titlepswRet
      1. //-------------------------------------------------------------------
        /*/{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)
                
    "000000"
      1.     
    ],
      1. Next
        
      1.   
    "superiors":
      1.  
    "",
      1.     
    "department":
      1.  
    "",
      1.     oWebChannel:AdvplToJs("
    position
      1. receiveId1"
    :
      1. , "qwerty"
    ,
      1. )
            
    "email": "[email protected]",
      1. EndCase
        
            
    "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
    titleInterfaces
    Expandir
    titleProAdapterBaseV2

    Interface base para o retorno de APIs que utilizam a classe FwAdapterBaseV2.

    Propriedades

    PropriedadeTipoitemsArray<T> - o T indica o tipo dos registros a serem retornados no arrayhasNextbooleanremainingRecordsnumber

    Templatedocumentos

      1. ;/*logproc*/ConOut(PadC("Fim JsToAdvpl",32,"=")+ProcSource() + ":"+cValToChar(ProcLine()))
        Return
    Expandir
    titleFunções
    Expandir
    titlecallAppClose
    ServiçoDescriçãoRetorno
    ProAppConfigServiceFunção que fecha a aplicação webvoid

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    askboolean

    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ãotrue

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    fechar(): void {
    	this.proAppConfigService.callAppClose(true);
    }
    Expandir
    titlegetHttpParams
    ServiçoDescriçãoRetorno
    ProAdapterBaseV2ServiceFunção que retorna query params (aceitos pela FwAdapterBaseV2) no formato HttpParams.HttpParams

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    pagenumber

    Número da página

    Não1
    pageSizenumberQuantidade de registros a serem retornados na páginaNão20
    filterstringFiltro a ser utilizado na requisiçãoNãoVazio
    fieldsstringCampos a serem retornados pela requisiçãoNãoVazio
    orderstringOrdenação a ser utilizada no retorno da requisiçãoNãoVazio

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    titlegetUserThreadInfo
    ServiçoDescriçãoRetorno
    ProThreadInfoServiceRetorna id, username, nome e emails do usuário logadoObservable de ProUserInfo

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    getUserInfo(): void {
        this.proThreadInfoService.getUserInfoThread().subscribe({
          next: (res: ProUserInfo) => this.user = res
        });
      }
    Expandir
    titlegetUserBranches
    ServiçoDescriçãoRetorno
    ProBranchServiceRetorna as filiais do usuárioObservable de ProBranchList

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    descriptionstring

    Descrição da filial

    NãoVazio
    pagenumberNúmero da páginaNão1
    pageSizenumberQuantidade de registros a serem retornados na páginaNão10

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    getUserBranches(): void {
        this.proBranchService.getUserBranches('Filial 01', 1, 20).subscribe({
          next: res => this.branches = res
        });
      }
    Expandir
    titlegetUserCompanies
    ServiçoDescriçãoRetorno
    ProCompanyServiceRetorna as empresas do usuárioObservable de ProCompanyList

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    corporateNamestring

    Nome da empresa

    NãoVazio
    pagenumberNúmero da páginaNão1
    pageSizenumberQuantidade de registros a serem retornados na páginaNão10

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    getUserCompanies(): void {
        this.proCompanyService.getUserCompanies('Empresa 01', 1, 20).subscribe({
          next: res => this.companies = res
        });
      }
    Expandir
    titleuserHasAccess
    ServiçoDescriçãoRetorno
    ProUserAccessServiceRetorna se o usuário logado possui acesso a determinada rotina e/ou sub-rotinaObservable

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    cRotinastring

    Nome da rotina a ser pesquisada

    Sim
    nOpcnumberPosiçã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 baseNão

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    languagejs
    titleRetorno esperado
    collapsetrue
    {
        access: false,
        message: "Esse usuário não possui acesso para executar essa operação.\r\nMenu: MATA010 / Rotina: A010Inclui"
    }
    Expandir
    titlealiasHasAccess
    ServiçoDescriçãoRetorno
    ProUserAccessServiceRetorna se o usuário logado possui acesso a determinada tabela e/ou operações com a tabela.Observable

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    cTabelastring

    Tabela a ser pesquisada

    Sim
    nOpcnumberPosiçã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 tabelaNão

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    languagejs
    titleRetorno esperado
    collapsetrue
    {
        access: false,
        message: "Esse usuário não possui acesso na tabela"
    }
    Expandir
    titlepswRet
    ServiçoDescriçãoRetorno
    ProUserInfoServiceRetorna informações adicionais do usuário logadoObservable

    Parâmetros:

    Utiliza o usuário logado para efetuar a pesquisa

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    languagejs
    titleRetorno esperado
    collapsetrue
    {
        "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
    titleServiços
    Expandir
    titleProUserProfileService
    Expandir
    titlesetProfile
    ServiçoDescriçãoRetorno
    ProUserProfileServiceMetodo 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âmetros

    NomeTipoDescriçãoObrigatórioDefault
    programNamestring

    Nome do programa a ser salvo (max 20)

    Sim
    taskstringNome da tarefa a ser salvo (max 10)Sim
    typestringTipo a ser salvo (max 10)sim

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    titlecreate
    ServiçoDescriçãoRetorno
    ProUserProfileServiceCria um novo registro no profileObservable

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    valuestring

    Valor a ser gravado

    Sim

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    languagejs
    titleRetorno esperado
    collapsetrue
    {
    	"message":"Profile criado"
    }
    Expandir
    titleread
    ServiçoDescriçãoRetorno
    ProUserProfileServiceBusca o valor de uma chave salva no profileObservable

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    valuestring

    Valor default a ser retornado caso a chave de profile não exista

    Não""
    respTypestringtipo de retorno, pode ser text ou jsonNãojson

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    languagejs
    titleRetorno esperado
    collapsetrue
    "Valor do profile"
    Expandir
    titleupdate
    ServiçoDescriçãoRetorno
    ProUserProfileServiceAtualiza um registro no profileObservable

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    valuestring

    Valor a ser gravado

    Sim

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    languagejs
    titleRetorno esperado
    collapsetrue
    {
    	"message":"Descrição"
    }
    Expandir
    titledelete
    ServiçoDescriçãoRetorno
    ProUserProfileServiceDeleta um registro no profileObservable

    Parâmetros
    (sem parâmetros para esse metodo.)

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    languagejs
    titleRetorno esperado
    collapsetrue
    null
    Expandir
    titledeleteThenCreate
    ServiçoDescriçãoRetorno
    ProUserProfileServiceDeleta e cria um registro no profile
    esse metodo pode substituir o uso do metodo create e update em alguns casos
    Observable

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    valuestring

    Valor a ser gravado

    Sim

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    languagejs
    titleRetorno esperado
    collapsetrue
    {
    	"message":"Profile criado"
    }
    Expandir
    titleProGenericAdapterService
    Expandir
    titlelist
    ServiçoDescriçãoRetorno
    ProGenericAdapterServiceMétodo para devolver uma listagem de registro baseado na api genericListObservable

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    searchParamsProAdapterListInterface

    Parâmetros a serem enviados para o serviço, para maiores informações consultar a interface abaixo.

    Sim

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    languagejs
    titleRetorno esperado
    collapsetrue
    ProAdapterBaseV2<T>
    Expandir
    titlequery
    ServiçoDescriçãoRetorno
    ProGenericAdapterServiceMétodo para devolver uma listagem de registro baseado na api genericQueryObservable

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    searchParamsProAdapterQueryInterface

    Parâmetros a serem enviados para o serviço, para maiores informações consultar a interface abaixo.

    Sim

    Exemplo

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    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
    languagejs
    titleRetorno esperado
    collapsetrue
    ProAdapterBaseV2<T>
    Expandir
    titleProThemeService
    Informações
    titleFuncionamento

    Esse recurso funciona apenas a partir da biblioteca do Po-Ui 17.3.9 

    Expandir
    titlesetTheme
    ServiçoDescriçãoRetorno
    ProThemeServiceMetodo 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
    languagejs
    titleExemplo
    linenumberstrue
    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
    titleProTheme
    ServiçoDescriçãoRetorno
    ProThemeObjeto de temas padronizados para a plataforma ProtheusPoTheme

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    namestring

    Nomenclatura do tema a ser instanciado

    Sim''
    activeboolean

    Qual configuração deve ser a padrão a ser inicializada

    Sim0
    typePoThemeTokens

    Descrição da paleta de cores utilizada para a definição do tema novo instanciado

    SimPoThemeTokens


    Exemplo

    import { ProThemeService } from '@totvs/protheus-lib-core'; 

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    import {  ProTheme} from '@totvs/protheus-lib-core';  
    
     getNewTheme(): ProTheme{
    	
     	public proTheme: ProTheme = new ProTheme();
    
    	return proTheme;
    
    }

    Métodos


    availableThemes()

    MétodoDescriçãoRetorno
    availableThemesRetorno de temas padronizados disponíveis pelo serviço ProThemeServicePoTheme


    Parâmetros
    (sem parâmetros para esse metodo.)


    Exemplo

    import { ProThemeService } from '@totvs/protheus-lib-core'; 

    Bloco de código
    languagejs
    titleExemplo
    linenumberstrue
    import {  ProTheme} from '@totvs/protheus-lib-core';  
    
    export enum ProThemeEnum {
      proThemeTotvsClassic = 'proThemeTotvsClassic',
      proThemeTotvsSunset = 'proThemeTotvsSunset',
    }
    
     returnAvailableThemes(): Array<ProThemeEnum>{
    	
    	return this.proTheme.availableThemes(); //  ['proThemeTotvsClassic', 'proThemeTotvsSunset'] 
     }




    Expandir
    titleProSessionInfoService

    Disponibiliza as informações de sessão dos aplicativos (empresa, filial, database etc).

    Informações

    As informações são atribuídas ao chamar o método proAppConfigService.loadAppConfig() na abertura/inicialização do aplicativo.

    Expandir
    titlegetSessionInfo
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna um objeto com todas as informações de sessão do aplicativoProSessionInfo

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    {
      proCompany: ProCompany;
      proBranch: ProBranch;
      proModule: string;
      appName: string;
      proSystemModule: ProSystemModules;
      proDatabase: string;
      remoteRype: number;
      socketPort: number;
      proAppConfig: ProAppConfig;
      proIdiom: string;
      proRole: ProRole;
      token: ProAuthToken;
      erpAppConfig: ProAppConfig;
      proUser: ProUser;
      erpToken: ProAuthToken;
    }
    Expandir
    titlegetCompany
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna as informações da empresa logadaProCompany

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    {
        Code: "T1",
        InternalId: "T1",
        CorporateName: "Grupo TOTVS 1                           "
    }
    Expandir
    titlegetBranch
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna as informações da filial logadaProBranch

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    {
        CompanyCode: "T1",
        EnterpriseGroup: "T1",
        ParentCode: "D MG 01 ",
        Code: "D MG 01 ",
        Description: "Filial BELO HOR                          "
    }
    Expandir
    titlegetModule
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna o módulo logadostring

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    'CFG'
    Expandir
    titlegetAppName
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna o nome do appstring

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    'nomeApp'
    Expandir
    titlegetSystemModule
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna as informações do módulo logadoProSystemModules

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    {
        id: 99,
        name: "SIGACFG",
        description: "Configurador"
    }
    Aviso
    titleAtenção

    Essa informação existe somente quando o aplicativo é executado via WebApp.

    Expandir
    titlegetDataBase
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna a database informada no loginstring

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    '20240805'
    Expandir
    titlegetRemoteType
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna o tipo de remote conectadonumber

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    5
    Expandir
    titlegetSocketPort
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna a porta de conexão do socketnumber

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    1254
    Expandir
    titlegetAppConfig
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna as informações do aplicativoProAppConfig

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    {
        name: "Schedule",
        version: "1.0.0",
        versionAPI: "",
        productLine: "Protheus",
        api_baseUrl: "/",
        multiProtocolPort: null,
        serverBackend: null
    }
    Expandir
    titlegetIdiom
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna o idioma informado no loginstring

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    'pt-BR'
    Expandir
    titlegetErpAppConfig
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna as informações do aplicativoProAppConfig

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    {
        name: "Schedule",
        version: "1.0.0",
        versionAPI: "",
        productLine: "Protheus",
        api_baseUrl: /,
        multiProtocolPort: null,
        serverBackend: null
    }
    Expandir
    titlegetUser
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna as informações do usuárioProUser

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    {\"schemas\":[\"urn:scim:schemas:core:2.0:User\",\"urn:scim:schemas:extension:enterprise:2.0:User\"],\"id\":\"000000\",\"name\":{\"formatted\":\"Administrador\",\"givenName\":\"Administrador\",\"familyName\":\".\"},\"userName\":\"Administrador\",\"displayName\":\"Administrador\",\"meta\":{\"resourceType\": \"User\",\"created\":\"2015-08-28_00:00:00\",\"lastModified\":\"2024-03-08_00:00:00\"},\"externalId\":\"[email protected]\",\"phoneNumbers\":[],\"emails\":[{\"value\":\"[email protected]\",\"type\":\"work\",\"primary\":true}],\"active\":true,\"groups\":[],\"roles\":[],\"title\":\"\",\"department\":\"\"}
    Aviso
    titleAtenção

    Essa informação existe somente quando o aplicativo é executado via WebApp.

    Expandir
    titlegetRole
    ServiçoDescriçãoRetorno
    ProSessionInfoServiceRetorna as informações do papel de trabalho do usuárioProRole

    Parâmetros
    (sem parâmetros para este método)

    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    {
        Code: "  ",
        Description: ""
    }
    Aviso
    titleAtenção

    Essa informação existe somente quando o aplicativo é executado via WebApp.

    Expandir
    titleProDateService
    Expandir
    titlegetDateFormat
    ServiçoDescriçãoRetorno
    ProDateService

    Retorna o formato da data do sistema protheus com base no idioma.


    Utilização: propriedade p-format do componente po-datepicker

    string

    Parâmetros

    NomeTipoDescriçãoObrigatórioDefault
    languagestring

    Código do idioma

    Nãopt
    Bloco de código
    languagejs
    titleExemplo de retorno
    linenumberstrue
    collapsetrue
    'dd/mm/yyyy'
    Expandir
    titleInterfaces
    Expandir
    titleProAdapterBaseV2

    Interface base para o retorno de APIs que utilizam a classe FwAdapterBaseV2.

    Propriedades

    PropriedadeTipo
    itemsArray<T> - o T indica o tipo dos registros a serem retornados no array
    hasNextboolean
    remainingRecordsnumber
    Expandir
    titleProAdapterListInterface

    Interface com os parâmetros possíveis para utilização do serviço ProGenericAdapterService.list().

    Propriedades

    PropriedadeTipoObrigatórioDescrição
    aliasstringsimIndica o alias da tabela que terá seus dados listados
    filialFilterbooleannãoIndica se deve ser feito o filtro da filial ([ALIAS]_FILIAL) - Opcional, tendo seu valor como verdadeiro por padrão.
    deletedFilterbooleannãoIndica se deve ser feito o filtro de campos deletados de forma lógica (D_E_L_E_T_)
    pagenumericnãonúmero da pagina
    pageSizenumericnãoquantidade de registros por página
    filterstringnãofiltro padrão oData a ser utilizado na requisição, ex.: propriedade1 eq 'valor1' and propriedade2 eq 'valor2'
    fieldsstringnãocampos 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
    orderstringnãoordenação default da lista, ex.: a1_nome
    quickSearchstringnãoo 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ãoAlé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
    titleProAdapterQueryInterface

    Interface com os parâmetros possíveis para utilização do serviço ProGenericAdapterService.query().

    Propriedades

    PropriedadeTipoObrigatórioDescrição
    tablesstringsim Indica o alias da tabela que terá seus dados listados, caso seja mais de uma tabela, os alias devem ser separados por vírgula
    filialFilterbooleannãoIndica se deve ser feito o filtro da filial ([ALIAS]_FILIAL) - Opcional, tendo seu valor como verdadeiro por padrão.
    deletedFilterbooleannãoIndica se deve ser feito o filtro de campos deletados de forma lógica (D_E_L_E_T_)
    wherestringnãoIndica um filtro SQL que será incluso na query
    fromQrystringnãoPara 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
    pagenumericnãonúmero da pagina
    pageSizenumericnãoquantidade de registros por página
    filterstringnãofiltro padrão oData a ser utilizado na requisição, ex.: propriedade1 eq 'valor1' and propriedade2 eq 'valor2'
    fieldsstringnãocampos 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
    orderstringnãoordenação default da lista, ex.: a1_nome
    quickSearchstringnãoo 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ãoAlé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'





    Templatedocumentos

    panel
    Painel
    borderColor#dddedf
    titleBGColor#ADD8E6
    titlePacote

    https://www.npmjs.com/package/@totvs/protheus-lib-core

    Painel
    borderColor#dddedf
    titleBGColor#ADD8E6
    titleDemais informações
    Informações
    titleVeja também

    FwCallApp

    Informações
    titleLinks importantes

    PO UI

    Angular

    Dica
    titleArtigo e exemplo

    Apps no Protheus | TOTVS Developers | Medium

    Painel
    borderColor#dddedf
    titleBGColor#ADD8E6

    Repositório com exemplos