*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.
<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>
#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
#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
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