quinta-feira, 30 de maio de 2013

TOTVS - RM NUCLEUS: Campo Municipio

TOTVS - RM NUCLEUS: Campo Municipio 
por Wagner Aparecido Miranda - W2R Consultoria e Sistemas 
Sub-Processo: Movimento

Campo “Município” não exibido em movimento.
Causas
Movimento não se encontra parametrizado para utilizar processo de Escrituração.
Solução
  • Acessar | Opções | Parâmetros | RMNucleus | e editar o Tipo de Movimento desejado;
  • Avançar a etapa | Fis - Escrituração | e marcar o parâmetro “Gerar Escrituração”.

Obs.: Marcando este parâmetro campo “Município” será exibido automaticamente em aba | Identificação | Integração | Fiscal |.

TOTVS - RM NUCLEUS: TXMOVCFX

TOTVS - RM NUCLEUS: TXMOVCFX
por Wagner Aparecido Miranda - W2R Consultoria e Sistemas 
Sub-Processo: Compras - Movimentação


Ao tentar incluir um movimento é apresentada uma das seguintes mensagens:
“Já Existe Nota do Emitente com este Número e Série. Verifique os parâmetros numeração desta série.” ou
clip_image002
Causas
Movimento a ser incluso possui os dados que compõe a chave TXMOVCFX já existentes em base de dados. São os campos: CODCOLIGADA, SERIE, NUMEROMOV, CODFILIAL, CODCOLCFOAUX, CODCFOAUX, CODTDO, CODCFO.
Solução
Caso o tipo de movimento esteja parametrizado como “Mostra” para o campo “Edita numeração”:
  1. Verificar série do movimento a ser gerado.
  2. Acessar | Opções | Parâmetros | RMNucleus | e selecionar o processo onde o tipo de movimento utilizado está configurado.
ü Avançar a etapa | Mov. Identificação | e verificar se o tipo de movimento gera numeração pela filial ou Geral analisando o campo “Buscar número em”.
  1. Acessar | Opções | Parâmetros | RMNucleus | Definições Gerais | Numeração de movimento | Numero principal | e selecionar o tipo de geração de numeração que o tipo de movimento utiliza e avançar.
ü No campo série, digite a série utilizada no movimento a ser incluso.
ü Caso a numeração do movimento seja gerada por filial na grid exibida após digitar a série localize a filial do movimento a ser incluso e verifique a coluna “Valor” referente a filial do movimento.
ü Caso a numeração do movimento seja geral ao digitar a série do movimento verificar o valor exibido para o campo “Número”.
Obs.: O número exibido ao digitar a série do movimento corresponde ao número do último movimento incluso no sistema que gere numeração automaticamente.
  1. Executar a consulta abaixo para verificar a última numeração inclusa no sistema para essa série.
SELECT MAX(NUMEROMOV) FROM TMOV
WHERE SERIE = 'X'
AND CODFILIAL = Y
AND CODCOLIGADA = 'Z'
Obs.: Onde X é a serie verificada no passo 1, Y é a filial e Z é a coligada em que o movimento esta sendo incluso.
A linha AND CODFILIAL = Y, só será informada se a numeração do movimento for por FILIAL.
  1. Verifique o número exibido tanto nos parâmetros quanto na sentença executada.
ü Caso o número retornado na sentença SQL corresponda a uma numeração maior que o verificado nos parâmetros do sistema, iguale os parâmetros do sistema com o valor retornado na sentença.
Obs.: Caso o tipo de movimento for:
· De entrada e seja parametrizado como Emitente = Empresa e Destinatário = Empresa através da etapa Mov – Emitente/Destinatário
· O tipo de movimento for de saída
Favor executar a sentença abaixo:
Movimento de saída e movimento de entrada com Emitente/Destinatário = Empresa/Empresa:
SELECT * FROM TMOV WHERE NUMEROMOV = X
AND CODCOLIGADA = Y
AND SERIE = Z
AND CODFILIAL = A
AND CODCOLCFOAUX = Y
AND CODCFOAUX LIKE ‘%CXXX%’
AND CODTDO = C
Movimento de entrada:
SELECT * FROM TMOV WHERE NUMEROMOV = X
AND CODCOLIGADA = Y
AND SERIE = Z
AND CODFILIAL = A
AND CODCOLCFOAUX = Y
AND CODCFOAUX LIKE ‘E’
AND CODTDO = C
Onde X = numero verificado no passo 3, Y = Coligada, Z = série do movimento, A = Filial, C = Tipo de documento e E = Código do Cli/For.
O resultado obtido indicará se o movimento a ser incluso existe ou não em sua base de dados. Caso a sentença retorne alguma linha favor alterar o valor informado nos parâmetros somando + 1.
Caso o tipo de movimento esteja parametrizado como “Edita” para o campo “Edita numeração”, e a sentença retorne alguma linha favor alterar alguma informação no movimento.
Ex: Serie ou Tipo de documento ou Numero do movimento (caso for possível).

