Integração TOTVS Microsiga Protheus e Fluig ECM

Tamanho: px
Começar a partir da página:

Download "Integração TOTVS Microsiga Protheus e Fluig ECM"

Transcrição

1 08/2013

2 Sumário Sumário Objetivo Integração manual Formulário ECM Protheus MVC Rotina Automática (Modelo 1) Processo Validação do formulário Script do evento no ECM Protheus WebService MVC Atualização do Protheus MVC Rotina Automática (Modelo 1)

3 1 Objetivo Integrar rotinas do MVC e automáticas da linha Microsiga Protheus com o Fluig ECM para criação processos permitindo ao cliente trabalhar com a rotina como uma solicitação com atribuição de responsáveis por atividade (baseada no dicionário de pastas), utilizando o workflow do Fluig ECM para controle de prazo de conslusão, acompanhamento notificação de responsável e requisitante, sendo as informações enviadas no final do processo para a linha de produtos Microsiga Protheus para persistência. 2 Integração manual 2.1 Formulário ECM 1. Criar um arquivo HTML com os campos com o mesmo nome utilizado no Protheus como o exemplo abaixo: <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> 3

4 <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> 2. Adicionar o arquivo.html como um Novo Fichário nos Documentos do ECM e verificar o Código que foi gerado que será utilizado para criar o Processo utilizará esse fichário Protheus 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): #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> '+; 4

5 ' <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") Return 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 5

6 2. Utilizar o método GetXMLLayout do View para gerar o HTML. Somente os componentes Fields e Grid serão convertidos para HTML #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") Return Rotina Automática (Modelo 1) Para rotinas automáticas do tipo Modelo 1 (CRUD) que usam somente campos do Dicionário de Dados pode-se utilizar o exemplo abaixo para criar o formulário: #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");'+; 6

7 '' 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") Return 2.2 Processo WF 1. Configurar a integração para workflow entre o Protheus e o ECM no Configurador na opção Ambiente > Totvs ECM > Wizard do 2. Utilizar a função FWECMProcess para criar e/ou atualizar o processo no ECM conforme o exemplo abaixo: #include "totvs.ch" User Function ProcCliente() Local cprocessid := "CLIENTE" Local cdescription := "Cadastro de cliente" Local cinstruction := "Instruções de uso do processo" Local nformid := 22 // id do fichário adicionado no ECM no passo anterior Local astates := Array(4,6) // atividades do processo em sequencia para criação automática dos fluxos Local aevents := Array(1,2) // eventos que serão customizados para o processo Local aproperties := Array(1,2) // propriedades que serão utilizadas nos scripts dos eventos do processo Local aerror astates[1][1] := "Início" // atividade astates[1][2] := "" // descrição astates[1][3] := "" // instruções astates[1][4] := 60 //prazo de conclusão em segundos astates[1][5] := 0 // mecanismo de atribuição (zero para nenhum, 1 para grupo ou 2 para usuário) astates[1][6] := "" // código do grupo ou usuário no ECM caso o mecanismo de atribuição seja diferente de zero astates[2][1] := "Revisão" // atividade astates[2][2] := "Revisão do cadastro do cliente" // descrição astates[2][3] := "Revise as informações do cadastro" // instruções astates[2][4] := 60 //prazo de conclusão em segundos astates[2][5] := 0 // mecanismo de atribuição (zero para nenhum, 1 para grupo ou 2 para usuário) astates[2][6] := "" // código do grupo ou usuário no ECM caso o mecanismo de atribuição seja diferente de zero astates[3][1] := "Fim" // atividade astates[3][2] := "Confirmar cadastro" // descrição astates[3][3] := "" // instruções astates[3][4] := 60 //prazo de conclusão em segundos astates[3][5] := 0 // mecanismo de atribuição (zero para nenhum, 1 para grupo ou 2 para usuário) astates[3][6] := "" // código do grupo ou usuário no ECM caso o mecanismo de atribuição seja diferente de zero aevents[1][1] := "beforetasksave" // script na linguagem JavaScript aevents[1][2] := 'function beforetasksave(colleagueid,nextsequenceid,userlist){'+; 'var A1_COD = hapi.getcardvalue("a1_cod");'+; 'if (A1_COD == ""){'+; ' throw "O campo Código é obrigatório"'+; ''+; '' aproperties[1][1] := "TABLE" // nome da propriedade aproperties[1][2] := "SA1" // valor 7

