Seattle testdrive

Came here to Seattle last Thursday on a holiday with my family. Nice practise for the MVP Global Summit next month.

It will be exciting to visit Microsoft headquarters for the first time and see what is on the horizon. Will see some of you there…

Unexpected downtime

The web site is up again after an unexpected downtime.  I lost the electricity in my home town for a short time and at the same time I was driving south to Reykjavík for work.  I needed my wife to turn on the web server computer in her launch break and that is the first time she has to do that.  This is the first downtime I have had on my web site this year.

But, you know what ?  Being a Microsoft MVP means I get benefits on Windows Azure and can move my web site to a place that will never fail.  I already moved my @dynamics.is mail to outlook.com.

 

 

NAV 2013 R2 is available for download in 20 localized versions

Last Monday Microsoft announced the release of a new major version of Dynamics NAV.

On the product download page I am happy to see that my IS localized version is available.  It is nice to see that and a big change from the last release where the IS version was not available until May 1st this year, seven months after the global release date.

NAV2013R2_IS

A PDF document is supplied with highlighted new features and download links for all versions.

Microsoft Dynamics NAV 2013 R2 download links
AU-Australia Download
AT-Austria Download
BE-Belgium Download
CA-Canada Download
DK-Denmark Download
FI-Finland Download
FR-France Download
DE-Germany Download
IS – Iceland Download
IN-India Download
IT-Italy Download
MX-Mexico Download
NL-Netherlands Download
NZ-New Zealand Download
NO-Norway Download
ES-Spain Download
SE-Sweden Download
CH-Switzerland Download
GB-Great Britain Download
US-United States Download
W1 Download

MVP Award

mvp

Dear
Gunnar Gestsson,

Congratulations! We are pleased to present you with the 2013 Microsoft® MVP
Award! This award is given to exceptional technical community leaders who
actively share their high quality, real world expertise with others. We
appreciate your outstanding contributions in Dynamics NAV technical communities
during the past year.

At Microsoft, we believe that technical communities enhance people’s lives and the
industry’s success because independent experts, like you, help others extract
greater value from products and technologies through the free and objective
exchange of knowledge. As a Microsoft MVP, you are part of a highly select
group of experts that represent technology’s best and brightest who share a
deep commitment to community and a willingness to help others.

On behalf of everyone at Microsoft, thank you for your contributions to
technical communities.

Images on the NAV 2013 Role Center Ribbon

As a NAV 2013 user I have customized my role center.  That includes putting on my Action Ribbon my most used actions.

NAV2013Ribbon

Then I searched for a way to update the images for my newly added actions but found none.  I asked on Mibuso and got confirmed from Mark Brummel that this option is not available.

From the Departments menu I right-click my most used items and select to “Add to Actions on Role Center Ribbon”.  On the Ribbon I want to be able to customize the images to my customized actions.  I suggested this on Microsoft Connect and if you agree please vote for the suggestion.

I want two new fields added to NAV 2013

In the tables 92, Customer Posting Group and 93, Vendor Posting Group I would like Microsoft to add a Description field.  This is a default field in almost all setup tables in the solution.  Don’t know why it is not in those tables.

So, I suggested this on Microsoft Connect and you can vote here.

Then new Job Invoice feature in NAV 2013

As a part of the Punch and Time Sheet system that I have developed for NAV 2009 I wrote some added features to the Jobs module.  One of the features was to be able to use the copy document functionality to reverse a job invoice.

The new table 1022, Job Planning Line Invoice and the changed functionality means that I needed to rewrite this functionality in NAV 2013.  Today I saw two things that I think Microsoft should do to improve the use of this table.

The first improvement is to add a key to the table for “Document Type,Document No.,Line No.”.  All these fields are a part of the primary key but my experience suggests that the SQL server will perform better with this key added.  After adding this key I suggest a change in the function DeleteSalesLine in function 1002, Job Create-Invoice to utilize this new key.

[code]

DeleteSalesLine(SalesLine : Record "Sales Line")
WITH JobPlanningLineInvoice DO BEGIN
//#Dynamics.is-
SETCURRENTKEY("Document Type","Document No.","Line No.");
//#Dynamics.is+
CASE SalesLine."Document Type" OF
SalesLine."Document Type"::Invoice:[/code]

The later improvement is in function PostInvoiceContractLine in codeunit 1001, Job Post-Line. Here Microsoft is using the RENAME function for the Job Planning Line Invoice table. I would suggest a DELETE and an INSERT to replace the RENAME function.

[code]
CASE SalesHeader."Document Type" OF
SalesHeader."Document Type"::Invoice:
IF JobPlanningLineInvoice.GET(JobPlanningLine."Job No.",JobPlanningLine."Job Task No.",JobPlanningLine."Line No.",
JobPlanningLineInvoice."Document Type"::Invoice,SalesHeader."No.",SalesLine."Line No.")
THEN BEGIN
//#Dynamics.is-
// JobPlanningLineInvoice.RENAME(JobPlanningLine."Job No.",JobPlanningLine."Job Task No.",JobPlanningLine."Line No.",
// JobPlanningLineInvoice."Document Type"::"Posted Invoice",SalesLine."Document No.",SalesLine."Line No.");
JobPlanningLineInvoice.DELETE;
JobPlanningLineInvoice."Document Type" := JobPlanningLineInvoice."Document Type"::"Posted Invoice";
JobPlanningLineInvoice."Document No." := SalesLine."Document No.";
JobPlanningLineInvoice."Line No." := SalesLine."Line No.";
//#Dynamics.is+
JobPlanningLineInvoice."Invoiced Date" := SalesHeader."Posting Date";
JobPlanningLineInvoice."Invoiced Amount (LCY)" :=
CalcLineAmountLCY(JobPlanningLine,JobPlanningLineInvoice."Quantity Transferred");
JobPlanningLineInvoice."Invoiced Cost Amount (LCY)" :=
JobPlanningLineInvoice."Quantity Transferred" * JobPlanningLine."Unit Cost (LCY)";
IF JobLedgEntry.FINDLAST THEN
JobPlanningLineInvoice."Job Ledger Entry No." := JobLedgEntry."Entry No." + 1
ELSE
JobPlanningLineInvoice."Job Ledger Entry No." := 1;
//#Dynamics.is-
// JobPlanningLineInvoice.MODIFY;
JobPlanningLineInvoice.INSERT;
//#Dynamics.is+
END;
SalesHeader."Document Type"::"Credit Memo":
IF JobPlanningLineInvoice.GET(JobPlanningLine."Job No.",JobPlanningLine."Job Task No.",JobPlanningLine."Line No.",
JobPlanningLineInvoice."Document Type"::"Credit Memo",SalesHeader."No.",SalesLine."Line No.")
THEN BEGIN
//#Dynamics.is-
// JobPlanningLineInvoice.RENAME(JobPlanningLine."Job No.",JobPlanningLine."Job Task No.",JobPlanningLine."Line No.",
// JobPlanningLineInvoice."Document Type"::"Posted Credit Memo",SalesLine."Document No.",SalesLine."Line No.");
JobPlanningLineInvoice.DELETE;
JobPlanningLineInvoice."Document Type" := JobPlanningLineInvoice."Document Type"::"Posted Credit Memo";
JobPlanningLineInvoice."Document No." := SalesLine."Document No.";
JobPlanningLineInvoice."Line No." := SalesLine."Line No.";
//#Dynamics.is+
JobPlanningLineInvoice."Invoiced Date" := SalesHeader."Posting Date";
JobPlanningLineInvoice."Invoiced Amount (LCY)" :=
CalcLineAmountLCY(JobPlanningLine,JobPlanningLineInvoice."Quantity Transferred");
JobPlanningLineInvoice."Invoiced Cost Amount (LCY)" :=
JobPlanningLineInvoice."Quantity Transferred" * JobPlanningLine."Unit Cost (LCY)";
IF JobLedgEntry.FINDLAST THEN
JobPlanningLineInvoice."Job Ledger Entry No." := JobLedgEntry."Entry No." + 1
ELSE
JobPlanningLineInvoice."Job Ledger Entry No." := 1;
//#Dynamics.is-
// JobPlanningLineInvoice.MODIFY;
JobPlanningLineInvoice.INSERT;
//#Dynamics.is+
END;
END;[/code]The functionality that I added to the Copy Document function is to create a new line in the Job Planning Line Invoice table if the user is copying a posted sales invoice to a credit memo with header included and identical lines. This also means that I have the Job fields in the credit memo lines populated and the Job Planning Line updated. The function that I use is[code]
ReverseJobInvoice(FromSalesInvLine : Record "Sales Invoice Line";VAR ToSalesLine : Record "Sales Line")
WITH JobInvoice DO BEGIN
SETCURRENTKEY("Document Type","Document No.","Line No.");
SETRANGE("Document Type","Document Type"::"Posted Invoice");
SETRANGE("Document No.",FromSalesInvLine."Document No.");
SETRANGE("Line No.",FromSalesInvLine."Line No.");
IF FINDFIRST THEN BEGIN
JobPlanningLine.GET("Job No.","Job Task No.","Job Planning Line No.");
CreditJobInvoice := JobInvoice;
CreditJobInvoice."Document Type" := CreditJobInvoice."Document Type"::"Credit Memo";
CreditJobInvoice."Document No." := ToSalesLine."Document No.";
CreditJobInvoice."Line No." := ToSalesLine."Line No.";
CreditJobInvoice."Quantity Transferred" := -ToSalesLine.Quantity;
CreditJobInvoice."Transferred Date" := TODAY;
CreditJobInvoice."Invoiced Date" := 0D;
CreditJobInvoice."Invoiced Amount (LCY)" := 0;
CreditJobInvoice."Invoiced Cost Amount (LCY)" := 0;
CreditJobInvoice."Job Ledger Entry No." := 0;
CreditJobInvoice.INSERT;
ToSalesLine."Job No." := JobPlanningLine."Job No.";
ToSalesLine."Job Task No." := JobPlanningLine."Job Task No.";
ToSalesLine."Job Contract Entry No." := JobPlanningLine."Job Contract Entry No.";
ToSalesLine."Job Credit Invoice Line" := TRUE;
ToSalesLine.MODIFY;
JobPlanningLine.UpdateQtyToTransfer;
JobPlanningLine.MODIFY;
END;
END;[/code]