TOTVS - RM AGILIS: Pesquisa de Satisfação

TOTVS - RM AGILIS: Pesquisa de Satisfação
por Wagner Aparecido Miranda - W2R Consultoria e Sistemas 
Sub-Processo: Configuração da Pesquisa de Satisfação


Para configurar os parâmetros para Pesquisa e Satisfação acesse o menu: Opções | Parâmetros | RM Agilis

No campo Endereço para Pesquisa de Satisfação apontar o endereço do portal. Por exemplo: HTTP://localhost/.
Observação: É necessário ter a barra no final do link.

Nos campos Caixa postal, colocar um email correspondente a reply do cliente e armazenamento das mensagens enviadas.
clip_image002

Feito isso é necessário alterar o Alias dentro do arquivo Web.config, que está localizado na pasta C:\CorporeRM\Corpore.Net.
Informe o Alias desejado na linha: <add key= “ServiceAlias” value=“SQL.CONECTOR.110” />
clip_image003

Para que seja enviada a pesquisa, o seu cliente deverá ser obrigatoriamente cadastrado como CLI/FOR e possuir o contato cadastrado com um email válido. O email é enviado somente para o contato do cliente que estiver informado no atendimento
A pesquisa somente será enviada quando o status do atendimento for “Concluido Respondido” caso contrário para outros status não será enviada a pesquisa.

Os campos relativos à pesquisa de satisfação, nas versões 11.40 e anteriores não são customizáveis, ou seja, são campos padrões do sistema e não é possível sua personalização.

TOTVS - RM AGILIS: Aprovação de Movimento - RM Núcleus

Workflow: RM AGILIS: Aprovação de Movimentos - RM Nucleus

por Wagner Aparecido Miranda - W2R Consultoria e Sistemas 
Integração: TOTVS Gestão de Estoques, Compras e Faturamento e TOTVS Relacionamento com Cliente

Através da integração do TOTVS Relacionamento com Cliente (RM Agilis) com o Cliente com o TOTVS Gestão de Estoques, Compras e Faturamente (RM Nucleus) é possível realizar aprovações de movimentos, como: requisições, cotações ordens de compra e etc, por Workflow (Fluxo de Trabalho).

Descrição do Processo
O movimento inicial é criado no RM Nucleus e fica com status Em Aprovação por Workflow. No mesmo momento, automaticamente, é criado um atendimento no RM Agilis, dando início ao Fluxo de Trabalho que vai da geração da requisição até a aprovação final. O movimento que dá origem ao processo só é liberado quando o atendimento relacionado fica com status Concluído Confirmado ou Cancelado.

Parametrização Necessária

1. Criar um atendente com perfil de Supervisor / Gerente ou similar para ser vinculado ao usuário aprovador das Requisições. Fique atento a este perfil, pois este deve ter as devidas permissões de acesso às funcionalidades do TOTVS RM Portal, principalmente ao bloco CRM, módulo que será utilizado para realizar as aprovações.
SNAGHTML581a205

2. Crie um tipo de atendimento em Cadastros | Atendimentos | Tipos de Atendimentos. Preencha os campos necessários e clique no botão Salvar;
SNAGHTMLceafd45

3. Crie um grupo de atendimento e vincule o tipo de atendimento criado a esse grupo;
SNAGHTML323fe2c

4. Agora clique no botão Anexos e selecione a opção Tipo de Atendimento do Grupo de Atendimento e adicione o Tipo de Atendimento criado na etapa anterior;
SNAGHTML32c00ea

Fórmulas Utilizadas nas Etapas

Crie as fórmulas que serão utilizadas nas Etapas do Tipo de Atendimento conforme estrutura a seguir:
Código       Descrição da Fórmula                                  
RMV001     Passar para o Chefe Imediato (Aprovador)
DECL CODPROXCHEFE;
SETVAR(CODPROXCHEFE, RETPROXIMOCHEFESECAOLABORE ( 1 ));
SE CODPROXCHEFE = '-1' ENTAO
AVANCARETAPAATENDIMENTO ( 30 )
SENAO
CODPROXCHEFE
FIMSE

