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
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
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
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:
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:
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
16 Jan 2011
Posted by: Ricardo Pichler in: X++
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