...
Ponto de entrada
...
que permite a manipulação de informações do MNTNG
Características do Requisito
Linha de Produto: | Microsiga Protheus |
Segmento: | Manufatura |
Módulo: | SIGAMNT - Manutenção de Ativos e Gestão de Frotas
|
Rotina: | Rotina | Nome Técnico |
---|
MNTNG | Função do aplicativo MNT NG |
|
País(es)Países: | Todos |
Banco(s) Bancos de Dados: | Todos |
Sistema(s) Operacional(is)Sistemas Operacionais: | Todos |
Ponto de Entrada
Descrição: | Ponto de Entrada para utilização no MNT NG que permite customizações nos processos inclusão, validação e cancelamento das ordens de serviço.em processos do MNTNG |
Localização: | SIGAMNT: Atualizações/Controle de Oficina/Ordem de Serviço/Corretiva. |
Programa Fonte: | MNTNG.APW |
Função: | MNTNG() |
Parâmetros: | Posição | Tipo | Descrição |
---|
ParamIXB[1] |
Cstring | ID do local de execução do ponto de entrada |
|
2 | O | Objeto com referência ao webservice |
Eventos: | | ID | Conteúdo do objeto no 2º parâmetro / | Após a inclusão de uma ordem de serviço. | CREATE_VALID_ORDER |
|
Bloco de código |
---|
title | Exemplo do conteúdo |
---|
linenumbers | true |
---|
collapse | true |
---|
|
{
Antes da inclusão de uma ordem de serviço. | UPDATE_VALID_ORDER | Antes da alteração de uma ordem de serviço. | UPDATE_FINISH_ORDER | Após a confirmação da finalização, sendo permitido manipular as informações enviadas na finalização. | FINISHED_ORDER | Após a finalização de uma ordem de serviço. | FINISH_VALID_ORDER | Validação antes da finalização de uma ordem de serviço. | CANCEL_VALID | Validação antes do cancelamento de uma ordem de serviço. | CREATED_PLANNED_INPUT | Após incluir um insumo previsto. | COUNTER_VALID_FINISH | Validação de contador na finalização. | FILTER_PRODUCT | Filtro para produtos. | FILTER_EQUIPMENT | Filtro para bens ou localizações. | FILTER_SERVICE | Filtro para serviços. | FILTER_COSTCENTER | Filtro para centros de custo. | FILTER_FAMILY | Filtro para famílias de bens. | FILTER_TOOL | Filtro para ferramentas. | FILTER_EXECUTOR | Filtro para executantes de S.S. | FILTER_AREA | Filtro para áreas da manutenção. | FILTER_THIRDPART | Filtro para terceiros. | DESCRIPTION_LOCALIZATION | Sincronização, ao gerar o arquivo que contém dados dos bens. | FILTER_ORDER | Filtro para ordens de serviço. Informações |
---|
| - Este ID somente terá efeito ao acionado quando feito logout no aplicativo MNTNG.
|
| FILTER_REQUEST | Filtro para solicitações de serviço. Informações |
---|
| - Este ID somente terá efeito ao acionado quando feito logout no aplicativo MNTNG.
|
| FILTER_WAREHOUSE | Filtro para locais de estoque (SB2) Informações |
---|
| - Este ID somente terá efeito ao acionado quando feito logout no aplicativo MNTNG.
|
| COMPANY_GROUP_IGNORE | Grupo de empresas que devem ser ignoradas pelo aplicativo Aviso |
---|
Para a utilização do MNT NG via Mingle este ID para filtrar filiais não é considerado tendo em vista que a autenticação e permissão de acesso é realizada via Api Totvs. Qualquer restrição de acesso deve ser realizada via configurador Protheus. |
| SEARCH_FIELD_SB1 | Nome do campo utilizado para pesquisa/busca de produto (insumo da ordem de serviço). |
|
ParamIXB[2] | obejct | ID | Conteúdo |
---|
CREATED_ORDER / CREATE_VALID_ORDER | Bloco de código |
---|
language | xml |
---|
title | Exemplo |
---|
linenumbers | true |
---|
collapse | true |
---|
| {
"startDate":"20180326 17:56",
"observation":"observação da ordem de serviço",
"inputs":[ |
|
|
"startDate":"20180326 17:56",
"observation":"observação da ordem de serviço",
"inputs":[
{
"sublot":"",
"location":"",
"task":"0",
"serialNumber":"",
"destiny":"A",
"code":"007",
"type":"P",
"warehouse":"01",
"date":"20180321 17:56",
"amount":1,
"isDone":true,
"unity":"PC",
"lot":"",
"note":"observação insumo"
}
],
"plan":"LOCAL",
"counter":[ datetime20170128 10:00value370
}
],
serviceCORG2"endDate20180326 17:56equipmentEMPILHADEIRA 002000000C"checklist":[
{ "date":"20180321 17:56",
" |
|
|
worker"1008"task0stepMOTOLE}
]
}FINISHED_ORDER / FINISH_VALID_ORDER
Bloco de código |
---|
title | Exemplo do conteúdo |
---|
linenumbers | true |
---|
collapse | true |
---|
|
{
"startDate2018032617:56,"observation":"observ finaliza"000000order"001008","json":"{\"startDate\":\"20180326 17:56\",\"observation\":\"teste stj\",\"inputs\":[{\"amount\":1,\"isDone\":true,\"unity\":\"PC\",\"task\":\"0\",\"destiny\":\"A\",\"code\":\"007\",\"type\":\"P\",\"warehouse\":\"01\",\"date\":\"20180321 17:56\",\"note\":\"teste observação insumo\"}],\"plan\":\"000000\",\"counter\":[{\"datetime\":\"20170128 10:00\",\"value\":370}],\"service\":\"CORG2\",\"endDate\":\"20180326 17:56\",\"equipment\":\"EMPILHADEIRA 002\",\"code\":\"001008\",\"type\":\"C\",\"checklist\":[{\"worker\":\"1008\",\"isDone\":true {
"datetime":"20170128 10:00",
"value":370
}
],
"service":"CORG2",
"endDate":"20180326 17:56",
"equipment":"EMPILHADEIRA 002",
"code":"000000",
"type":"C",
"checklist":[
{
"worker":"1008",
"isDone":true,
"task":"0",
"step":"MOTOLE"
}
]
} |
| FINISHED_ORDER / FINISH_VALID_ORDER / / COUNTER_VALID_FINISH / UPDATE_FINISH_ORDER | Bloco de código |
---|
language | xml |
---|
title | Exemplo |
---|
linenumbers | true |
---|
collapse | true |
---|
| {
"startDate":"20180326 17:55",
"observation":"444",
"plan":"000000",
"order":"001007",
"json":"{\"startDate\":\"20180326 17:55\",\"observation\":\"teste\",\"inputs\":[{\"amount\":1,\"isDone\":true,\"unity\":\"PC\",\"task\":\"0\",\" |
|
|
stepMOTOLE\"}]}",
"counter":[
{
"value":370,
"datetime":"20180326 18:03"
}
],
"hourCounter":"18:03",
"endDate":"20180326 17:56",
"fault":"01"
}COUNTER_VALID_FINISH | Bloco de código |
---|
title | Exemplo do conteúdo |
---|
collapse | true |
---|
|
{
"startDate":"20180326 17:55",
"observation":"444",
"plan":"000000",
"order":"001007",
"json":"{\"startDateA\",\"code\":\"005\",\"type\":\"P\",\"warehouse\":\"01\",\"date\":\"20180326 17:55\",\"note\":\"teste\"}],\"plan\":\"000000\",\"counter\":[{\"datetime\":\"20180104 08:05\",\"value\":1000}],\"service\":\"CORG2\",\"endDate\":\"20180326 17:55\",\" |
|
|
observationtesteinputs[{amount:1isDonetrue,unity\":PC\"task\"0\",\"destiny\":\"A\",\"code\":\"005\",\"type\":\"P\",\"warehouse\":\"01\",\"date\":\[]}",
"counter":[
{
"value":1001,
"datetime":"20180326 18:06"
}
],
"hourCounter":"18:06",
"endDate":"20180326 17:55 |
|
|
\\"note\\teste\}],\"plan\":\"000000\",\"counter\":[{\"datetime\":\"20180104 08:05\",\"value\":1000}],\"service\":\"CORG2\",\"endDate\":\"20180326 17:55\",\"equipment\":\"EMPGEN001\",\"code\":\"001007\",\"type\":\"C\",\"checklist\":[]}",
"counter":[ | CANCEL_VALID | Bloco de código |
---|
language | xml |
---|
title | Exemplo |
---|
linenumbers | true |
---|
collapse | true |
---|
| {
"message":"observação da ordem de serviço", //observação
"plan":"000000", //código do plano da ordem
"order":"001006" //código da ordem de serviço
} |
| UPDATE_VALID_ORDER | Bloco de código |
---|
language | xml |
---|
title | Exemplo |
---|
linenumbers | true |
---|
collapse | true |
---|
| {
"plan":"000000",
"code":"007822",
"counter":[
],
"type":"C",
"equipment":"100002",
"service":"COR1",
"observation":"",
"startDate":"20190708 09:00",
"endDate":"20190708 10:58",
"checklist":[
],
"inputs":[
{ |
|
|
value1001datetime20180326 18:06}
]hourCounter1806"endDate20180326 17:55fault
}CANCEL_VALID | Bloco de código |
---|
title | Exemplo do conteúdo |
---|
collapse | true |
---|
|
{
message"observação da ordem de serviço", //observação
plan000000//códigodoplanodaordem
order001006//códigodaordemdeserviço
}UPDATE_VALID_ORDER | Bloco de código |
---|
title | Exemplo do conteúdo |
---|
collapse | true |
---|
|
{
plan000000"code007822counter[
]"type":"C",
"equipment":"100002",
serviceCOR1"observation":"",
"startDate":"2019070809:00",
endDate20190708 10:58,"checklist":[
]"inputs":[
{
"code":"S001",
"task":"0",
"amount": |
|
|
31009:00",
"destiny":"A",
"warehouse":"01",
" |
|
|
isDonetrueunitywarehouseItem":"",
"isDone":false,
"unity":"LT",
"type":"P",
"note":"",
"lot":"",
"sublot":"",
"location":"",
|
|
|
"serialNumber":""
},
{
"code":"S001",
"task":"0",
"amount":1.33,
"date":"20190708 09:00",
"destiny":"A",
"warehouse":"01",
"warehouseRequest":"",
"warehouseItem":"",
"isDone":false,
"unity":"LT",
"type":"P",
"note":"",
"lot":"",
"sublot":"",
"location":"",
"serialNumber":""
},
{
"code":"000036",
"task":"0",
"amount":1.33,"serialNumber":""
},
{
"code":"000036",
"task":"0",
"amount":1.33,
"startDate":"20190708 09:38",
"endDate":"20190708 10:58",
"isDone":false,
"unity":"H",
"type":"M",
"percent":0,
"note":""
}
]
} |
|
|
Retorno: | O ponto de entrada é chamado em vários momentos dentro do fonte, na 2ª posição da estrutura do vetor é passado um ID que identifica qual é este momento. De acordo com o ID o retorno pode ser diferente, como citado na tabela abaixo: ID | Tipo | Descrição |
---|
CREATED_ORDER | null | Sem retorno. | CREATE_VALID_ORDER | string | Motivo quando a validação é negativa. Quando é positivo deve retornar vazio. | UPDATE_VALID_ORDER | string | Motivo quando a validação é negativa. Quando é positivo deve retornar vazio. | FINISHED_ORDER | null | Sem retorno. | FINISH_VALID_ORDER | string | Motivo quando a validação é negativa. Quando é positivo deve retornar vazio. | CANCEL_VALID | string | Motivo quando a validação é negativa. Quando é positivo deve retornar vazio. | CREATED_PLANNED_INPUT | null | Sem retorno. | COUNTER_VALID_FINISH | string | Motivo quando a validação é negativa. Quando é positivo deve retornar vazio. | FILTER_PRODUCT | string | Condição SQL que será inclusa na cláusula WHERE para tabela Produtos - SB1. | FILTER_EQUIPMENT | string | Condição SQL que será inclusa na cláusula WHERE para tabela Bens - ST9/Localizações - TAF. | FILTER_SERVICE | string | Condição SQL que será inclusa na cláusula WHERE para tabela Serviços - ST4. | FILTER_COSTCENTER | string | Condição SQL que será inclusa na cláusula WHERE para tabela Centro de Custos - CTT. | FILTER_FAMILY | string | Condição SQL que será inclusa na cláusula WHERE para tabela Família de Bens - ST6. | FILTER_TOOL | string | Condição SQL que será inclusa na cláusula WHERE para tabela Ferramentas - SH4. | FILTER_AREA | string | Condição SQL que será inclusa na cláusula WHERE para tabela Área - STD. | FILTER_THIRDPART | string | Condição SQL que será inclusa na cláusula WHERE para tabela Terceiros - SA2. | DESCRIPTION_LOCALIZATION | string | String que será utilizada para localização do bem. | FILTER_ORDER | string | Condição SQL que será inclusa na cláusula WHERE para tabela Ordens de Serviço - STJ. | FILTER_REQUEST | string | Condição SQL que será inclusa na cláusula WHERE para tabela Solicitações de Serviço - TQB. | FILTER_WAREHOUSE | string | Condição SQL que será inclusa na cláusula WHERE para tabela Saldos físicos - SB2 | FILTER_EXECUTOR | string | Condição SQL que será inclusa na cláusula WHERE e filtrar executantes de S.S. com o usuário logado. | UPDATE_FINISH_ORDER | object | JSON contendo informações da finalização da O.S. | COMPANY_GROUP_REJECT | array | Array com os grupos de empresas que devem ser ignorados pelo app Aviso |
---|
Para a utilização do MNT NG via Mingle este ID para filtrar filiais não é considerado tendo em vista que a autenticação e permissão de acesso é realizada via Api Totvs. Qualquer restrição de acesso deve ser realizada via configurador Protheus. |
| SEARCH_FIELD_SB1 | STRING | Nome do campo utilizado para realizar a pesquisa/busca de produto (insumo da ordem de serviço.) |
|
Bloco de código |
---|
language | sql |
---|
title | Exemplo de ponto de entrada mntng.prw |
---|
linenumbers | true |
---|
collapse | true |
---|
|
#include "PROTHEUS.ch"
User Function MNTNG()
Local cId := PARAMIXB[1] //Indica o momento da chamada do PE
Local oWS
Local oParser
Local aArea
Local aAreaSTJ
Local nInput := 0
Local aDate
Local cType
Local lIsDone
Local cTask
Local cCode
Local nAmount
Local cOrder
Local cPlan
Local aDate
Local lOk
Local cAddress := ""
Local cCodBem := ""
If cId != 'COMPANY_GROUP_IGNORE'
oWS := PARAMIXB[2] //Objeto com referência ao webservice
EndIf
If cId == "CREATE_VALID_ORDER" .OR. cId == "UPDATE_VALID_ORDER" //valida inclusão e alteração da ordem
//Bloco a seguir realiza validações dos insumos
|
...
If FWJsonDeserialize(oWS:GetContent(),@oParser) //Parse da string no formato Json
If |
...
AttIsMemberOf( oParser, "inputs" ) .And. Len( oParser:inputs ) > 0
|
...
...
cOrder := IIf( AttIsMemberOf( oParser, 'code' ), |
...
...
...
...
...
Retorno:
O ponto de entrada é chamado em vários momentos dentro do fonte, na 2ª posição da estrutura do vetor é passado um ID que identifica qual é este momento. De acordo com o ID o retorno pode ser diferente, como citado na tabela abaixo:
ID | MOMENTO DE EXECUÇÃO DO PONTO DE ENTRADA | RETORNO |
---|
CREATED_ORDER | Após a inclusão de uma ordem de serviço | Nulo |
CREATE_VALID_ORDER | Antes da inclusão de uma ordem de serviço | String (retorna string com motivo quando a validação é negativa. Quando é positivo deve retornar vazio) |
UPDATE_VALID_ORDER | Antes da alteração de uma ordem de serviço | String (retorna string com motivo quando a validação é negativa. Quando é positivo deve retornar vazio) |
FINISHED_ORDER | Após a finalização de uma ordem de serviço | Nulo |
FINISH_VALID_ORDER | Validação antes da finalização de uma ordem de serviço | String (retorna string com motivo quando a validação é negativa. Quando é positivo deve retornar vazio) |
CANCEL_VALID | Validação antes do cancelamento de uma ordem de serviço | String (retorna string com motivo quando a validação é negativa. Quando é positivo deve retornar vazio) |
CREATED_PLANNED_INPUT | Após incluir um insumo previsto | Nulo |
COUNTER_VALID_FINISH | Validação de contador na finalização | String (retorna string com motivo quando a validação é negativa. Quando é positivo deve retornar vazio) |
FILTER_PRODUCT | Filtro para produtos | String que será adicionada à cláusura 'where' para produtos (SB1). |
FILTER_EQUIPMENT | Filtro para bens | String que será adicionada à cláusura 'where' para bens (ST9). |
FILTER_SERVICE | Filtro para serviços | String que será adicionada à cláusura 'where' para serviços (ST4). |
FILTER_COSTCENTER | Filtro para centros de custo | String que será adicionada à cláusura 'where' para centros de custo (CTT). |
FILTER_FAMILY | Filtro para famílias de bens | String que será adicionada à cláusura 'where' para famílias de bens (ST6). |
FILTER_TOOL | Filtro para ferramentas | String que será adicionada à cláusura 'where' para ferramentas (SH4). |
FILTER_AREA | Filtro para áreas da manutenção | String que será adicionada à cláusura 'where' para área (STD). |
FILTER_THIRDPART | Filtro para terceiros | String que será adicionada à cláusura 'where' terceiros (SA2). |
...
...
:= IIf( AttIsMemberOf( oParser, 'plan' ), oParser:plan, '000000' )
//Bloco abaixo realiza validações nos insumos
For nInput := 1 To Len( oParser:inputs )
oInput := oParser:inputs[ nInput ]
cType := IIf( AttIsMemberOf( oInput , 'type' ), oInput:type, '' )
lIsDone := IIf( AttIsMemberOf( oInput , 'isDone'), oInput:isDone, .F. )
//Neste exemplo haverá validações somente para produtos realizados
If cType != "P" .Or. !lIsDone
Loop
EndIf
aDate := { dDatabase, '08:00' }
lOk := .T.
If AttIsMemberOf( oInput, "startDate" )
aDate := StrTokArr( oInput:startDate, " " )
ElseIf AttIsMemberOf( oInput, "date" )
aDate := StrTokArr( oInput:date, " " )
EndIf
aDate := { STOD( aDate[1] ), aDate[2] }
//Neste exemplo haverá validações somente quando informar data anterior a data atual
If aDate[1] >= dDatabase
Loop
|
...
...
...
...
...
...
...
...
...
...
...
...
cCode := IIf( AttIsMemberOf( oInput |
...
...
...
...
...
...
...
...
...
...
...
...
:= IIf( AttIsMemberOf( oInput , |
...
'amount'), oInput:amount, 0 )
If |
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
/*Trecho abaixo verifica se o insumo já está gravado no banco
|
...
...
...
...
...
...
...
...
caso exista não há necessidade de |
...
...
...
...
...
...
...
...
...
...
...
...
If !dbSeek( xFilial('STL') + PADR( cOrder, Len( STL->TL_ORDEM ) )+ ;
|
...
...
...
...
...
...
...
+ PADR( cTask, Len( STL->TL_TAREFA ) ) + ;
|
...
...
...
...
...
...
...
...
Len( STL->TL_CODIGO ) ) )
|
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
While !STL->( Eof() ) .AND. STL->TL_FILIAL + STL->TL_ORDEM + STL->TL_PLANO +;
|
...
...
STL->TL_TAREFA + STL->TL_TIPOREG + STL->TL_CODIGO == xFilial('STL') + PADR( cOrder, Len( STL->TL_ORDEM ) )+ |
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Len( STL->TL_PLANO ) ) + PADR( cTask, Len( STL->TL_TAREFA ) ) + ;
|
...
...
...
...
+ PADR( cCode, Len( STL->TL_CODIGO ) )
|
...
...
...
If Val( STL->TL_SEQRELA ) > 0 ; //verifica se |
...
...
.And. nAmount == STL->TL_QUANTID //comparação de quantidade
|
...
...
...
...
...
...
...
...
...
...
...
lOk := .T. //já está gravado |
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
permitido realizar insumos do tipo produto com a data retroativa. ' + ;
|
...
...
...
...
...
...
...
...
...
...
...
'Verifique o insumo/produto ' + cCode + ' data ' + Dtoc( aDate[1] )
|
...
...
...
...
...
...
...
...
...
...
...
...
EndIf
EndIf
ElseIf cId == "CANCEL_VALID" //valida cancelamento da ordem
If FWJsonDeserialize(oWS:GetContent(),@oParser) //Parse da string no formato Json
If Empty( |
...
oParser:message )//verifica campo observação foi passado vazio
Return "A observação do cancelamento é obrigatória."
EndIf
EndIf
|
...
...
...
ElseIf cId == "FINISH_VALID_ORDER"
If FWJsonDeserialize(oWS:GetContent(), @oParser)
If Empty( oParser:observation ) //verifica campo observação foi passado vazio
Return "Campo observação deve ser informado."
|
...
...
...
...
...
...
...
...
...
...
EndIf
EndIf
ElseIf cId == "FINISHED_ORDER"
|
...
If FWJsonDeserialize(oWS:GetContent(), @oParser)
|
...
...
...
...
...
aArea := GetArea()
aAreaSTJ := STJ->(GetArea())
|
...
...
...
...
...
...
dbSelectArea("STJ")
dbSetOrder(1)
If dbSeek(xFilial("STJ") + |
...
oParser:order + oParser:plan)
|
...
Reclock("STJ", .F.)
STJ->TJ_DTPRINI := STJ->TJ_DTMRINI
|
...
STJ->TJ_HOPRINI := STJ->TJ_HOMRINI
STJ->TJ_DTPRFIM := STJ->TJ_DTMRFIM
|
...
STJ->TJ_HOPRFIM := STJ->TJ_HOMRFIM
|
...
...
...
RestArea(aAreaSTJ)
RestArea(aArea)
Endif
|
...
ElseIf cId == "FILTER_PRODUCT" //adiciona filtro para busca de produtos
|
...
Return " AND B1_GRUPO = '97'"
ElseIf cId == "DESCRIPTION_LOCALIZATION" // Altera descrição de localização do |
...
...
:= PARAMIXB[3]
dbSelectArea("ST9")
|
...
...
...
...
...
...
...
...
...
...
...
...
...
cCodBem ) .And. !Empty( ST9->T9_CLIENTE + ST9->T9_LOJACLI )
cAddress := Posicione("SA1",1,xFilial("SA1") |
...
+ ST9->T9_CLIENTE + ST9->T9_LOJACLI,"SA1->A1_END")
|
...
EndIf
Return Alltrim( cAddress )
ElseIf cId == 'FILTER_ORDER'
Return ' AND STJ.TJ_DTMPINI = ' + ValToSQL( cToD( '24/11/2020' ) )
ElseIf cId == 'FILTER_REQUEST'
|
...
...
Return ' AND TQB.TQB_DTABER = ' + ValToSQL( cToD( '24/11/2020' ) |
...
)
ElseIf cId == 'UPDATE_FINISH_ORDER'
|
...
...
...
...
AttIsMemberOf( oWS, 'counter' )
|
...
...
...
...
...
...
...
...
If Len( oWS:counter ) > 0
|
...
...
...
...
...
...
...
...
...
oWS:counter[1]:value := 3334
|
...
...
...
...
...
...
...
...
...
...
...
EndIf
If Len( oWS:counter ) > 1
|
...
...
...
...
...
...
...
oWS:counter[2]:value := 3334
|
...
...
...
...
counter[2]:time := '10:10'
|
...
...
...
...
oWS, 'observation' )
oWS:observation := 'ALTERADO PELO |
...
...
...
Bloco de código |
---|
language | sql |
---|
title | Exemplo do id FILTER_WAREHOUSE |
---|
collapse | true |
---|
|
#include "PROTHEUS.ch"
User Function MNTNG()
Local cId := PARAMIXB[1] //Indica o momento da chamada do PE
If cId == 'FILTER_WAREHOUSE'
Return " AND B2_LOCAL = '01' "
EndIf
Return |
Bloco de código |
---|
language | sql |
---|
title | Exemplo do id COMPANY_GROUP_IGNORE |
---|
collapse | true |
---|
|
#include "PROTHEUS.ch"
User Function MNTNG()
Local cId := PARAMIXB[1] //Indica o momento da chamada do PE
If cId == 'COMPANY_GROUP_IGNORE'
Return {"T1", "T2"} // Indica os grupos que devem ser ignorados pelo app
EndIf
Return |
Bloco de código |
---|
language | sql |
---|
title | Exemplo do id FILTER_EXECUTOR |
---|
collapse | true |
---|
|
#include "PROTHEUS.ch"
User Function MNTNG()
Local cId := PARAMIXB[1] //Indica o momento da chamada do PE
Local cEmail
If cId == 'FILTER_EXECUTOR'
cEmail := PARAMIXB[3] //Indica o email do usuário logado
Return " AND |
...
TQ4_EMAIL1 = " + ValtoSql( cEmail )
EndIf
Return |
Bloco de código |
---|
language | sql |
---|
title | Exemplo do id SEARCH_FIELD_SB1 |
---|
collapse | true |
---|
|
#include "PROTHEUS.ch"
User Function |
...
...
...
:= PARAMIXB[1] //Indica o momento da chamada do PE
|
...
...
'SEARCH_FIELD_SB1'
Return "B1_FAMILY" // indica o nome do campo para pesquisa de produto
|
...
...