Código      Descrição da Fórmula                                   
RMV002    Concluir Requisição (Aprovar)
CONCLUIDOCONFIRMADO

Código      Descrição da Fórmula                                   

RMV003    Cancelar Requisição (Reprovar)
CANCELAR



Criando as Etapas do Tipo de Atendimento

1. Acesse: Cadastros | Atendimentos | Tipos de Atendimentos | Anexo: Etapas e crie as Etapas necessárias para este Tipo de Atendimento. Fique atento para marcar o campo Primeira etapa de um possível fluxo na primeira Etapa, pois isto determinará que esta será a etapa que inicializará o fluxo. Veja as imagens abaixo:
Etapa 1
SNAGHTML342d5a7

Etapa 2
SNAGHTML3446039

Etapa 3
SNAGHTML345c7f1

Criando os Fluxos de Etapas

1. Acesse: Cadastros | Atendimentos | Tipos de Atendimentos | Anexo: Fluxo de Etapas e crie os Fluxos necessários para este Tipo de Atendimento. Veja as imagens abaixo:
Fluxo de Etapas 1
SNAGHTML34a0c9e

Fluxo de Etapas 2
SNAGHTML34ae791

Parametrizando o TOTVS Gestão de Estoque, Compras e Faturamento

1. Acessar o RM Nucleus e parametrizar o tipo de movimento desejado com as informações necessárias para integração com o Workflow do RM Agilis.
2. Acesse o menu: Opções | Parâmetros | RM Nucleus, selecione o Tipo de Movimento desejado e clique no botão Editar:

Apontando para cimaAtenção
  1. O campo em destaque na imagem abaixo deverá ser habilitado apenas se o usuário desejar ter acesso aos movimentos do RM Nucleus através do TOTVS RM Portal para manutenção (inclusão / alteração / exclusão), pois esse parâmetro é incompatível com a utilização de Rateios nos Tipos de Movimentos; 
  2. Os usuários responsáveis pelas aprovações dos movimentos deverão ser cadastrados também como Atendentes no RM Agilis; 
  3. Os usuários reponsáveis pela inclusão dos movimentos no RM Nucleus para aprovação por Workflow no TOTVS RM Portal, também deverão ser Atendentes no RM Agilis. 
Parametrização RM Nucleus – Outros Dados
SNAGHTMLcf60e75

Parametrização RM Nucleus - Workflow
SNAGHTML3174ac5

Processos para Execução do Fluxo de Trabalho (Workflow)

1. Crie um movimento no RM Nucleus;
SNAGHTML2ef0388
Observe que o movimento criado fica com Status Movimento em Workflow para Aprovação até que este seja aprovado ou reprovado no RM Agilis ou Portal RM.
Utilize as ferramentas image para selecionar os movimentos por Staus (disponível na Visão de Movimentos), onde respectivamente são:
  • Aprovados por Workflow;
  • Não Aprovados por Workflow;
  • Em Aprovação por Workflow.
2. Após a criação do movimento no RM Nucleus, um Atendimento é automaticamente criado no RM Agilis e nele poderemos visualizar alguns dados seguindo os passos abaixo:
  • Acesse o menu: RM Agilis | Sistema | Atendimentos;
  • Execute o filtro desejado;
  • Selecione o atendente desejado no caixa Atendimentos de;
  • Edite o atendimento selecionado;
  • Acesse a pasta: Acompanhamento | Solicitação.
SNAGHTML305a2d3

3. Acesse o TOTVS RM Portal e no link Início –> CRM –> Atendimentos, marque o registro que deseja aprovar/reprovar e em seguida clique no link Processos –> Avançar Etapa.
SNAGHTML3191998

4. Agora escolha qual das opções (Aprovar ou Reprovar) deseja executar e clique no link OK.
SNAGHTML31b9e8f
É possível criar mais opções para o Fluxo de Trabalho além de Aprovar/Reprovar. Esta configuração deverá ser feita no RM Agilis | Cadastros | Atendimentos | Tipos de Atendimento | Anexo: Etapas.
Após conclusão do Processo de Aprovação, tendo como resultado final Aprovado, o tipo de movimento ficará liberado para manutenção, ou seja, será possível faturar o movimento para um outro Tipo de Movimento qualquer, conforme parametrização do aplicativo.
Caso o resultado do Processo de Aprovação, seja Reprovado, o tipo de movimento ficará bloqueado, não sendo possível faturá-lo para qualquer Tipo de Movimento.
Se um movimento associado ao Workflow, aprovado ou não, tiver algum dado alterado pelo usuário, o mesmo será novamente submetido ao Processo de Aprovação e seu Status será alterado paraMovimento em Workflow para Aprovação.
O usuário poderá enviar um movimento Não Aprovado para o Fluxo de Trabalho quantas vezes julgar necessário. Para isso ele deve selecionar os referidos movimentos e no botão Processos, escolher a opção Aprovação por Fluxo.

