Exportar dados para arquivo de tamanho fixo

Ola a todos,

Como meu primeiro post aqui, gostaria de lhes apresentar uma classe criada para facilitar nosso trabalho quando precisamos exportar dados para arquivos *.txt (tamanho fixo).

Esta classe trabalha como um buffer, armazenando as informações em seu objeto, construindo todo e texto e inserindo-o no arquivo de uma unica vez.
Existem outras funcionalidades dentro da classe, mas acredito que a mesma esteja bem documentada.

Segue um exemplo da classe em uso:

static void ExportInvoices_JAN(Args _args)
{
    #File
 
    CustInvoiceJour custInvoiceJour;
    CustTable       custTable;
 
    StringBuilder   strBuilder = new StringBuilder();
    TextIO          textIO     = new TextIO("C:\\Teste_StringBuild.txt",#io_write);
 
    Counter         counterLine = 1;
    ;
 
    while
    select custInvoiceJour
        index InvoiceNumIdx
        where custInvoiceJour.InvoiceDate == mkdate(1,1,2011) &&
                 custInvoiceJour.InvoiceDate == mkdate(31,1,2011)
    join custTable
        where custTable.AccountNum == custInvoiceJour.InvoiceAccount
    {
        strBuilder.insertField(custTable.AccountNum,counterLine,1,20);
        strBuilder.insertField(custTable.Name,counterLine,21,60);
        strBuilder.insertField(custInvoiceJour.InvoiceId,counterLine,81,20);
        strBuilder.insertField(custInvoiceJour.InvoiceDate,counterLine,101,10);
        strBuilder.insertField(custInvoiceJour.LedgerVoucher,counterLine,111,20);
 
        counterLine++;
    }
 
    textIO.write(strBuilder.getText());
}

A classe se encontra aqui.

Espero que tenham gostado.

Abs,
Anderson Joyle





Verificar saldo em aberto de um cliente

Pessoal,
Estava dando manutenção em um código e o código tratava de verificar o saldo em aberto do cliente. Na situação em questão, o desenvolvedor fazia um loop em CustTrans, dentro deste loop ele fazia outro na CustTransOpen e ia somando uma variável do tipo Amount para recuperar o valor das transações abertas em questão.

O grande problema ai é a performance, sem contar que a legibilidade do código vai para o espaço.

Esta simples situação pode ser resolvida assim:

1
2
3
4
5
6
7
8
static void getCustVendTransBalance(Args _args)
{
    Amount                  openTransactions;
    ;
    openTransactions    = TmpCustVendTrans::custTransBalanceCurrency('Conta do Cliente').AmountCur;
    print openTransactions;
    pause;
}

Fácil né!?

Abraço,
Pichler





GAP Analysis

Pessoal,
Recentemente a empresa que trabalho (MasterSAF) foi para o mercado para fazer novas aquisições e com isso surgiram novas demandas, entre elas, fazer Análise de GAP nas novas empresas adquiridas!

Existem milhares de formas de se fazer, milhares de formas de se planilhar, fazer relatórios, acompanhamentos e etc…

Mas o que é uma GAP Analysis?
Fazer uma Análise de GAPs é um dos caminhos para determinar qual o próximo passo/ação em um projeto ou em melhorar o processo de alguma tarefa, fazer ‘como deveria ser’. A Análise de GAP é uma ferramenta que gerentes de projetos, times que visam melhorar processos e até mesmo individualmente fazem uso para ver onde uma pessoa/companhia estão quando comparadas com aonde a pessoa/companhia gostariam de estar.

A idéia se resume em fazer um levantamento das ‘lacunas’ (sejam técnicas, funcionais, processos e etc…) que é representado por “Situação Atual”, aplicar um ponto de referência que é representado por “onde quero chegar” e traçar os planos.

Download: Gap Analysis Report Template.

Boa Sorte!

Referência 1: http://www.gestaodetempo.com.br/
Referência 2: http://www.brighthub.com/office/project-management/media/p/75794.aspx

[]s
Pichler





Anexar ocorrências a registros no DAX

Pessoal,
Já aconteceu algumas vezes, de eu ir visitar alguma empresa e me contarem que os ‘consultores’ estavam desenvolvendo um sistema ‘super legal’ de ocorrências para determinadas situações, como por exemplo:

  • Anexar comentários a ordens de venda;
  • Anexar histórico de cobrança em títulos abertos / vencidos;
  • Anexar e-mail que o cliente enviou sobre determinado assunto em uma Ordem de Venda ou Compra ou até mesmo no Cliente/Fornecedor;
  • Registrar ocorrências diversas;
  • Vale lembrar, que o AX já tem isto de forma nativa, ou seja, qualquer informação que você queira anexar a qualquer registro no AX, você não precisa fazer nada além de clicar no Gerenciador de Documentos e publicar um Arquivo, um Documento ou uma Nota.

    Na postagem anterior a esta, eu mostro exatamente como gerar documentos através do gerenciador de arquivos, onde um modelo é preenchido e etc… Para saber mais a respeito, veja o post: Gerar documentos baseados em templates do Word no DAX.

    Uma utilização bem legal para a funcionalidade “Adicionar Notas” que tive que configurar e desenvolver foi a seguinte:

  • O departamento de cobranças entra em contato com o cliente para saber porque o titulo não foi pago na data;
  • Faz a negociação e tudo mais que der para fazer;
  • Em um segundo momento, o gerente de contas responsável pela conta é envolvido e entra em contato com o cliente;
  • O Gerente de Contas verifica no relatório de clientes em atraso (desenvolvido em reporting server) que aquele cliente está atrasado e que já houve interação com o departamento de cobranças;
  • Visualiza essas anotações on-line e pode conversar com o cliente para saber a melhor forma de resolver o problema.
  • Por bastante simples que esta situação possa parecer, tem trazido bons resultados para a empresa que desenvolvi, dando mais agilidade ao processo e deixando um número maior de pessoas devidamente informadas.

    Abração,
    Pichler





    Gerar documentos baseados em templates do Word no DAX

    Para que este ‘how to’ funcione, é necessário que tenha realizado os passos descritos aqui: http://www.daxbr.com.br/?p=1881.

    Caros,
    Uma funcionalidade que sempre ouvi muito pouco a respeito e que muitas vezes é bastante útil é a funcionalidade onde você define um modelo de documento no WORD, com indicadores e usa o AX para preenchê-lo, um exemplo simples e talvez de pouco uso, seria o de preencher um orçamento, baseado em uma Ordem de Venda e enviá-la para o seu cliente com todo um texto padrão, imagens, cabeçalho e etc…

    Vou fazer um exemplo simples, daí em diante é com vocês!

    O primeiro passo é criar um documento word com os bookmarks ou indicadores, você pode fazer o download do modelo que criei clicando aqui: daxbrOrçamento.dot. Para ver os bookmarks que eu criei, basta abrir o documento, ir até a aba Inserir e procurar por Indicador ou Bookmarks, isto abrirá os bookmarks disponíveis e com um click duplo no bookmark você pode ver onde ele está localizado

    O próximo passo é ir até o AX e configurá-lo para que use este template e também o preencha, a configuração deve ser feita em: Básico -> Configuração -> Gerenciamento de Documentos -> Tipos de documento.

    Selecione o tipo Documento e clique em Opções.

    Em opções, você deve especificar a tabela principal do seu documento, que no nosso caso é SalesTable, e apontar o campo Arquivo de modelo para o arquivo daxbrOrcamento.dot e salvar.

    Após salvar, vá para aba Campos e ai vamos configurar os campos como na imagem abaixo:

    O que fizemos foi dizer que determinados campos das tabelas SalesTable, InventTable e SalesLine devem preencher X campos de um novo documento, usando como modelo o documento daxbrOrcamento.dot.

    Agora vamos ao uso: Vá até o formulário de ordens de venda, selecione uma ordem de venda qualquer, clique no botão “Manuseio de Documento” , quando o formulário de manuseio de documento abrir, vá até o botão Novo -> Documento e automaticamente o AX abrirá o documento baseado no template e fará o preenchimento com os dados da ordem de venda atual (o arquivo estará no local apontado no arquivo morto).

    A saída deverá ser parecido com esta:

    Obs.: Quem for utilizar este recurso, algumas vezes pode se deparar com o problema de multiplas linhas, como nos items da ordem de venda, para isso, navegue até http://blogs.msdn.com/b/emeadaxsupport/archive/2011/01/07/multiline-fields-in-ax-document-management.aspx e veja a solução proposta pelo Daniel Durrer para corrigir o problema.

    Duvidas? Mandem mensagens!

    []s
    Pichler





    Tags / Categorias

    RSS



    Arquivo

    Dynamics Community