Páginas filhas
  • 2.1 Formulário

Como criar um formulário diretamente no ECM

  1. Criar um arquivo HTML com os campos com o mesmo nome utilizado no Microsiga Protheus
  2. Adicionar o arquivo HTML como um Novo Fichário nos Documentos do ECM e verificar o Código que foi gerado. Este código será utilizado na criação do Processo futuramente

 

*Para maiores informações sobre personalizações do formulário no ECM, consulte a documentação do ECM. O Objetivo desta documentação é citar os cuidados que devemos ter ao construir um formulário para a integração com o Microsiga Protheus.

Exemplo de formulário

<HTML>

<HEAD>

  <TITLE>Exemplo - Cliente</TITLE>

  <LINK REL=STYLESHEET HREF="/webdesk203/wdk/global.css">

</HEAD>

<BODY scroll=yes>

<span class="NumSecao">

<strong>&nbsp;Cadastro</strong></span>

<HR>

<br>

<form>

<table>

  <tr>

    <td align="right" width="150" class="Labels"><b>Código:</b></td>

    <td class="Normal"><strong><input type="text" size="6" name="A1_COD"></strong></td>

  </tr>

  <tr>

    <td align="right" width="150" class="Labels"><b>Loja:</b></td>

    <td class="Normal"><strong><input type="text" size="2" name="A1_LOJA"></strong></td>

  </tr>

  <tr>

    <td align="right" width="150" class="Labels"><b>Física/Jurídica:</b></td>

    <td class="Normal"><strong>

        <select name="A1_PESSOA">

            <option value="F">Física</option>

            <option value="J">Jurídica</option>

        </select>

       </strong></td>

  </tr>

  <tr>

    <td align="right" width="150" class="Labels"><b>Nome:</b></td>

    <td class="Normal"><strong><input type="text" size="40" name="A1_NOME"></strong></td>

  </tr>

  <tr>

    <td align="right" width="150" class="Labels"><b>Nome Fantasia:</b></td>

    <td class="Normal"><strong><input type="text" size="20" name="A1_NREDUZ"></strong></td>

  </tr>

  <tr>

    <td align="right" width="150" class="Labels"><b>Endereço:</b></td>

    <td class="Normal"><strong><input type="text" size="40" name="A1_END"></strong></td>

  </tr>

  <tr>

    <td align="right" width="150" class="Labels"><b>Tipo:</b></td>

    <td class="Normal"><strong>

        <select name="A1_TIPO">

            <option value="F">Cons. Final</option>

            <option value="L">Produtor Rural</option>

            <option value="R">Revendedor</option>

            <option value="S">Solidario</option>

            <option value="X">Exportacao</option>

        </select>

    </strong></td>

  </tr>

  <tr>

    <td align="right" width="150" class="Labels"><b>Município:</b></td>

    <td class="Normal"><strong><input type="text" size="60" name="A1_MUN"></strong></td>

  </tr>

  <tr>

    <td align="right" width="150" class="Labels"><b>Estado:</b></td>

    <td class="Normal"><strong><input type="text" size="2" name="A1_EST"></strong></td>

  </tr>

 </table>

</form>

</BODY>

</HTML>

Construindo formulários para rotinas automáticas

  1. Configurar a integração para GED entre o Protheus e o ECM no Configurador na opção Ambiente > Totvs ECM > Wizard do GED
  2. Utilizar a função FWECMPutCard para enviar o formulário para o ECM conforme o exemplo abaixo (o fichário sera criado na pasta ERP_MP \ <empresas> \ MP_CARDS no ECM):

Exemplo de código-fonte

#include "totvs.ch"

User Function FormCliente()

Local cProcessId := "CLIENTE" // se informado atualiza o formulário relacionado ao processo senão cria um novo

Local cDescription := "Formulário do cadastro de cliente"

Local cCardDescription := ""

Local aHTML := Array(1,2) // arquivos do formulario

Local aEvents := Array(1,2) // eventos que serão customizados para o formulario

Local nFormId

Local aError

 

aHTML[1][1] := "cliente.html" // nome do arquivo

aHTML[1][2] := '<HTML>'+; // conteúdo do arquivo

'<HEAD>'+;

'  <TITLE>Exemplo - Cliente</TITLE>'+;

'  <LINK REL=STYLESHEET HREF="/webdesk203/wdk/global.css">'+;

'</HEAD>'+;

'<BODY scroll=yes>'+;

'<span class="NumSecao">'+;

'<strong>&nbsp;Cadastro</strong></span>'+;

'<HR>'+;

'<br>'+;

'<form>'+;

'<table>'+;

'  <tr> '+;

'    <td align="right" width="150" class="Labels"><b>Código:</b></td>'+;

'    <td class="Normal"><strong><input type="text" size="6" name="A1_COD"></strong></td>'+;

'  </tr>'+;

'  <tr> '+;

'    <td align="right" width="150" class="Labels"><b>Loja:</b></td>'+;

'    <td class="Normal"><strong><input type="text" size="2" name="A1_LOJA"></strong></td>'+;

'  </tr>'+;

'  <tr> '+;

'    <td align="right" width="150" class="Labels"><b>Física/Jurídica:</b></td>'+;

'    <td class="Normal"><strong>'+;

'        <select name="A1_PESSOA">'+;

'            <option value="F">Física</option>'+;

'            <option value="J">Jurídica</option>'+;

'        </select>'+;

'    </strong></td>'+;

'  </tr>'+;

'  <tr> '+;

'    <td align="right" width="150" class="Labels"><b>Nome:</b></td>'+;

'    <td class="Normal"><strong><input type="text" size="40" name="A1_NOME"></strong></td>'+;

'  </tr>'+;

'  <tr> '+;

'    <td align="right" width="150" class="Labels"><b>Nome Fantasia:</b></td>'+;

'    <td class="Normal"><strong><input type="text" size="20" name="A1_NREDUZ"></strong></td>'+;

'  </tr>'+;

'  <tr> '+;

'    <td align="right" width="150" class="Labels"><b>Endereço:</b></td>'+;

'    <td class="Normal"><strong><input type="text" size="40" name="A1_END"></strong></td>'+;

'  </tr>'+;

'  <tr> '+;

'    <td align="right" width="150" class="Labels"><b>Tipo:</b></td>'+;

'    <td class="Normal"><strong>'+;

'        <select name="A1_TIPO">'+;

'            <option value="F">Cons. Final</option>'+;

'            <option value="L">Produtor Rural</option>'+;

'            <option value="R">Revendedor</option>'+;

'            <option value="S">Solidario</option>'+;

'            <option value="X">Exportacao</option>'+;

'            </select>'+;

'       </strong></td>'+;

'  </tr>'+;

'  <tr> '+;

'    <td align="right" width="150" class="Labels"><b>Município:</b></td>'+;

'    <td class="Normal"><strong><input type="text" size="60" name="A1_MUN"></strong></td>'+;

'  </tr>'+;

'  <tr> '+;

'    <td align="right" width="150" class="Labels"><b>Estado:</b></td>'+;

'    <td class="Normal"><strong><input type="text" size="2" name="A1_EST"></strong></td>'+;

'  </tr>'+;

' </table>'+;

'</form>'+;

'</BODY>'+;

'</HTML>'

 

aEvents[1][1] := "setEnable" // nome do evento

aEvents[1][2] := 'function setEnable() {'+; // script na linguagem JavaScript

'log.info("Teste de chamada de função");'+;

'}'

 

nFormId := FWECMPutCard(cProcessId,cDescription,cCardDescription,aHTML,aEvents) // retorna o codigo do fichário no ECM

If FWWFIsError()

   aError := FWWFGetError()

   MsgStop(aError[2])

Else

   MsgInfo("Fichário atualizado com sucesso")

EndIf

Return

Construindo formulários para rotinas MVC

  1. Configurar a integração para GED entre o Protheus e o ECM no Configurador na opção Ambiente > Totvs ECM > Wizard do GED
  2. Utilizar o método GetXMLLayout do View para gerar o HTML
    1. Somente os componentes Fields e Grid serão convertidos para HTML
    2. Somente os formulários do tipo CRUD e Master/Detail podem ser exportados para o ECM, uma vez que não é possível simular todos os eventos dos demais tipos de formulários do Microsiga Protheus.
    3. Este método é apenas uma demonstração de como é o mecanismo no Microsiga Protheus. Os formulários MVC possuem uma forma automática de gerar um processo com formulário no ECM nas 'Ações Relacionadas' da rotina.

#include "totvs.ch"

User Function FormView()

Local oView := FWLoadView("MATA030_MVC")

Local cProcessId := "CLIENTE" // se informado atualiza o formulário relacionado ao processo senão cria um novo

Local cDescription := "Formulário do cadastro de cliente"

Local cCardDescription := ""

Local aEvents := Array(1,2) // eventos que serão customizados para o formulario

Local nFormId

Local aError

Local aFiles

Local lHtm := .T.

Local lEmbedded := .F.

Local lDocType := .T.

 

oView:setOperation(3)

 

aFiles := oView:GetXMLLayOut(lHtm,lEmbedded,lDocType)

 

aEvents[1][1] := "setEnable" // nome do evento

aEvents[1][2] := 'function setEnable() {'+; // script na linguagem JavaScript

'log.info("Teste de chamada de função");'+;

'}'

 

nFormId := FWECMPutCard(cProcessId,cDescription,cCardDescription,aFiles,aEvents) // retorna o codigo do fichário no ECM

If FWWFIsError()

   aError := FWWFGetError()

   MsgStop(aError[2])

Else

   MsgInfo("Fichário atualizado com sucesso")

EndIf

Return

Usando MVC nos formulários Modelo 1

Para rotinas automáticas do tipo Modelo 1 (CRUD) que usam somente campos do Dicionário de Dados pode-se utilizar o MVC para simplificar o processo de customização do formulário, conforme abaixo:

#include "totvs.ch"

User Function FormTable()

Local cTable := "SA1"

Local cProcessId := "MATA030"

Local cDescription := "Cliente (rotina automatica)"

Local oView

Local aEvents := Array(1,2) // eventos que serão customizados para o formulario

Local nFormId

Local aError

Local aFiles

Local lHtm := .T.

Local lEmbedded := .F.

Local lDocType := .T.

 

FwAliasMVC(cTable,cProcessId,cDescription)

 

oView := FwLoadView("PROTHEUSMVC")

oView:setOperation(3)

 

aFiles := oView:GetXMLLayOut(lHtm,lEmbedded,lDocType)

aEvents[1][1] := "setEnable" // nome do evento

aEvents[1][2] := 'function setEnable() {'+; // script na linguagem JavaScript

'log.info("Teste de chamada de função");'+;

'}'

 

nFormId := FWECMPutCard(cProcessId,cDescription,cCardDescription,aFiles,aEvents) // retorna o codigo do fichário no ECM

If FWWFIsError()

   aError := FWWFGetError()

   MsgStop(aError[2])

Else

   MsgInfo("Fichário atualizado com sucesso")

EndIf

Return

 

 

 



 

  • Sem rótulos