sábado, 25 de maio de 2013

Lendo XML com jQuery Ajax

AJAX + JQUERY + XML

Lendo XML com jQuery Ajax


A jQuery é a biblioteca JavaScript mais usada em aplicações web atualmente. Ela foi desenvolvida em 2006 por John Resig e é suportada por uma comunidade de desenvolvedores, além do time do projeto jQuery. Ela foi construída para ser leve, poder ser usada nos principais navegadores e ser compatível com a especificação CSS3.
Ela simplifica a maneira como acessar os elementos DOM, tornando mais fácil a navegação pelas páginas. A biblioteca possui poderosos recursos Ajax, manipulação de eventos e efeitos de animação,
permitindo um rápido desenvolvimento de aplicações web. Além disso, a jQuery permite a criação de plugins, o que possibilita aos desenvolvedores criar recursos poderosos com base no núcleo jQuery.
Por tudo isso você não pode ignorar a jQuery. Além do mais, ela permite utilizar muitos recursos em
suas aplicações web, tornando-a mais interativa e amigável ao usuário.
Atualmente, o jQuery está na versão 1.6.1 e você pode baixá-la aqui: http://jquery.com/.  Ela está disponível tanto no Visual Studio, quanto nas versões Express, quando você cria uma aplicação
web usando o template padrão (não o vazio).
A JQuery está incluída nos projetos ASP .NET Web Forms e também nos projetos ASP .NET MVC. A library Microsoft Ajax foi projetada para atrair desenvolvedores JQuery, e você pode mesclar plug-ins JQuery e controles de cliente Microsoft Ajax em sua aplicação.
Neste artigo, vou mostrar como utilizar jQuery AJAX em páginas ASP .NET para realizar algumas tarefas do dia a dia envolvendo controles ASP .NET. Vou mostrar, também, como ler uma fonte de dados XML usando jQuery AJAX.
Recursos usados nos exemplos do artigo:
  • Visual Web Developer 2010 Express Edition;
  • jquery-1.4.1.min.js, que já vem embutida com o projeto ASP .NET Web Application;
  • Navegadores:Internet Explorer 8.0, Firefox 3.6 e Chrome 9.0.

Usando jQUery na prática

