Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
languagec#
themeMidnight
titleRetorno dos Opcionais
linenumberstrue
collapsetrue
{
   "id": "DETAILOPC",
   "modeltype": "GRID",
   "optional": 1,
   "struct": [
       {
            "id": "MATRICULA",
            "order": 1
       },
       {
            "id": "RESULT",
            "order": 2
       }
   ],
   "items": [
       {
            "id": 1,
            "deleted": 0,
            "fields": [
                {
                    "id": "MATRICULA",
                    "value": "00010001000152008"
                },
                {
                    "id": "RESULT",
                    "value": "[{\"product\":\"9896\",\"version\":\"001\",\"response\":{\"success\":true,\"message\":\"\"}},{\"product\":\"9897\",\"version\":\"001\",\"response\":                       					\"success\":true,\"message\":\"\"}}]"
                }
            ]
       },
       {
            "id": 2,
            "deleted": 0,
            "fields": [
                {
                    "id": "MATRICULA",
                    "value": "00010001000152016"
                },
                {
                    "id": "RESULT",
                    "value": "[{\"product\":\"9896\",\"version\":\"001\",\"response\":{\"success\":true,\"message\":\"\"}},{\"product\":\"9897\",\"version\":\"001\",\"response\":{\"success\":true,\"message\":\"\"}}]"
               }
           ]
       }
    ]
}


04. DEMAIS INFORMAÇÕES

...

Foram desenvolvidos dois pontos de entrada

...

que permitem definir regras para determinar se um opcional deve ou não ser gravado, em complemento ao parâmetro MV_PLCAROP.

...

Funcionamento Geral

  • Ambos os pontos de entrada retornam a mesma estrutura.
  • A diferença entre eles está no tipo de beneficiário:
  • PLOPCPJ → executado quando o beneficiário é Pessoa Jurídica (PJ).
  • PLOPCPF → executado quando o beneficiário é Pessoa Física (PF).

Esses pontos podem conter a mesma regra ou regras distintas, mas o objetivo final é sempre o mesmo: permitir ou não a gravação do opcional em processamento.

Momento de Execução

  • Tanto o PLOPCPJ quanto o PLOPCPF são executados no momento da gravação dos opcionais

...

  • .
  • O retorno do ponto de entrada define se o opcional em questão deve ou não ser gravado, de acordo com a regra implementada.

Exemplo de Execução

Se houver previsão de gravação de dois opcionais, por exemplo 0001 e 0002:

  1. Antes de gravar o opcional 0001, o ponto de entrada

...

  1. é executado.
  2. Em seguida, antes de gravar

...

  1. o opcional 0002, o ponto de entrada é executado novamente.

Ou seja, o processo é repetido para cada opcional individualmente.

Estrutura de Entrada

Os pontos de entrada recebem como parâmetro um objeto JSON com os seguintes atributos:

AtributoDescrição
beneficiaryRegistrationMatrícula do beneficiário em que o opcional será gravado.
entityType

Tipo de entidade: PJ (Pessoa Jurídica) ou PF (Pessoa Física).

healthPlanCodeCódigo do opcional (produto) que está sendo processado no momento.
healthPlanVersionCódigo da versão do opcional (produto) que está sendo processado.

Bloco de código
languagedelphi
themeMidnight
titleExemplo de Utilização
linenumberstrue
#Include 'Totvs.ch'   

User Function PLOPCPJ()

	Local oJRet     := JsonObject():new()
	Local oModel    := FWModelActive()
	Local oMdPrpGen := oModel:getmodel("DETAILPRPGEN")
	Local aSveLines := FWSaveRows()
	Local nI        := 0

	aHeader := oMdPrpGen:GetOldData()

	lExMatric  := aScan(aHeader[1], { |x| x[2] == "matriculaBen" }) > 0
	lExSalario := aScan(aHeader[1], { |x| x[2] == "salario" }) > 0
	lExProduto := aScan(aHeader[1], { |x| x[2] == "produto" }) > 0
	lExNome    := aScan(aHeader[1], { |x| x[2] == "nome" }) > 0

	For nI := 1 To 	oMdPrpGen:Length()
		oMdPrpGen:GoLine(nI)

		If lExMatric
			cBnMatric := oMdPrpGen:GetValue("matriculaBen")
		EndIf
		 
		If lExSalario
			cSalario := oMdPrpGen:GetValue("salario")
		EndIf

		If lExProduto
			cproduto := oMdPrpGen:GetValue("produto")
		EndIf

		If lExNome
			cnome := oMdPrpGen:GetValue("nome")
		EndIf
	Next

	FWRestRows( aSveLines )
	
	oJRet["success"] := .T.
	oJRet["message"] := ""
	
return oJRet

05. ASSUNTOS RELACIONADOS

...