Como criar um formulário diretamente no ECM
- Criar um arquivo HTML com os campos com o mesmo nome utilizado no Microsiga Protheus
- 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> 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
- Configurar a integração para GED entre o Protheus e o ECM no Configurador na opção Ambiente > Totvs ECM > Wizard do GED
- 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> 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
- Configurar a integração para GED entre o Protheus e o ECM no Configurador na opção Ambiente > Totvs ECM > Wizard do GED
- Utilizar o método GetXMLLayout do View para gerar o HTML
- Somente os componentes Fields e Grid serão convertidos para HTML
- 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.
- 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.
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")
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