Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmento - TOTVS Backoffice Linha Protheus - ADVPL - Função Modelo2

time.png Tempo aproximado para leitura: 00:01:00 min

Dúvida

Há algum exemplo referente a função Modelo2?

Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - ADVPL - Todas as versões

Solução
A função Modelo2 exibe formulário para cadastro contendo: uma enchoice, uma getdados e uma área que pode ser utilizada para apresentar totalizadores ou outros dados mais relevantes.

Exemplo

#include "protheus.ch"

#INCLUDE "rwmake.ch"

User Function Md2()

    Local nOpcx:=3
  Local nG := 0
  Local nX := 0
  Local nInd := 0
  Local nUsado := 0
  Local aCamposUsados:= {}
  Local aCampos:= {}
  Local cSX3Cache
  Local cAliasGD := "ZA1"

    Private aHeader := {}
  Private aCols := {}

//+-----------------------------------------------+
//¦ Montando aHeader para a Getdados ¦
//+-----------------------------------------------+
  aCampos := FWSX3Util():GetAllFields(cAliasGD)
  aCamposUsados := {}
  For nG:=1 to len(aCampos)
// Obtêm as informações dos campos usados no dicionário SX3
      cSX3Cache := getsx3cache(aCampos[nG],"X3_USADO")
      If X3USO(cSX3Cache)
          AADD(aCamposUsados, aCampos[nG])
          aStruct:=FWSX3Util():GetFieldStruct(aCampos[nG])
          Aadd(aHeader,{AllTrim(X3Titulo(aCampos[nG])),aCampos[nG],X3Picture(aCampos[nG]),aStruct[3],aStruct[4], "", "", aStruct[2], "", ""})
      EndIf
  next
  nUsado:=Len(aCamposUsados)

//+-----------------------------------------------+
//¦ Montando aCols para a GetDados ¦
//+-----------------------------------------------+
  If nOpcx==3 // Caso seja inclusão
      aCols:={Array(nUsado+1)}
      aCols[1,nUsado+1]:=.F.
      For nX:=1 to nUsado
          aCols[1,nX]:=CriaVar(aHeader[nX,2])
      Next
  Else
      aCols:={}
      dbSelectArea("ZA1")
      dbSetOrder(1)
      dbSeek(xFilial())
      While !eof()
          AADD(aCols,Array(nUsado+1))
          For nX:=1 to nUsado
              aCols[Len(aCols),nX]:=FieldGet(FieldPos(aHeader[nX,2]))
          Next
          aCols[Len(aCols),nUsado+1]:=.F.
          dbSkip()
      End
  Endif
//+----------------------------------------------+
//¦ Variaveis do Cabecalho do Modelo 2 ¦
//+----------------------------------------------+
  cCliente:=Space(6)
  cLoja :=Space(2)
  dData :=Date()

//+----------------------------------------------+
//¦ Variaveis do Rodape do Modelo 2
//+----------------------------------------------+
  nLinGetD:=0
//+----------------------------------------------+
//¦ Titulo da Janela ¦
//+----------------------------------------------+
  cTitulo:="TESTE DE MODELO2"
//+----------------------------------------------+
//¦ Array com descricao dos campos do Cabecalho ¦
//+----------------------------------------------+
  aC:={}
  #IFDEF WINDOWS
      AADD(aC,{"cCliente" ,{15,10} ,"Cod. do Cliente","@!",'ExecBlock("MD2VLCLI",.F.,.F.)',"SA1",})
      AADD(aC,{"cLoja" ,{15,200},"Loja","@!",,,})
      AADD(aC,{"dData" ,{27,10} ,"Data de Emissao",,,,})
  #ELSE
      AADD(aC,{"cCliente" ,{6,5} ,"Cod. do Cliente","@!",'ExecBlock("MD2VLCLI",.F.,.F.)',"SA1",})
      AADD(aC,{"cLoja" ,{6,40},"Loja","@!",,,})
      AADD(aC,{"dData" ,{7,5} ,"Data de Emissao",,,,})
  #ENDIF
//+-------------------------------------------------+
//¦ Array com descricao dos campos do Rodape ¦
//+-------------------------------------------------+
  aR:={}
  #IFDEF WINDOWS
      AADD(aR,{"nLinGetD" ,{120,10},"Linha na GetDados", "@E 999",,,.F.})
  #ELSE
      AADD(aR,{"nLinGetD" ,{19,05},"Linha na GetDados","@E 999",,,.F.})
  #ENDIF

//+------------------------------------------------+

//¦ Array com coordenadas da GetDados no modelo2 ¦
//+------------------------------------------------+
  #IFDEF WINDOWS
      aCGD:={44,5,118,315}
  #ELSE
      aCGD:={10,04,15,73}
  #ENDIF

//+----------------------------------------------+
//¦ Validacoes na GetDados da Modelo 2 ¦
//+----------------------------------------------+

    cLinhaOk := "ExecBlock('Md2LinOk',.f.,.f.)"
  cTudoOk := "ExecBlock('Md2TudOk',.f.,.f.)"

//+----------------------------------------------+
//¦ Chamada da Modelo2 ¦
//+----------------------------------------------+

// lRet = .t. se confirmou
// lRet = .f. se cancelou
  lRet:= Modelo2(cTitulo,aC,aR,aCGD,nOpcx,cLinhaOk,cTudoOk, , , ,999)
  If lRet

//Inclui os Registros na tabela SZF
      For nInd := 1 to len( aCols )
          If !(aCols[nInd][len(aHeader)+1]) //não foi deletado
              RecLock("ZA1",.t.)
              Replace ZA1->ZA1_FILIAL with xFilial('SZF') , ;
                  ZA1->ZA1_MUSICA with aCols[nInd][aScan( aHeader, { |x| x[2]="ZA1_MUSICA" } )] , ;
                  ZA1->ZA1_TITULO with aCols[nInd][aScan( aHeader, { |x| x[2]="ZA1_TITULO" } )] , ;//cCCustoMO , ;
                  ZA1->ZA1_DATA with aCols[nInd][aScan( aHeader, { |x| x[2]="ZA1_DATA" } )] , ;
                  ZA1->ZA1_GENERO with aCols[nInd][aScan( aHeader, { |x| x[2]="ZA1_GENERO" } )]
              ZA1->(MsUnlock())
          EndIf
      Next
  EndIf
Return lRet
User function Md2LinOk()
//Msginfo("Validando a linha")
Return .t.

User
function Md2TudOk()
//Msginfo("Validando o Formulário")
Return .t.

User function Md2valid()
//Msginfo("Validando")
Return .t.

User function MD2VLCLI()
//Msginfo("Validando")
Return .t.

 

Saiba Mais
Modelo2

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _