Árvore de páginas

Cómo crear un formulario directamente en ECM

  1. Crear un archivo HTML con los campos con el mismo nombre utilizado en Microsiga Protheus
  2. Agregar el archivo HTML como un Nuevo Fichero en los Documentos de ECM y verificar el Código que se generó. Este código se utilizará en la creación del Processo en el futuro

 

*Para más información sobre personalizaciones del formulario en ECM, consulte la documentación de ECM. El objetivo de esta documentación es citar los cuidados que se deben tener para crear un formulario para la integración con Microsiga Protheus.

Ejemplo de formulario

<HTML>

<HEAD>

  <TITLE>Ejemplo - Cliente</TITLE>

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

</HEAD>

<BODY scroll=yes>

<span class="NumSecao">

<strong> Registro</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>Tienda:</b></td>

    <td class="Normal"><strong><input type="text" size="2" name="A1_TIENDA"></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_PERSONA">

            <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>Nombre:</b></td>

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

  </tr>

  <tr>

    <td align="right" width="150" class="Labels"><b>Nombre Fantasía:</b></td>

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

  </tr>

  <tr>

    <td align="right" width="150" class="Labels"><b>Dirección:</b></td>

    <td class="Normal"><strong><input type="text" size="40" name="A1_DIR"></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">Productor Rural</option>

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

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

            <option value="X">Exportación</option>

        </select>

    </strong></td>

  </tr>

  <tr>

    <td align="right" width="150" class="Labels"><b>Municipio:</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>

Creación de formularios para rutinas automáticas

  1. Configurar la integración para GED entre Protheus y ECM en el Configurador en la opción Entorno > Totvs ECM > Wizard de GED
  2. Utilizar la función FWECMPutCard para enviar el formulario a ECM, como muestra el siguiente ejemplo (el fichero se creará en la carpeta ERP_MP \ <empresas> \ MP_CARDS en ECM):

Ejemplo de código-fuente

#include "totvs.ch"

User Function FormCliente()

Local cProcessId := "CLIENTE" // si se informa actualice el formulario relacionado con el proceso, sino cree uno nuevo

Local cDescription := "Formulario del registro de cliente"

Local cCardDescription := ""

Local aHTML := Array(1,2) // archivos del formulario

Local aEvents := Array(1,2) // eventos que se personalizarán para el formulario

Local nFormId

Local aError

 

aHTML[1][1] := "cliente.html" // nombre del archivo

aHTML[1][2] := '<HTML>'+; // contenido del archivo

'<HEAD>'+;

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

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

'</HEAD>'+;

'<BODY scroll=yes>'+;

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

'<strong> Registro</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>Tienda:</b></td>'+;

'    <td class="Normal"><strong><input type="text" size="2" name="A1_TIENDA"></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_PERSONA">'+;

'            <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>Nombre:</b></td>'+;

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

'  </tr>'+;

'  <tr> '+;

'    <td align="right" width="150" class="Labels"><b>Nombre Fantasía:</b></td>'+;

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

'  </tr>'+;

'  <tr> '+;

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

'    <td class="Normal"><strong><input type="text" size="40" name="A1_DIR"></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">Productor Rural</option>'+;

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

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

'            <option value="X">Exportación</option>'+;

'            </select>'+;

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

'  </tr>'+;

'  <tr> '+;

'    <td align="right" width="150" class="Labels"><b>Municipio:</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" // nombre del evento

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

'log.info("Prueba de llamada de función");'+;

'}'

 

nFormId := FWECMPutCard(cProcessId,cDescription,cCardDescription,aHTML,aEvents) // devuelve el código del fichero en ECM

If FWWFIsError()

   aError := FWWFGetError()

   MsgStop(aError[2])

Else

   MsgInfo("Fichero actualizado con éxito")

EndIf

Return

Creando formularios para rutinas MVC

  1. Configurar la integración para GED entre Protheus y ECM en el Configurador, en la opción Entorno > Totvs ECM > Wizard de GED
  2. Utilizar el método GetXMLLayout de View para generar el HTML
    1. Sólo los componentes Fields y Grid se convertirán a HTML
    2. Sólo los formularios del tipo CRUD y Master/Detail pueden exportarse a ECM, ya que no es posible simular todos los eventos de los demás tipos de formularios de Microsiga Protheus.
    3. Este método es sólo una demostración de cómo es el mecanismo en Microsiga Protheus. Los formularios MVC tienen una forma automática de generar un proceso con formulario en ECM en las 'Acciones Relacionadas' de la rutina.

#include "totvs.ch"

User Function FormView()

Local oView := FWLoadView("MATA030_MVC")

Local cProcessId := "CLIENTE" // si se informa actualice el formulario relacionado con el proceso, sino cree uno nuevo

Local cDescription := "Formulario del registro de cliente"

Local cCardDescription := ""

Local aEvents := Array(1,2) // eventos que se personalizarán para el 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" // nombre del evento

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

'log.info("Prueba de llamada de función");'+;

'}'

 

nFormId := FWECMPutCard(cProcessId,cDescription,cCardDescription,aFiles,aEvents) // devuelve el código del fichero en ECM

If FWWFIsError()

   aError := FWWFGetError()

   MsgStop(aError[2])

Else

   MsgInfo("Fichero actualizado con éxito")

EndIf

Return

Usando MVC en los formularios Modelo 1

Para rutinas automáticas del tipo Modelo 1 (CRUD) que utilizan sólo campos del Diccionario de Datos se puede utilizar MVC para simplificar el proceso de personalización del formulario, de la siguiente manera:

#include "totvs.ch"

User Function FormTable()

Local cTable := "SA1"

Local cProcessId := "MATA030"

Local cDescription := "Cliente (rutina automática)"

Local oView

Local aEvents := Array(1,2) // eventos que se personalizarán para el 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" // nombre del evento

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

'log.info("Prueba de llamada de función");'+;

'}'

 

nFormId := FWECMPutCard(cProcessId,cDescription,cCardDescription,aFiles,aEvents) // devuelve el código del fichero en ECM

If FWWFIsError()

   aError := FWWFGetError()

   MsgStop(aError[2])

Else

   MsgInfo("Fichero actualizado con éxito")

EndIf

Return

 

 

 



 

  • Sem rótulos