8 FWECMProcess(cProcessId, cdescription, cinstruction, nformid, astates, aevents, aproperties) If FWWFIsError() aerror := FWWFGetError() MsgStop(aError[2]) Else MsgInfo("Processo atualizado com sucesso") Return 2.3 Validação do formulário A validação do formulário dos processos no ECM é realizada através da customização dos eventos dos fichários e processos utilizando scripts na linguagem JavaScript. Os eventos podem ser implementados no próprio ECM ou enviados pelo Protheus como parâmetro das funções utilizadas nos exemplos anteriores. Para validar os campos informados pelo usuário utilizar o evento beforetasksave do processo que é executado em cada confirmação de tarefa para enviar para a próxima etapa do workflow. Para acessar o valor de um campo do formulário utilizar a API do workflow hapi. getcardvalue(<nomecampo>) e para o tratamento de exeções utilizar o comando throw <mensagem> que apresentará a mensagem para o usuário impendindo que prossiga enquanto não corrigir as informações digitadas Script do evento no ECM Validações simples podem ser realizadas no script do evento para evitar a comunicação desnecessário ao Protheus retornando imediatamente uma mensagem ao usuário. function beforetasksave(colleagueid,nextsequenceid,userlist){ var A1_COD = hapi.getcardvalue("a1_cod"); if (A1_COD == ""){ throw "O campo Código é obrigatório" Protheus A validação nos scripts dos eventos utilizando aplicações externas é realizada atraves de WebServices que devem ser cadastradas como serviço no ECM na opção Painel de Controle > Serviços > Adicionar. Quando qualquer definição do WebService for alterada ou incluída será necessário atualizar o ECM na opção Painel de Controle > Serviços > Editar > Atualizar. O WebService pode ser cadastrado através do Painel de Controle do ECM ou pelo Protheus utilizando a função FWWFPutService como no exemplo abaixo. #include "totvs.ch" User Function WSCliente() Local cname := "WSCLIENTE" Local curl := "http://hostname:8080/ws/exemplo.apw?wsdl" Local cdescription := "Serviço para validação e atualização do cadastro de cliente" If FWWFPutService(cName,cUrl,cDescription) MsgInfo("Serviço cadastrado com sucesso") Return 8

9 2.3.3 WebService Exemplo de WebService do Protheus: #include "totvs.ch" #include "apwebsrv.ch" WSSERVICE WSCLIENTE DESCRIPTION "Exemplo cadastro de cliente" WSDATA A1_COD AS STRING WSDATA A1_LOJA AS STRING WSDATA XML AS Base64Binary WSDATA RETEXISTCOD AS BOOLEAN WSDATA RETINCLUIR AS BOOLEAN WSMETHOD ExistCod DESCRIPTION "Verifica se codigo do cliente ja existe" WSMETHOD Incluir DESCRIPTION "Inclui cliente" ENDWSSERVICE WSMETHOD ExistCod WSRECEIVE A1_COD,A1_LOJA WSSEND RETEXISTCOD WSSERVICE WSCLIENTE Private INCLUI :=.T. ::RETEXISTCOD := existchav("sa1",::a1_cod+::a1_loja) Return.T. WSMETHOD Incluir WSRECEIVE XML WSSEND RETINCLUIR WSSERVICE WSCLIENTE Local oxml := txmlmanager():new() Local lret :=.T. Local adadoscli := { If oxml:parse(::xml) aadd( adadoscli, { "A1_COD", oxml:xpathgetnodevalue("/sa1/a1_cod"), NIL ) aadd( adadoscli, { "A1_LOJA", oxml:xpathgetnodevalue("/sa1/a1_loja"), NIL ) aadd( adadoscli, { "A1_TIPO", oxml:xpathgetnodevalue("/sa1/a1_tipo"), NIL ) aadd( adadoscli, { "A1_PESSOA", oxml:xpathgetnodevalue("/sa1/a1_pessoa"), NIL ) aadd( adadoscli, { "A1_NOME", oxml:xpathgetnodevalue("/sa1/a1_nome"), NIL ) aadd( adadoscli, { "A1_NREDUZ", oxml:xpathgetnodevalue("/sa1/a1_nreduz"), NIL ) aadd( adadoscli, { "A1_END", oxml:xpathgetnodevalue("/sa1/a1_end"), NIL ) aadd( adadoscli, { "A1_MUN", oxml:xpathgetnodevalue("/sa1/a1_mun"), NIL ) aadd( adadoscli, { "A1_EST", oxml:xpathgetnodevalue("/sa1/a1_est"), NIL ) lmserroauto :=.F. MSExecAuto( { x, y MATA030( x, y ), adadoscli, 3 ) If lmserroauto If lsx8 RollBackSX8() ::RETINCLUIR :=.F. Else If lsx8 ConFirmSX8() ::RETINCLUIR :=.T. Else SetSoapFault("WSCLIENTE:INCLUIR",oXML:LastError()) lret :=.F. Return lret 9

10 Validação no script do evento beforetasksave: 1. Invocar a carga do serviço com o método ServiceManager.getService 2. Utilizar o método getbean para retornar o utilitário para acesso as classes do serviço através do método instantiate enviando como parâmetro a classe Locator que esta descrita no ECM em Painel de Controle > Serviços, selecionar o serviço e clicar em Visualizar 3. Invocar o método para instanciar o serviço (no exemplo getwsclientesoap) que também esta descrito na opção Painel de Controle > Serviços > Visualizar 4. Invocar o método do serviço (no exemplo ExistCod) function beforetasksave(colleagueid,nextsequenceid,userlist){ var A1_COD = hapi.getcardvalue("a1_cod"); if (A1_COD == ""){ throw "O campo Código é obrigatório" var wsservice = ServiceManager.getService("WSCLIENTE"); var servicehelper = wsservice.getbean(); var servicelocator = servicehelper.instantiate("localhost.wsclientelocator"); var service = servicelocator.getwsclientesoap(); var ret = false; try { ret = service.existcod(a1_cod); catch(erro){ throw erro.message if (!ret) { throw "Cliente já existe"; MVC A validação do processo de uma rotina MVC é realizada utilizando o WebService FWWSMODEL (http://hostexemplo:8080/ws/fwwsmodel.apw?wsdl) com a invocação do método GETXMLDATADETAIL que retorna o XML do model para popular os dados e do método VLDXMLDATA que validará o XML. #include "totvs.ch" User Function WSMVC() Local cname := "TOTVS_FWMVC" Local curl := "http://hostname:8080/ws/fwwsmodel.apw?wsdl " Local cdescription := "Serviço do TOTVS MVC para integração de rotinas/programas com ECM" Local aservice := FWWFGetService(cName) If Empty(aService).and. FWWFPutService(cName,cUrl,cDescription) MsgInfo("Serviço cadastrado com sucesso") Return Validação no script do evento beforetasksave: function beforetasksave(colleagueid,nextsequenceid,userlist){ var wsservice = ServiceManager.getService("TOTVS_FWMVC"); var servicehelper = wsservice.getbean(); 10

11 var servicelocator = servicehelper.instantiate("br.com.totvs.webservices.fwwsmodel_apw.fwwsmodellocator"); var service = servicelocator.getfwwsmodelsoap(); var err = {message:"", empty:true; var ret, xml; try { ret = service.getxmldatadetail([],"mata030_mvc"); xml = new XML(new String(new java.lang.string(ret)).replace(/<\?.*\?>/g,"")); catch(erro){ throw erro.message; return; updatexmlfields(xml,err); if (err.message.length > 0){ throw err.message; else if (err.empty){ throw "Preencha o formulário"; else{ = 3"); try{ service.vldxmldata([],"mata030_mvc",new java.lang.string(xml.toxmlstring()).getbytes()); catch(e){ throw e.message; function updatexmlfields(node,err){ var list = node.children(); var name,value; for (var i=0;i<list.length();i++){ switch case "FIELDS": updatexmlfields(list[i],err); default: name = list[i].name().localname; value = hapi.getcardvalue(name); if (value!= null) list[i].value = convertvalue(name,list[i],value,err); if (err.message.length > 0) function convertvalue(name,struct,value,err){ var y,m,d,n,len,str,reg var setyear = new Date().getFullYear().toString().substring(0,2); var setdate = "dd/mm/yyyy"; var ycount = setdate.match(/yyyy/)? 4 : 2; var haserr = false; 11

12 value = value.trim(); switch case "D": if (value.replace("/","").trim()!= ""){ len = value.length(); d = setdate.indexof("d"); m = setdate.indexof("m"); y = setdate.indexof("y"); if (d + 2 > len m + 2 > len y + ycount > len){ else{ str = value.substr(m,2) + value.substr(d,2); if (ycount == 4) str = value.substr(y,4) + str; else str = setyear + value.substr(y,2) + str; if (str.match(/((((19 20)(([02468][048]) ([13579][26]))0229)) ((19 20)[0-9][0-9])((((0[1-9]) (1[0-2]))((0[1-9]) (1\d) (2[0-8]))) ((((0[13578]) (1[02]))31) (((0[1,3-9]) (1[0-2]))(29 30)))))/g)) value = new java.lang.string(str); else if (haserr) err.message = "O campo ("+name+") contém uma data inválida"; else case "N": len = if (len[1] == "0"){ reg = new RegExp("^[0-9]{1,"+len[0]+"$"); str = value.replace(",",""); str = value.replace(".",""); err.message = "O campo ("+name+") contém um número (valor ou tamanho) inválido" if (!haserr){ n = parseint(str); if (!isnan(n)){ value = new java.lang.string(str); if (n > 0) else{ reg = new RegExp("^0$ ^0\.[0-9]{1,"+len[1]+"$ ^[0-9]{0,"+len[0]+"(\.[0-9]{1,"+len[1]+")?$"); str = value.replace(".","").replace(",","."); 12

13 str = value.replace(",",""); err.message = "O campo ("+name+") contém um número (valor ou tamanho) inválido" if (!haserr){ n = parsefloat(str); if (!isnan(n)){ value = new java.lang.string(str); if (n > 0) default: if (value!= "") return value; function Trim(str){return str.replace(/^\s+ \s+$/g,""); 2.4 Atualização do Protheus A atualização dos dados no Protheus também é realizada atraves de WebServices como visto na validação utilizando o evento do processo afterprocessfinish que é executado na finalização da solicitação. function afterprocessfinish(processid){ var wsservice = ServiceManager.getService("WSCLIENTE"); var servicehelper = wsservice.getbean(); var servicelocator = servicehelper.instantiate("localhost.wsclientelocator"); var service = servicelocator.getwsclientesoap(); var SA1 = new XML("<SA1/>"); SA1.A1_COD = hapi.getcardvalue("a1_cod"); SA1.A1_LOJA = hapi.getcardvalue("a1_loja"); SA1.A1_TIPO = hapi.getcardvalue("a1_tipo"); SA1.A1_PESSOA = hapi.getcardvalue("a1_pessoa"); SA1.A1_NOME = hapi.getcardvalue("a1_nome"); SA1.A1_NREDUZ = hapi.getcardvalue("a1_nreduz"); SA1.A1_END = hapi.getcardvalue("a1_end"); SA1.A1_MUN = hapi.getcardvalue("a1_mun"); SA1.A1_EST = hapi.getcardvalue("a1_est"); try { ret = service.incluir(new java.lang.string(sa1.toxmlstring()).getbytes()); catch(erro){ throw erro.message 13

14 2.4.1 MVC A validação do processo de uma rotina MVC é também é realizada utilizando o WebService FWWSMODEL (http://hostexemplo:8080/ws/fwwsmodel.apw?wsdl) com a invocação do método GETXMLDATADETAIL que retorna o XML do model para popular os dados e do método PUTXMLDATA que gravar o XML. function afterprocessfinish(processid){ var wsservice = ServiceManager.getService("TOTVS_FWMVC"); var servicehelper = wsservice.getbean(); var servicelocator = servicehelper.instantiate("br.com.totvs.webservices.fwwsmodel_apw.fwwsmodellocator"); var service = servicelocator.getfwwsmodelsoap(); var err = {message:"", empty:true; var ret, xml; try { ret = service.getxmldatadetail([],"mata030_mvc"); xml = new XML(new String(new java.lang.string(ret)).replace(/<\?.*\?>/g,"")); catch(erro){ throw erro.message; return; updatexmlfields(xml,err); = 3"); try{ service.putxmldata([],"mata030_mvc",new java.lang.string(xml.toxmlstring()).getbytes()); catch(e){ throw e.message; function updatexmlfields(node,err){ var list = node.children(); var name,value; for (var i=0;i<list.length();i++){ switch case "FIELDS": updatexmlfields(list[i],err); default: name = list[i].name().localname; value = hapi.getcardvalue(name); if (value!= null) list[i].value = convertvalue(name,list[i],value,err); if (err.message.length > 0) function convertvalue(name,struct,value,err){ var y,m,d,n,len,str,reg var setyear = new Date().getFullYear().toString().substring(0,2); 14

15 var setdate = "dd/mm/yyyy"; var ycount = setdate.match(/yyyy/)? 4 : 2; var haserr = false; value = value.trim(); switch case "D": if (value.replace("/","").trim()!= ""){ len = value.length(); d = setdate.indexof("d"); m = setdate.indexof("m"); y = setdate.indexof("y"); if (d + 2 > len m + 2 > len y + ycount > len){ else{ str = value.substr(m,2) + value.substr(d,2); if (ycount == 4) str = value.substr(y,4) + str; else str = setyear + value.substr(y,2) + str; if (str.match(/((((19 20)(([02468][048]) ([13579][26]))0229)) ((19 20)[0-9][0-9])((((0[1-9]) (1[0-2]))((0[1-9]) (1\d) (2[0-8]))) ((((0[13578]) (1[02]))31) (((0[1,3-9]) (1[0-2]))(29 30)))))/g)) value = new java.lang.string(str); else if (haserr) err.message = "O campo ("+name+") contém uma data inválida"; else case "N": len = if (len[1] == "0"){ reg = new RegExp("^[0-9]{1,"+len[0]+"$"); str = value.replace(",",""); str = value.replace(".",""); err.message = "O campo ("+name+") contém um número (valor ou tamanho) inválido" if (!haserr){ n = parseint(str); if (!isnan(n)){ value = new java.lang.string(str); if (n > 0) 15

16 else{ reg = new RegExp("^0$ ^0\.[0-9]{1,"+len[1]+"$ ^[0-9]{0,"+len[0]+"(\.[0-9]{1,"+len[1]+")?$"); str = value.replace(".","").replace(",","."); str = value.replace(",",""); err.message = "O campo ("+name+") contém um número (valor ou tamanho) inválido" if (!haserr){ n = parsefloat(str); if (!isnan(n)){ value = new java.lang.string(str); if (n > 0) default: if (value!= "") return value; function Trim(str){return str.replace(/^\s+ \s+$/g,""); Rotina Automática (Modelo 1) Como as rotinas automáticas após validarem executam a atualização ao invés de utilizar o evento afterprocessfinish utilizar o evento beforetasksave quando o processo estiver na atividade fim. Além do WebService do MVC utilizar também o FWWSMODEL (http://hostexemplo:8080/ws/fwwsecm.apw?wsdl) com a invocação do método PUTDATA. #include "totvs.ch" User Function WSMVC() Local cname := "TOTVS_FWWSECM" Local curl := "http://hostname:8080/ws/fwwsecm.apw?wsdl" Local cdescription := "Serviço do TOTVS Microsiga Protheus para integração de rotinas automáticas com ECM" Local aservice := FWWFGetService(cName) If Empty(aService).and. FWWFPutService(cName,cUrl,cDescription) MsgInfo("Serviço cadastrado com sucesso") Return Evento beforetasksave: function beforetasksave(colleagueid,nextsequenceid,userlist){ var wsservice = ServiceManager.getService("TOTVS_FWMVC"); var servicehelper = wsservice.getbean(); var servicelocator = servicehelper.instantiate("br.com.totvs.webservices.fwwsmodel_apw.fwwsmodellocator"); var service = servicelocator.getfwwsmodelsoap(); var err = {message:"", empty:true; 16

17 var ret, xml; try { ret = service.getxmldatadetail([],"mata030_mvc"); xml = new XML(new String(new java.lang.string(ret)).replace(/<\?.*\?>/g,"")); catch(erro){ throw erro.message; return; updatexmlfields(xml,err); if (err.message.length > 0){ throw err.message; else if (err.empty){ throw "Preencha o formulário"; else{ wsservice = ServiceManager.getService("TOTVS_FWWSECM"); servicehelper = wsservice.getbean(); servicelocator = servicehelper.instantiate("br.com.totvs.webservices.fwwsecm_apw.fwwsecmlocator"); service = servicelocator.getfwwsmodelsoap(); = 3"); try{ service.putdata([],"sa1","mata030",new java.lang.string(xml.toxmlstring()).getbytes());; catch(e){ throw e.message; function updatexmlfields(node,err){ var list = node.children(); var name,value; for (var i=0;i<list.length();i++){ switch case "FIELDS": updatexmlfields(list[i],err); default: name = list[i].name().localname; value = hapi.getcardvalue(name); if (value!= null) list[i].value = convertvalue(name,list[i],value,err); if (err.message.length > 0) function convertvalue(name,struct,value,err){ var y,m,d,n,len,str,reg var setyear = new Date().getFullYear().toString().substring(0,2); var setdate = "dd/mm/yyyy"; var ycount = setdate.match(/yyyy/)? 4 : 2; 17

18 var haserr = false; value = value.trim(); switch case "D": if (value.replace("/","").trim()!= ""){ len = value.length(); d = setdate.indexof("d"); m = setdate.indexof("m"); y = setdate.indexof("y"); if (d + 2 > len m + 2 > len y + ycount > len){ else{ str = value.substr(m,2) + value.substr(d,2); if (ycount == 4) str = value.substr(y,4) + str; else str = setyear + value.substr(y,2) + str; if (str.match(/((((19 20)(([02468][048]) ([13579][26]))0229)) ((19 20)[0-9][0-9])((((0[1-9]) (1[0-2]))((0[1-9]) (1\d) (2[0-8]))) ((((0[13578]) (1[02]))31) (((0[1,3-9]) (1[0-2]))(29 30)))))/g)) value = new java.lang.string(str); else if (haserr) err.message = "O campo ("+name+") contém uma data inválida"; else case "N": len = if (len[1] == "0"){ reg = new RegExp("^[0-9]{1,"+len[0]+"$"); str = value.replace(",",""); str = value.replace(".",""); err.message = "O campo ("+name+") contém um número (valor ou tamanho) inválido" if (!haserr){ n = parseint(str); if (!isnan(n)){ value = new java.lang.string(str); if (n > 0) else{ reg = new RegExp("^0$ ^0\.[0-9]{1,"+len[1]+"$ ^[0-9]{0,"+len[0]+"(\.[0-9]{1,"+len[1]+")?$"); 18

19 str = value.replace(".","").replace(",","."); str = value.replace(",",""); err.message = "O campo ("+name+") contém um número (valor ou tamanho) inválido" if (!haserr){ n = parsefloat(str); if (!isnan(n)){ value = new java.lang.string(str); if (n > 0) default: if (value!= "") return value; function Trim(str){return str.replace(/^\s+ \s+$/g,""); 19

HAT Programação Auditoria Pós. 12.1.x. abril de 2015. Versão: 2.0

HAT Programação Auditoria Pós. 12.1.x. abril de 2015. Versão: 2.0 HAT Programação Auditoria Pós 12.1.x abril de 2015 Versão: 2.0 1 Sumário 1 Introdução... 3 2 Visão do Processo... 3 3 Serviço... 5 4 Dataset... 7 5 Formulário Principal AuditoriaPos... 9 6 Arquitetura

Leia mais

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique. Lista de Revisão 1. Nos sistemas web, geralmente os usuários apresentam dois problemas típicos, a desorientação e a sobrecarga cognitiva. Discorra sobre esses problemas. 2. Apresente as principais diferenças

Leia mais

Auditoria Pós - Programação

Auditoria Pós - Programação Auditoria Pós - Programação Julho - 2014 Índice 1. Introdução... 3 2. Visão do Processo... 3 3. Serviço... 4 4. Dataset... 6 5. Formulário Principal AuditoriaPos... 8 6. Arquitetura do Formulário HTML

Leia mais

Material de Apoio Configuração Auditoria Pós

Material de Apoio Configuração Auditoria Pós Material de Apoio Configuração Auditoria Pós Julho - 2014 Índice 1. Introdução... 3 2. Ambiente... 3 3. Serviço... 4 4. Dataset... 6 5. Formulário... 6 6. Processo... 12 6.1 Importação de Processos...

Leia mais

Basicamente iremos precisar de uma base de dados na qual iremos armazenar os registros feitos pelos vistantes: Vamos armazenar os seguintes dados:

Basicamente iremos precisar de uma base de dados na qual iremos armazenar os registros feitos pelos vistantes: Vamos armazenar os seguintes dados: Livro de Visitas Basicamente iremos precisar de uma base de dados na qual iremos armazenar os registros feitos pelos vistantes: Vamos armazenar os seguintes dados: ID nome email mensagem data O código

Leia mais

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de

Leia mais

JavaScript: Validação de Formulários. Prof. Ivanilton Polato ipolato@utfpr.edu.br ipolato@gmail.com

JavaScript: Validação de Formulários. Prof. Ivanilton Polato ipolato@utfpr.edu.br ipolato@gmail.com JavaScript: Validação de Formulários Prof. Ivanilton Polato ipolato@utfpr.edu.br ipolato@gmail.com Validação de Formulários Um dos usos mais frequentes do JS é a validação de formulários. Além de garantir

Leia mais

Prof Evandro Manara Miletto. parte 2

Prof Evandro Manara Miletto. parte 2 Prof Evandro Manara Miletto parte 2 Sumário Estruturas de Controle Eventos Estruturas de controle características Estruturas de controle (ou condicionais) são executadas caso um teste seja atendido Permite

Leia mais

Capítulo 4. Programação em ASP

Capítulo 4. Programação em ASP Índice: CAPÍTULO 4. PROGRAMAÇÃO EM ASP...2 4.1 REGISTRAR...2 4.1.1 Códigos para configuração do objeto...2 4.1.2 Formulário para transferir dados da impressão digital...3 4.1.3 Código Javascript para registro

Leia mais

Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL.

Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL. Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL. Procuraremos mostrar os principais procedimentos para fazer um cadastro de registros numa base de dados MySQL utilizando a linguagem

Leia mais

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart.

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. 16/08/2013 BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. Versão 1.0 19/12/2014 Visão Resumida Data Criação 19/12/2014 Versão Documento 1.0 Projeto

Leia mais

Programação Web Prof. Wladimir

Programação Web Prof. Wladimir Programação Web Prof. Wladimir Linguagem PHP @wre2008 1 Sumário PHP: Tipos de dados; Manipulação de dados; Utilizando formulário. @wre2008 2 Tipos de dados As variáveis são declaradas no momento de sua

Leia mais

O que é o Javascript?

O que é o Javascript? O que é o Javascript? JavaScript é uma linguagem para criação de Home-Pages. Funções escritas em JavaScript podem ser embutidas dentro de seu documento HTML. Com JavaScript você tem muitas possibilidades

Leia mais

Altere a cor de fundo Altere a cor do texto Utilize meta tags e direcione a página para um site qualquer

Altere a cor de fundo Altere a cor do texto Utilize meta tags e direcione a página para um site qualquer Exercício A11 - Digite o código abaixo e salve-o como ex1.htm. Documento com fundo azul!! Página com fundo e texto coloridos!

Leia mais

Framework MIOLO 2.5 Tutorial: Criando um módulo

Framework MIOLO 2.5 Tutorial: Criando um módulo Framework MIOLO 2.5 Tutorial: Criando um módulo Versão 2011.1.oracle CGCO/UFJF Framework MIOLO 2.5 Tutorial: Criando um módulo 1. Introdução O processo de desenvolvimento de aplicações com o MIOLO possui

Leia mais

Validação de formulários utilizando Javascript

Validação de formulários utilizando Javascript Validação de formulários utilizando Javascript A validação de formulários é um dos usos mais comuns na programação Javascript. A validação de dados por meio da programação Javascript é muito fácil e rápida

Leia mais

Conteúdo. DHTML tópicos Hamilton Lima - 2002-2004

Conteúdo. DHTML tópicos Hamilton Lima - 2002-2004 DHTML tópicos Hamilton Lima - 2002-2004 Conteúdo 1. meu primeiro script... 2 2. DOM Document Object Model...2 3. tipo de execução de scripts...2 4. resposta a um evento... 3 5. tipos de dados, variaveis

Leia mais

AJAX é baseado nos seguintes padrões WEB: JavaScript, XML, HTML, CSS.

AJAX é baseado nos seguintes padrões WEB: JavaScript, XML, HTML, CSS. AJAX AJAX é acrônimo de Asynchronous JavaScript And XML. É um tipo de programação que se tornou popular in 2005 pela Google (com Google Suggest). AJAX não é uma nova linguagem de programação, mas uma nova

Leia mais

PROGRAMAÇÃO PARA INTERNET. Fonte: Raul Paradeda

PROGRAMAÇÃO PARA INTERNET. Fonte: Raul Paradeda PROGRAMAÇÃO PARA INTERNET Introdução à AJAX Fonte: Raul Paradeda INTRODUÇÃO Para entender o que é o AJAX é necessário ter o prévio conhecimento de: HTML / XHTML; Javascript; CSS; XML. INTRODUÇÃO Ao pesquisar

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO Introdução App de exemplo Implementação do exemplo Testes realizados

Leia mais

Manual de Integração Protheus x Reserve

Manual de Integração Protheus x Reserve Novembro/2013 Sumário 1. Introdução... 3 2. Requisitos... 3 3. Dicionário de Dados... 3 4. Parâmetros... 5 5. Instalação/Atualização... 6 6. Contexto de negócio... 9 7. Escopo e Finalidade... 9 8. Como

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO Introdução App de exemplo Implementação do exemplo Testes realizados

Leia mais

MÓDULO Programação para Web 2

MÓDULO Programação para Web 2 MÓDULO Programação para Web 2 USANDO O JSF Continuação Interdependência e Injeção Instâncias de Managed Beans podem conversar entre si para dividir o processamento das requisições dos usuários de acordo

Leia mais

6. Introdução à Linguagem PHP

6. Introdução à Linguagem PHP 6. Introdução à Linguagem PHP A comunicação na Web exige dois agentes: o cliente web e o servidor web. O cliente requer informação (a partir de uma página HTML acessada pelo navegador) e o servidor fornece

Leia mais

GUIA PHP com MYSQL Autor: Everton Mendes Messias

GUIA PHP com MYSQL Autor: Everton Mendes Messias PHP (Hypertext Preprocessor) : Linguagem de programação interpretada. Tags PHP: phpinfo(); Comentários: //, # - comentário de uma linha /* comentário de várias linhas */ GUIA PHP com MYSQL Autor: Everton

Leia mais

Tecnologias para apresentação de dados - Java Script. Aécio Costa

Tecnologias para apresentação de dados - Java Script. Aécio Costa Tecnologias para apresentação de dados - Java Script Aécio Costa Foi originalmente implementada como parte dos navegadores web para que scripts pudessem ser executados do lado do cliente e interagissem

Leia mais

Programação para a Internet II 2.13. PHP AJAX. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Programação para a Internet II 2.13. PHP AJAX. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Programação para a Internet II 2.13. PHP AJAX Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Ajax não é uma tecnologia! É um conceito! Consiste no uso do objecto XMLHttpRequest que se encontra implementado

Leia mais

SISTEMA GERENCIAMENTO DE PRODUTOS PHP E MySQL 1. APRESENTAÇÃO

SISTEMA GERENCIAMENTO DE PRODUTOS PHP E MySQL 1. APRESENTAÇÃO SISTEMA GERENCIAMENTO DE PRODUTOS PHP E MySQL 1. APRESENTAÇÃO Este é um sistema de controle de produtos, onde o usuário irá entrar com o login e a senha, e se ele for um usuário cadastrado na tabela usuários

Leia mais

HTML / JAVASCRIPT. A versão atual é o HTML5 (seus predecessores imediatos são HTML 4.01, XHTML 1.1, etc.).

HTML / JAVASCRIPT. A versão atual é o HTML5 (seus predecessores imediatos são HTML 4.01, XHTML 1.1, etc.). HTML / JAVASCRIPT Estamos iniciando o estudo do HTML através das TAGS (comandos) para construir formulários. Isso facilitará a continuidade dos nossos estudos da linguagem de programação JavaScript, a

Leia mais

JAVASCRIPT. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

JAVASCRIPT. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) JAVASCRIPT Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) JAVASCRIPT É a linguagem de script da Web Adicionam funcionalidades às páginas HTML Validação de entrada Comunicação com servidores Web Entre

Leia mais

Boletim Técnico. A construção do relatório dentro do RM, acessando os dados do Protheus está descrita no documento fornecido pela RM.

Boletim Técnico. A construção do relatório dentro do RM, acessando os dados do Protheus está descrita no documento fornecido pela RM. Integração Protheus TOTVS Reports Produto : Microsiga Protheus Configurador Chamado : TEPVU3 Data da publicação : 13/09/12 País(es) : Todos Banco(s) de Dados : Todos Disponibilizado o processo de integração

Leia mais

Vamos criar nosso formulário, vou utilizar aqui como exemplo cinco campos para upload:

Vamos criar nosso formulário, vou utilizar aqui como exemplo cinco campos para upload: Upload de vários arquivos com PHP 22.856 visualizações 2 1 Fala pessoal, hoje irei ensinar a fazer upload de vários arquivos de uma vez, ou seja, ao invés de criar apenas um campo para o usuário selecionar

Leia mais

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5 JavaScript Diego R. Frank, Leonardo Seibt FIT Faculdades de Informática de Taquara Fundação Educacional Encosta Inferior do Nordeste Av. Oscar Martins Rangel, 4500 Taquara RS Brasil difrank@terra.com.br,

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

Interagindo com Banco de Dados

Interagindo com Banco de Dados Interagindo com Banco de Dados Até agora não falamos de banco de dados, pois gostaríamos prime iro de te preparar para o uso do banco de dados dentro do Framework MVC. Mas antes de falarmos do framework

Leia mais

Integração Backoffice HCM x ECM

Integração Backoffice HCM x ECM Integração Backoffice HCM x ECM Fevereiro/2015 Sumário 1. Integração HCM x ECM... 3 2. Pré-Requisitos da Integração dos Produtos... 4 3. Parametrização da Integração no Produto, Origem... 7 4. Parametrização

Leia mais

Unidade 9: Middleware JDBC para Criação de Beans

Unidade 9: Middleware JDBC para Criação de Beans Programação Servidor para Sistemas Web 1 Unidade 9: Middleware JDBC para Criação de Beans Implementando MVC Nível 1 Prof. Daniel Caetano Objetivo: Preparar o aluno para construir classes de entidade com

Leia mais

Conteúdo. Especificação HTTP v1.1

Conteúdo. Especificação HTTP v1.1 Conteúdo Introdução... 2 Início e comandos básicos... 2 Exemplo método GET... 3 Exemplo método POST... 3 Códigos de retorno... 4 Exemplo para envio em Cold Fusion... 4 Exemplo para envio em PHP... 5 Exemplo

Leia mais

Introdução ao Javascript

Introdução ao Javascript Programação WEB I Introdução ao Javascript Apresentação da Disciplina,Introdução a linguagem Javascript Objetivos da Disciplina Apresentar os principais conceitos da linguagem Javascript referente à programação

Leia mais

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem. 1 - O que é JAVASCRIPT? É uma linguagem de script orientada a objetos, usada para aumentar a interatividade de páginas Web. O JavaScript foi introduzido pela Netscape em seu navegador 2.0 e posteriormente

Leia mais

SECRETARIA DE ESTADO DA FAZENDA DIRETORIA DE TECNOLOGIA DE INFORMAÇÃO. Alma Web MANUAL DO USUÁRIO CONTRIBUINTE

SECRETARIA DE ESTADO DA FAZENDA DIRETORIA DE TECNOLOGIA DE INFORMAÇÃO. Alma Web MANUAL DO USUÁRIO CONTRIBUINTE SECRETARIA DE ESTADO DA FAZENDA DIRETORIA DE TECNOLOGIA DE INFORMAÇÃO Alma Web MANUAL DO USUÁRIO CONTRIBUINTE Versão 1.0 Belém PA Dezembro de 2012 1 SUMÁRIO 1. Introdução... 3 2. Autenticação... 3 3. Painel

Leia mais

Este Procedimento Operacional Padrão define as etapas necessárias de como fazer o Cadastro de Aprovação de Cartão de Ponto no Sistema TOTVS RM.

Este Procedimento Operacional Padrão define as etapas necessárias de como fazer o Cadastro de Aprovação de Cartão de Ponto no Sistema TOTVS RM. Este Procedimento Operacional Padrão define as etapas necessárias de como fazer o Cadastro de Aprovação de Cartão de Ponto no Sistema TOTVS RM. Índice I. Introdução:... 2 II. Habilitando a Funcionalidade...

Leia mais

13 Conectando PHP com MySQL 13.1 Introdução

13 Conectando PHP com MySQL 13.1 Introdução 13 Conectando PHP com MySQL 13.1 Introdução Agora que você já tem uma idéia básica de comandos MySQL, poderemos ver como a linguagem PHP pode interagir com este banco de dados através de inúmeras funções.

Leia mais

Boletim Técnico. Esta melhoria depende de execução do update de base UIWORKFLOW, conforme Procedimentos para Implementação.

Boletim Técnico. Esta melhoria depende de execução do update de base UIWORKFLOW, conforme Procedimentos para Implementação. Workflow EIC Produto : Microsiga Protheus Easy Import Control M11 SIGAEIC TOTVS 11 Chamado : THTRLJ Data da publicação : 15/01/14 País(es) : Brasil Banco(s) de Dados : Todos Esta melhoria depende de execução

Leia mais

Tutorial - Programando com o MIOLO

Tutorial - Programando com o MIOLO Tutorial - Programando com o MIOLO Conceitos Básicos Antes de iniciar a programação com o Miolo é fundamental compreender alguns conceitos básicos: - Uma aplicação no Miolo é constituída de um ou mais

Leia mais

Integração SmartClientHTML x WorkSite

Integração SmartClientHTML x WorkSite Maio/2015 Título do documento Sumário 1. Integração... 3 2. Mecanismo... 3 3. Campos dos anexos WorkSite... 4 4. Instalação / Atualização... 5 5. Controle de Versão... 5 6. Suporte... 5 7. Transações/Entidades/Mensagens

Leia mais

Desenvolvimento de Aplicações para Internet

Desenvolvimento de Aplicações para Internet Desenvolvimento de Aplicações para Internet Aula 03 Celso Olivete Júnior olivete@fct.unesp.br Na aula de hoje... Javascript: introdução, operadores lógicos e matemáticos, comandos condicionais. Javascript:

Leia mais

JavaScript. JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos.

JavaScript. JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos. JavaScript JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos. Pode ser usada dentro do próprio arquivo HTML ou estruturada em um

Leia mais

PROTHEUSFUNCTIONMVC.PRX

PROTHEUSFUNCTIONMVC.PRX Framework - LIB Biblioteca de Funções Produto Microsiga Protheus - Todos os módulos Versão 11 Versão 11 Data 29/08/14 A seguir apresentamos as funções implementadas na linha de produto Microsiga Protheus,

Leia mais

Módulos Customizados. Descomplicando a criação de módulos personalizados para Drupal 7

Módulos Customizados. Descomplicando a criação de módulos personalizados para Drupal 7 O que veremos nessa palestra? # Entendendo o funcionamento dos módulos # Exemplo prático # Ferramentas que apoiam o desenvolvimento # Conclusão Apresentação Apresentação Rafael Silva @rfsbsb Apresentação

Leia mais

Exercícios Práticos de HTML e JavaScript.

Exercícios Práticos de HTML e JavaScript. <FORM ACTION=mailto:teste@gmail.com METHOD=POST ENCTYPE=text/plain NAME=cadastro> Exercícios Práticos de HTML e JavaScript Exercício 1: Formulário Padrão HTML SEM JavaScript

Leia mais

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web Introdução Formulários rios & Conteúdo Dinâmico Mário Antonio Meireles Teixeira Dept o. de Informática - UFMA A Web surgiu inicialmente como uma nova forma de comunicação de informações, fazendo uso de

Leia mais

Programação web Prof. Wladimir

Programação web Prof. Wladimir Programação web Prof. Wladimir Linguagem PHP Cookie e Sessão @wre2008 1 Sumário Header; Cookie; Sessão; Exemplos. @wre2008 2 Header Esta função permite que um script php redirecione para outra página.

Leia mais

Target. Manual de Integração SOAP. versão 1.0 / 2007. www.virtualtarget.com.br

Target. Manual de Integração SOAP. versão 1.0 / 2007. www.virtualtarget.com.br Manual de Integração SOAP versão 1.0 / 2007 www.virtualtarget.com.br introdução Este manual é destinado àqueles que possuem conhecimentos sólidos em linguagem de programação para integração SOAP (Simple

Leia mais

JavaScript (Funções, Eventos e Manipulação de Formulários)

JavaScript (Funções, Eventos e Manipulação de Formulários) Linguagem de Programação para Web JavaScript (Funções, Eventos e Manipulação de Formulários) Prof. Mauro Lopes 1-31 23 Objetivos Iremos avançar um pouco mais em nosso estudo sobre o JavaScript. Iremos

Leia mais

Integração Protheus x umov.me

Integração Protheus x umov.me Janeiro/2015 Título do documento Sumário 1. Pré-Requisitos... 3 2. Dicionário de dados... 3 3. Parâmetros... 4 4. Instalação e atualização... 2 5. Contexto e Negócio... 18 6. Escopo e Finalidade... 18

Leia mais

J550. Model View Controller

J550. Model View Controller J550 Model View Controller 1 Design de aplicações JSP Design centrado em páginas Aplicação JSP consiste de seqüência de páginas (com ou sem beans de dados) que contém código ou links para chamar outras

Leia mais

Criando um carrinho de compras

Criando um carrinho de compras Criando um carrinho de compras Um carrinho de compras feito em ASP.NET para você adaptar ao seu negócio e incluir no seu site. Além de aprender conceitos importantes relacionados a tecnologia ASP.NET vai

Leia mais

Nota de Aplicação. Relatório em HTML no Vijeo Citect 1.0. Suporte Técnico Brasil. Versão:

Nota de Aplicação. Relatório em HTML no Vijeo Citect 1.0. Suporte Técnico Brasil. Versão: Nota de Aplicação Relatório em HTML no Vijeo Citect Versão: 1.0 Suporte Técnico Brasil Especificações técnicas Hardware: Software: Versão: Vijeo Citect 7.40 SP 2 SQL Server 2012 Suporte Técnico Brasil

Leia mais

Projeto SNGPC para Farmácias e Drogarias

Projeto SNGPC para Farmácias e Drogarias Agência Nacional de Vigilância Sanitária Projeto SNGPC para Farmácias e Drogarias Conexão ao Webservice Manual do Desenvolvedor Versão 2.0.0 Brasília, fevereiro de 2013. Copyright 2012. Agência Nacional

Leia mais

Sisorc. Tutorial de Criação de Novos Módulos

Sisorc. Tutorial de Criação de Novos Módulos Sisorc Tutorial de Criação de Novos Módulos Banco de Dados Para criar um novo módulo é aconselhável que todas as tabelas destinadas a este módulo esteja dentro de um novo schema. Atualmente existem os

Leia mais

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira www.vqv.com.br / j.edu@vqv.com.br

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira www.vqv.com.br / j.edu@vqv.com.br Desenvolvimento de Aplicações Web Programação Contextualização de aplicações Web: navegadores e servidores como interpretadores, tecnologias do lado do cliente (XHTML, CSS, Javascript) e do lado do servidor

Leia mais

Guia de Atualização TOTVS Segurança e Acesso 12.1

Guia de Atualização TOTVS Segurança e Acesso 12.1 06/2015 Sumário 1 Prefácio... 3 1.2 Finalidade... 3 1.3 Público Alvo... 3 1.4 Organização deste Guia... 3 1.5 Documentações Importantes... 3 2 Atualização... 4 2.1 Executando o Updater de Atualização...

Leia mais

Ajax Asynchronous JavaScript and Xml

Ajax Asynchronous JavaScript and Xml Ajax Asynchronous JavaScript and Xml Ajax permite construir aplicações Web mais interactivas, responsivas, e fáceis de usar que aplicações Web tradicionais. Numa aplicação Web tradicional quando se prime

Leia mais

Manual de Instalação e Utilização do Pedido Eletrônico Gauchafarma

Manual de Instalação e Utilização do Pedido Eletrônico Gauchafarma Manual de Instalação e Utilização do Pedido Eletrônico Gauchafarma 1. INSTALAÇÃO Antes de iniciar a instalação do pedido eletrônico, entre em contato com o suporte da distribuidora e solicite a criação

Leia mais

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais Curso de Java Geração de Páginas WEB através de JSP Todos os direitos reservados Klais JSP e Servlets Servletsconstituem um mecanismo conveniente para a geração de páginas HTML dinâmicas e seu tratamento

Leia mais

CAPITULO 5 COMANDO DE FLUXO IF

CAPITULO 5 COMANDO DE FLUXO IF CAPITULO 5 COMANDO DE FLUXO IF Sempre que for necessária a tomada de decisão dentro de um programa, você terá que utilizar um comando condicional, pois é por meio dele que o PHP decidirá que lógica deverá

Leia mais

Programação WEB. Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP

Programação WEB. Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP Programação WEB Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida Aula III Introdução PHP Introdução PHP PHP=Hypertext Pre-Processor Linguagem de script open

Leia mais

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos Programando em PHP www.guilhermepontes.eti.br lgapontes@gmail.com Criando uma Calculadora Primeiramente deve se criar uma estrutura para armazenar os arquivos necessários para o funcionamento da calculadora.

Leia mais

O Patch 11.82.36 [BIBLIOTECA RM e TOTVS RM PORTAL] e 11.82.36 [TOTVS Gestão Hospitalar], disponíveis na Central de Download do Portal do Client.

O Patch 11.82.36 [BIBLIOTECA RM e TOTVS RM PORTAL] e 11.82.36 [TOTVS Gestão Hospitalar], disponíveis na Central de Download do Portal do Client. Prescrição de Soroterapia Produto : CorporeRM - TOTVS Hospitalar (Prontuário) Chamado : R_SAU003/SOC121 Data da publicação : 16/07/15 País(es) : Brasil Banco(s) de Dados : SQL Server Oracle Implementada

Leia mais

e commerces DOCUMENTO DE INTEGRAÇÃO Sumário Dúvidas: 55 51 3023.2332 suporte@hookit.cc www.hookit.cc Atualizado em: 10/09/2014

e commerces DOCUMENTO DE INTEGRAÇÃO Sumário Dúvidas: 55 51 3023.2332 suporte@hookit.cc www.hookit.cc Atualizado em: 10/09/2014 DOCUMENTO DE INTEGRAÇÃO e commerces Atualizado em: 10/09/2014 Sumário 1. Cadastro e atualização de produtos 2. Exibição do botão Hookar 3. Conversão de acesso em venda 4. Status das vendas 1. Cadastro

Leia mais

O objetivo da aula é realizar upload de arquivos com aplicação web. Será realizado o upload de duas formas:

O objetivo da aula é realizar upload de arquivos com aplicação web. Será realizado o upload de duas formas: Aula 09 FileUpload Disciplina: Programação Web Prof. Allbert Velleniche de Aquino Almeida E-mail: allbert.almeida@fatec.sp.gov.br Site: http://www.allbert.com.br /allbert.almeida Objetivo O objetivo da

Leia mais

WebWork 2. João Carlos Pinheiro. jcpinheiro@cefet-ma.br

WebWork 2. João Carlos Pinheiro. jcpinheiro@cefet-ma.br WebWork 2 João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão: 0.5 Última Atualização: Agosto/2005 1 Agenda Introdução WebWork 2 & XWork Actions Views Interceptadores Validação Inversão de Controle (IoC)

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto :

Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto : Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto : O form Index A tabela Fotos A query Q_seleção_de_fotos Vide figura 46. Figura 46 O próximo passo é criar um form que

Leia mais

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

AJAX no GASweb. Mas e afinal, para que usamos o AJAX? Nível - Avançado AJAX no GASweb Por: Pablo Hadler AJAX (Asynchronous Javascript and XML) foi criado com o princípio de ser uma maneira rápida e otimizada de podermos fazer requisições Web, sendo esta totalmente

Leia mais

SECRETARIA DE ESTADO DA FAZENDA DIRETORIA DE FISCALIZAÇÃO PEDIDO DE USO DE ECF MANUAL DO USUÁRIO VERSÃO 1.0

SECRETARIA DE ESTADO DA FAZENDA DIRETORIA DE FISCALIZAÇÃO PEDIDO DE USO DE ECF MANUAL DO USUÁRIO VERSÃO 1.0 SECRETARIA DE ESTADO DA FAZENDA DIRETORIA DE FISCALIZAÇÃO PEDIDO DE USO DE ECF MANUAL DO USUÁRIO VERSÃO 1.0 Belém Agosto - 2013 1 SUMÁRIO 1. Introdução... 3 2. Identificação Acesso ao Sistema... 4 3. Painel

Leia mais

Boletim Técnico. Esta melhoria depende de execução do update de base UPDWF002, conforme Procedimentos para Implementação.

Boletim Técnico. Esta melhoria depende de execução do update de base UPDWF002, conforme Procedimentos para Implementação. Filas de envio de e-mail do Workflow Produto : Microsiga Protheus Workflow Versão 10 Chamado : TEUEHH Data da publicação : 05/03/12 País(es) : Todos Banco(s) de Dados : Todos Esta melhoria depende de execução

Leia mais

7. Recursos PHP para a Internet

7. Recursos PHP para a Internet 7. Recursos PHP para a Internet Protocolo HTTP. Na aula passada vimos um script simples de autenticação de usuários. Neste script foi usado o tag META para passar uma URL ao servidor web. A linguagem PHP

Leia mais

Guia de Atualização TOTVS Segurança e Acesso 11.6

Guia de Atualização TOTVS Segurança e Acesso 11.6 04/2014 Sumário 1 Prefácio... 3 1.2 Finalidade... 3 1.3 Público Alvo... 3 1.4 Organização deste Guia... 3 1.5 Documentações Importantes... 3 2 Atualização... 4 2.1 Executando o Updater de Atualização...

Leia mais

Software e Serviços MANUAL DE HOMOLOGAÇÃO WEB SERVICE X SISTEMA DE AUTOMAÇÃO COMERCIAL

Software e Serviços MANUAL DE HOMOLOGAÇÃO WEB SERVICE X SISTEMA DE AUTOMAÇÃO COMERCIAL MANUAL DE HOMOLOGAÇÃO WEB SERVICE X SISTEMA DE AUTOMAÇÃO COMERCIAL CONSIDERAÇÕES INICIAIS Este manual tem como objetivo propiciar a integração do SISTEMA DE AUTOMAÇÃO COMERCIAL junto as ADMINISTRADORAS

Leia mais

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo:

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo: Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

Gestão inteligente de documentos eletrônicos

Gestão inteligente de documentos eletrônicos Gestão inteligente de documentos eletrônicos MANUAL DE UTILIZAÇÃO VISÃO DE EMPRESAS VISÃO EMPRESAS - USUÁRIOS (OVERVIEW) No ELDOC, o perfil de EMPRESA refere-se aos usuários com papel operacional. São

Leia mais

Módulo Publicações Publicações On Line. Módulo Publicações

Módulo Publicações Publicações On Line. Módulo Publicações Módulo Publicações Elaborado por: Julio Cesar Cavalheiro PÁG. 1/8 Índice 1. Objetivo... 3 2. Parametrização... 3 3. Baixando as Publicações... 4 4. Atribuindo processos aos Dados Baixados... 5 5. Status

Leia mais

Release Notes. [Dezembro/2013]

Release Notes. [Dezembro/2013] [Dezembro/2013] Sumário 1. Sumário Sumário... 2 Prefácio... 3 1. Implementações... 4 1.1. Parâmetros... 4 1.2. Relatórios... 4 1.3. Compras... 4 1.4. Estoque... 5 1.5. Faturamento... 5 1.6. Financeiro...

Leia mais

Ajax Asynchronous JavaScript and Xml

Ajax Asynchronous JavaScript and Xml Ajax Asynchronous JavaScript and Xml Ajax permite construir aplicações Web mais interativas, responsivas, e fáceis de usar que aplicações Web tradicionais. Numa aplicação Web tradicional quando se prime

Leia mais

Instituto Federal do Sertão-PE. Curso de PHP. Professor: Felipe Correia

Instituto Federal do Sertão-PE. Curso de PHP. Professor: Felipe Correia Instituto Federal do Sertão-PE Curso de PHP Professor: Felipe Correia Conteúdo Parte I Parte II Introdução Funções de strings Instalação Constantes Sintaxe Operadores Variáveis if else elseif Echo/Print

Leia mais

Manual de Envio de Torpedos SMS Comtele. Introdução... 02. 1.Cadastrar um Grupo... 02. 2.Inserir ou Importar Contatos... 06. 2.1 Ordem de envio...

Manual de Envio de Torpedos SMS Comtele. Introdução... 02. 1.Cadastrar um Grupo... 02. 2.Inserir ou Importar Contatos... 06. 2.1 Ordem de envio... Manual de Envio de Torpedos SMS Comtele Índice Introdução... 02 1.Cadastrar um Grupo... 02 2.Inserir ou Importar Contatos... 06 2.1 Ordem de envio... 08 3.Criar e Enviar uma Mensagens... 12 4. Salvando

Leia mais

Lidando de Forma Eficiente com Validações Locais de Objetos

Lidando de Forma Eficiente com Validações Locais de Objetos Lidando de Forma Eficiente com Validações Locais de Objetos Aprenda a construir um mini-framework para validar objetos locais sem afetar a complexidade do código. Autor Paulo César M. N. A. Coutinho (pcmnac@gmail.com):

Leia mais

Escrito por Neri Neitzke Qua, 25 de Junho de 2014 14:51 - Última atualização Qua, 25 de Junho de 2014 14:54

Escrito por Neri Neitzke Qua, 25 de Junho de 2014 14:51 - Última atualização Qua, 25 de Junho de 2014 14:54 Java para Web 4, aprenda criar um sistema para web usando MVC (Model View Controller), DAO, JSTL, Custom Tags, HTML5, JavaScript, CSS3, Eclipse, Netbeans, postgresql powerdesigner. São 159 videoaulas em

Leia mais

Curso Avançado Sistema EMBI

Curso Avançado Sistema EMBI Curso Avançado Sistema EMBI Módulo Atendentes e Administradores Todos os direitos reservados. Nenhuma parte deste trabalho pode ser reproduzida em qualquer forma por qualquer meio gráfico, eletrônico ou

Leia mais

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. JavaScript

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. JavaScript Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Universidade Federal do Espírito Santo CCA UFES JavaScript Desenvolvimento de Sistemas para WEB Site:

Leia mais

Nota de aplicação: Desenvolvimento de Páginas no PO9900 - WebGate

Nota de aplicação: Desenvolvimento de Páginas no PO9900 - WebGate Nota de aplicação NAP080 Desenvolvimento de Páginas no PO9900 - WebGate Altus Sistemas de Informática S.A. Página: 1 Sumário 1. Introdução...3 1.1 Páginas do WebGate... 3 2. Árvore de Navegação...3 3.

Leia mais

Boletim Técnico. Produto : Microsiga Protheus Livros Fiscais Versão 11 Data da publicação : 02/05/13. País(es) : Brasil Banco(s) de Dados : Todos

Boletim Técnico. Produto : Microsiga Protheus Livros Fiscais Versão 11 Data da publicação : 02/05/13. País(es) : Brasil Banco(s) de Dados : Todos RECOPI Reconhecimento e Controle do Produto : Microsiga Protheus Livros Fiscais Versão 11 Data da publicação : 02/05/13 País(es) : Brasil Banco(s) de Dados : Todos Chamado : THDHX0 Esta melhoria depende

Leia mais

Guia de Consulta Rápida ASP. Rubens Prates. Novatec Editora. www.novateceditora.com.br

Guia de Consulta Rápida ASP. Rubens Prates. Novatec Editora. www.novateceditora.com.br Guia de Consulta Rápida ASP Rubens Prates Novatec Editora www.novateceditora.com.br Guia de Consulta Rápida ASP de Rubens Prates Copyright@2000 da Novatec Editora Ltda. Todos os direitos reservados. É

Leia mais

Programação para web JavaScript

Programação para web JavaScript Programação para web JavaScript Professor: Harlley Lima E-mail: harlley@decom.cefetmg.br Departamento de Computação Centro Federal de Educação Tecnológica de Minas Gerais Belo Horizonte, 4 de maio 2016

Leia mais

Introdução à Tecnologia Web

Introdução à Tecnologia Web Introdução à Tecnologia Web JavaScript Sintaxe da Linguagem: Delimitadores e etc Profª MSc. Elizabete Munzlinger JavaScript Sintaxe da Linguagem Índice 1 SINTAXE DA LINGUAGEM... 2 1.1 Delimitadores de

Leia mais

Boletim Técnico. : 26/12/2013 Data da revisão : 02/01/14 Banco(s) de Dados

Boletim Técnico. : 26/12/2013 Data da revisão : 02/01/14 Banco(s) de Dados Integração GFE X TMS Produto : Data da criação País(es) : Todos Microsiga Protheus SIGAGFE, Gestão de Frete Embarcador P11 Chamado : M_GFE002/1830 : 26/12/2013 Data da revisão : 02/01/14 Banco(s) de Dados

Leia mais

MANUAL AGENDADOR DE TAREFAS LOGIX

MANUAL AGENDADOR DE TAREFAS LOGIX Outubro 2011 rev. 01 MANUAL AGENDADOR DE TAREFAS LOGIX Elaboração: Rubens Dos Santos Filho Framework rubens.santos@totvs.com.br Objetivo Este documento tem como objetivo relatar a funcionalidade de agendamento

Leia mais