Formatar uma Data (Ano com 4 dígitos)

28 10 2010

O NAV mostra por defeito, num campo de data (por exemplo num report), o dia, mês e ano com 2 caracteres, mas se precisarmos que no ano mostre os 4 dígitos necessitamos de recorrer a esta função:

FORMAT(TODAY,0,'<Closing><Day,2>-<Month,2>-<Year4>')

Mais uma vez obrigado, GRANDE!





Utilizar o PADSTR

28 10 2010

Nestes dias, tive a necessidade de preencher caracteres a uma string. Queria importar registos em que o campo “Nº Cliente” do Excel vinha com um tamanho máx. de 2,3 caracteres. No entanto, na base de dados, os nºs de clientes tinham sempre 5 caracteres. Desta forma, pensei logo nesta solução:

CASE STRLEN(Cliente) OF
1: Cliente := '0000'+Cliente;
2: Cliente := '000'+Cliente;
3: Cliente := '00'+Cliente;
4: Cliente := '0'+Cliente;
5: Cliente := Cliente;
END;

Assim resolvi a questão. Dias mais tarde, em conversa com um colega ele confronto-me com esta pergunta:

“E se o nº for com 20 caracteres?”

Pronto, esta solução não é viável, porque tinha que criar muitas linhas de código. Então encontrei esta função no NAV, o PADSTR.

Assim estas linhas todas de código seriam subtituídas apenas por uma:
Cliente := PADSTR('00000',5-STRLEN(Cliente))+Cliente;

Obrigado, companheiro GRANDE!






Casas decimais em Text numa TextBox

24 02 2010

Se num Report, necessitarmos de incluir um texto numa TextBox que inclua um valor de um decimal, e pretendermos que esse decimal tenha sempre casas decimais, então:

Text001 – O valor da factura é %1 EUR.

Na propriedade SourceExpr da TextBox colocar:

STRSUBSTNO(Text001,FORMAT(Valor,0,'<SIGN><INTEGER THOUSAND><DECIMALS,3>’))

Então caso:

Valor = 5 EUR então Text001 – O valor da factura é 5,00 EUR.

Valor = 5,1 EUR então Text001 – O valor da factura é 5,10 EUR.

Valor = 5,102 EUR então Text001 – O valor da factura é 5,10 EUR.






Microsoft Dynamics NAV Roadmap

24 02 2010

Dynamics NAV Roadmap





Ordenar um Array

24 02 2010

Numa codeunit por exemplo colocar o seguinte código C/AL para ordenar um vector (array):

OnRun()
meuTexto[1] := 'N6543';
meuTexto[2] := 'A8264';
meuTexto[3] := 'V1983';
meuTexto[4] := 'I8709';
meuTexto[5] := 'T6154';
meuTexto[6] := 'U9061';
meuTexto[7] := 'G6519';
meuTexto[8] := 'A6532';


OrdenaArrayDeTexto(meuTexto);


FOR i := 1 TO ARRAYLEN(meuTexto) DO BEGIN
  IF meuTexto[i] '' THEN
    MESSAGE(meuTexto[i]);
END;

Função para ordenar o array de texto:

OrdenaArrayDeTexto(VAR ParamArray : ARRAY [999] OF Text[30])
COMPRESSARRAY(ParamArray);
FOR i := 1 TO ARRAYLEN(ParamArray) DO BEGIN
  IF ParamArray[i] = '' THEN
    Finish := i;
END;


REPEAT
  ToExit := TRUE;
  FOR i := 1 TO (Finish - 1) DO BEGIN
    IF ParamArray[i] > ParamArray[i + 1] THEN BEGIN
      Swap(ParamArray[i], ParamArray[i + 1]);
      ToExit := FALSE;
    END;
  END;
  Finish -= 1;
UNTIL ToExit;





Como abrir um form por defeito sem ID

24 02 2010

Sabia que em C/AL pode abrir o formulário por defeito de uma tabela sem que se saiba qual o ID desse FORM? Para isso é apenas necessário utilizar a função FORM.RUNMODAL (Number [, Record] [, Field]) sendo que só precisa de colocar o valor zero, em vez do nº do formulário, e em seguida o nome do variavel do registo da tabela.

Por exemplo:

Se usar a variável recProduto do tipo record e subtipo Item (Produto):

recProduto.SETFILTER("Gen. Prod. Posting Group", 'NACIONAL');
FORM.RUNMODAL(0,recProduto);





A História do Dynamics NAV

19 02 2010

Um powerpoint resumido com história do Dynamics NAV desde a sua origem até chegar à Microsoft.

Download





Como Calcular o Ano Fiscal Corrente

19 02 2010

No Navision, não existe nenhuma função que retorne o ano fiscal de acordo com o configurado na tabela “Período Contabilístico”.
No entanto, existe este código para devolver o Ano Fiscal Corrente baseado no período contabilístico:

Defina uma variável AccountingPeriod do tipo Record da tabela 50.
Defina as variáveis Date1 e Date2 do tipo Date.

O código é o seguinte:
AccountingPeriod.RESET;
AccountingPeriod.SETRANGE(”New Fiscal Year”,TRUE);
AccountingPeriod.”Starting Date” := WORKDATE;
AccountingPeriod.FIND(’=<’);
Date1 := AccountingPeriod.”Starting Date”;
IF AccountingPeriod.NEXT = 0 THEN
  Date2 := 31129999D
ELSE
  Date2 := AccountingPeriod.”Starting Date” - 1;





Guia de Hardware para Dynamics NAV

12 02 2010

Um documento da autoria de Ramcel M. Gatchalian and Patrice Dupont-Roc do suporte Microsoft Dynamics™ NAV.

O objectivo deste documento é informar os clientes e parceiros do hardware adequado e recomendado para apoiar o Microsoft Dynamics ™ NAV para um máximo de 250 utilizadores.

Download





Sugestão Data Expiração em Lotes

6 01 2010

Agora que se iniciou o novo ano de 2010, as  empresas tem a necessidade de actualizar o seu inventário (contagem de stock).

Para ajudar neste procedimento existem várias ferramentas no Dynamics NAV (Diário de Produto, Diários Reclassificação de Produto, Diários Inventário Físico, etc…) que todas tem a possibilidade de especificarmos o rastreio dos produtos/lotes.

Um produto que requer rastreio/lotes e que tenha um valor no campo “Cálculo Expiração”, deverá obrigatoriamente ter uma data de expiração quando o lote é especificado. Por isso, no Dynamics NAV, existe uma funcionalidade que inteligentemente preenche o campo “Data de Expiração”, sempre que utilize um lote de um produto numa determinada linha de diário (em rastreio de produto). No entanto, é necessário que o lote em causa esteja com alguma quantidade pendente no mov. produto.

Leia o resto deste artigo »