1-Criando o projeto
Abra o Visual Web Developer 2010 Express Edition e no menu File-> New Project crie um novo
projeto usando a linguagem Visual Basic e o template ASP .NET Web Application com o nome jQuery_Ajax_XML. Clique no botão OK.
Após criar o projeto, se você observar a janela Solution Explorer, verá na estrutura do projeto ba pasta Script a biblioteca jQuery (jquery-1.4.1.min.js):
De forma geral, nas páginas .aspx dos nosso exemplos poderemos distinguir 3 seções:
  1. A declaração da biblioteca jQuery que iremos usar (tag <script src=”Scripts/jquery-1.4.1.js”…> (Estamos usando a biblioteca jQuery localmente na pasta Scripts);
  2. A declaração do código jQuery entre as tags <script type=”text/javascript”>;
  3. A declaração do estilo CSS usado na página na tag <style type=”text/css”>.
Para realizar a tarefa proposta usando jQuery Ajax, criaremos uma página .aspx no projeto da seguinte forma :
  • No menu Project -> Add New Item e selecione o template Web Form;
  • Informe o nome da página e clique no botão Add;
  • Vamos remover também do projeto os arquivos .aspx e a Master Page do projeto clicando com o botão direito do mouse sobre o arquivo e clicando em Delete.
Obs: Se você estiver usando o VS 2008, deverá ter aplicado o Service Pack 1 e a correção KB958502 http://archive.msdn.microsoft.com/KB958502 para poder habilitar o intellisense do jQuery.
2 -
Definindo a fonte de dados XML
Vamos definir como nossa fonte de dados XML o arquivo livros.xml com o seguinte conteúdo:
<?xml version="1.0" encoding="utf-8" ?>
<LivroLista>
<Livro>
<Titulo>O Alquimista</Titulo>
<Autor>Paulo Coelho</Autor>
<Genero>Ficcao</Genero>
</Livro>
<Livro>
<Titulo>A moreninha</Titulo>
<Autor>Machado de Assis</Autor>
<Genero>Romance</Genero>
</Livro>
<Livro>
<Titulo>David Copperfield</Titulo>
<Autor>Charles Dickens</Autor>
<Genero>Classico</Genero>
</Livro>
<Livro>
<Titulo>Sidarta</Titulo>
<Autor>Herman Hesse</Autor>
<Genero>Ficcao</Genero>
</Livro>
<Livro>
<Titulo>ADO Banco de dados na web</Titulo>
<Autor>Jose Carlos Macoratti</Autor>
<Genero>Informatica</Genero>
</Livro>
</LivroLista>
Vamos colocar o arquivo livros.xml no projeto por questão de simplicidade, mas poderia colocar em qualquer lugar. Para isso, no menu Project -> Add Existing Item e selecione o arquivo livros.xml.
3 - Definindo a interface
Crie um novo web form chamado Default.aspx.
Inclua uma tabela HTML (menu Table->Insert Table) na página Default.aspx com uma coluna, conforme o seguinte leiaute:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="jQuery_Ajax_XML._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Lendo um arquivo XML com JQuery Ajax</title>
</head>
<body>
<form id="form1" runat="server">
   <div align="center">
       <fieldset style="width:400px;height:230px;">
        <table border="0" cellpadding="3" cellspacing="3">
           <tr><td colspan="2" class="style1">Arquivo XML</td></tr>
           <tr><td colspan="2">
              <div id="conteudotArea" align="left" />
           </td></tr>
         </table>
      </fieldset>
   </div>
</form>
</body>
</html>
A tag <fieldset> é usada para agrupar logicamente elementos em um formulário. Ela desenha uma caixa em torno dos elementos relacionados a ele. A tag também define uma tabela HTML com uma coluna e uma linha, na qual iremos exibir as informações do arquivo XML.
Definimos também uma <div> com id igual a mensagem que iremos usar como uma área para exibir o
arquivo XML: <div id=”conteudoArea”></div>

Definindo o script jQuery

Agora vamos definir o script jQuery para exibir o conteúdo da célula selecionada do GridView, conforme o código abaixo:
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
        $(document).ready(function () {
            $("#contentArea").append("<ul></ul>");
            $.ajax({
                type: "GET",
                url: "livros.xml",
                dataType: "xml",
                success: function (xml) {
                    $(xml).find('Livro').each(function () {
                        var sTitulo = $(this).find('Titulo').text();
                        var sAutor = $(this).find('Autor').text();
                        var sGenero = $(this).find('Genero').text();
                        $("<li></li>").html(sTitulo + ", " + sAutor + ", " + sGenero).appendTo("#contentArea ul");
                    });
                },
                error: function () {
                    alert("Ocorreu um erro inesperado durante o processamento.");
                }
            });
        });
</script>
No script jQuery definimos
o seguinte:
1- A função $(document).ready(function() { onde acrescentamos as tags que contêm a
lista não ordenada:
$("#contentArea").append("<ul></ul>");

2- Chamamos o método Ajax
$.ajax({

3- Definimos o tipo de requisição HTTP como GET:
type: "GET",

4- Especificamos a url para o documento XML : livros.xml
url: "livros.xml",

5- Definimos o tipo de dados da resposta (response):
dataType: "xml",

6- Definimos a função de retorno para a invocação de sucesso:
success: function (xml) {
7- Percorremos usando um laço cada nó LivroLista/Livro
no documento XML:
$(xml).find('Livro').each(function(){
8- Recupera o conteúdo das tags Titulo, Autor e Genero do arquivo XML:
var sTitulo = $(this).find('Titulo').text();

var sAutor = $(this).find('Autor').text();

var sGenero = $(this).find('Genero').text();

9 – Acrescentamos o conteúdo recuperado como um item da lista para a lista não ordenada no
formulário:
$("<li></li>").html(sTitulo + ", " + sAutor + ", " + sGenero).appendTo("#contentArea ul");
10- Define a função de retorno em
caso de erro:
error: function () {

alert("Ocorreu um erro inesperado durante o processamento.");
Executando o projeto iremos obter:
Dessa forma, vemos o conteúdo do arquivo livros.xml exibido na página ASP .NET através do recursos jQuery Ajax.
Pegue o projeto completo aqui:  Query_Ajax_XML.zip.
E:\Clientes\W2R\Internet\Site\xml\jQuery_Ajax_XML