This week, free Visual Basic for Applications workshop with the Dynamics GP Blogster

February 28, 2009

Hi folks!

I have been asked a number of times about some of the Modifier with Visual Basic for Applications (VBA) customizations featured on my blog and those over at Developing for Dynamics GP. It’s no secret that I co-author a number of development posts with my friend David Musgrave in the spirit of educating and delivering some of the best articles to the end-user and development communities alike.

In light of this, this week I will deliver a 3-day Online Modifier with Visual Basic for Applications workshop, featured right here on this blog, that will step through a real-life customization from end to end.

What you will need

For the workshop, you will need a registered copy of Microsoft Dynamics GP v10, the Fabrikam sample company, and familiarity with the overall Dynamics GP navigation.

Prerequisites

This workshop assumes you have some familiarity with Modifier and have prior programming experience in Visual Basic or any other development environment. If you are an end-user just looking to understand some of the advance Modifier principles, tag along and why not, try it for yourself.

The project

I love the newsgroups because they address real-life situations faced by real-life individuals. In this post, the developer wants to add a VBA customization to the Equipment Maintenance window in the Field Service module, which requires opening the Customer Lookup window, a part of the Smartlist dictionary. The goal is to return the Customer Number from the lookup window to a custom field added to the Equipment Maintenance window. This custom field is used to track a regulatory entity setup as a customer. The customization will need to store the regulatory entity associated to the equipment.

Workshop Agenda

Hope to see the hit counters climb this week so pass the word along and let your friends and coworkers know about this workshop.

NOTE: All links will become available at 8:00 AM EST (GMT -5:00) on the date the article is schedule to post.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


Some Dynamics GP humor

February 25, 2009

It’s not often that I publish some humor on the blog, but I thought this would be a good one. I have been working on a few projects at my current Dynamics GP customer for the last 8 months now and walked up to one of the buyers in the Purchasing department to ask an EDI related question, with my eyes wondering around his cubicle walls, and came across this hilarious picture with the following caption.

I guess after all, this is how some users feel despite our upbeat efforts to help them day in and day out.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


Developing for Dynamics GP weekly summary

February 23, 2009


Over the past weeks I have neglected publishing the Developing for Dynamics GP weekly summary you have come to rely on for a breakdown of some of the coolest articles around the blogosphere, but this obeys a bit to a bit of breakdown in my own health — late nights writing are not helping the case either :-). So lets get to work:

First, my personal story…

My dear friend, David Musgrave has been very hard at work on the topic of translating Dexterity applications, delivering some nice articles on the subject and showing how Microsoft Dexterity can help you in the process. This is a topic that brings a lot of good memories of my early days with the Dynamics GP system and Dexterity. As many of you know, I am the original architect and developer of the Microsoft Dynamics GP Spanish release and back in 1996 the tools were available, but the details on the translation process were very sketchy. The “does” and “dont’s” were pretty much built on the fly and based on experiences already accumulated by the Polish and German IAPs development teams at the time — Back in the days, the former Great Plains Software operated with International Alliance Parners (IAPs) which did not share much information among themselves and were geographically dispersed making the knowledge transfer process even less efficient.

While I had the opportunity to work hand to hand with Tom Irsfeld, former project manager with the then Great Plains Software International Team, and Dave Gaboury, former Engineer on the Dexterity platform development team, and two of the best in the business, getting the first release of the Spanish version to run trouble-free took almost 8 months of hard and continuous work. I must mention that the translation team put together for this project consisted of 25 people. Our mistake at the time was not to hire individuals with an accounting background to assist with the process of translating all the strings and message resources.

The above leads me to this… Translating Dynamics GP may prove to be one of the most extensive (and expensive) undertakes. It’s a project that involves decoding some of the idiosyncrasies of your specific region or country, knowing the accounting terminology — those widely accepted anyways, and adding localizations specific to the country or region, such as taxation issues, disbursement, and credit issues, etc. However, at the end of the journey, it’s a very rewarding and career advancing opportunity.

So, what’s on?

Dexterity: Designed for Translation – David exposes some of the Dexterity platform design principles that make the magic of translation possible — all without modifying your application after it’s built. Click here to read more.

Writing Translatable Dexterity Code – These are the basics, also known as “Software Engineering 101”. These are some of the top considerations when designing Dexterity applications that will make it outside the US. Click here to read more.

Writing Multi-lingual Dexterity Code – Come and learn the “does” and “don’ts” of writing a world class Dexterity solution. If you are a developer writing add-ons for Microsoft Dynamics GP and you are planning on expanding your market to overseas, this article is for you. Click here to read more.

Translating Dexterity Code – In reality, you translate the strings and messages you seen on screens and on reports, along with the application messages displayed by warning dialogs. Nonetheless, this is the bulk of the work and you may require a team of translators working with application developers to work within the language and development constraints. Click here to read more.

How to Horizontally Flip the Windows – Believe it or not, at one time there was an Arabic version of GP. I do remember my friend David Gaboury working on this in Fargo when I first visited in October of 1996. As you know Arabic is read and written from left to write and there was functionality built into Dexterity to address this. Click here to read more. Also, check my article on Displaying Hijri dates.

Dexterity and Double Byte Languages – Dexterity has many capabilities, but double-byte support is certainly not one of them. The primary issue? Design. It was never written to address double-byte sets. Click here to read more.

Other topics that made it to the blog

MVPs presenting at Convergence – If you heading down to the Crescent City in March, please be sure to stop over to check out fellow MVPs Mark Polino and Leslie Vail sessions. Click here for more details.

Tools sessions at Convergence – Are you a developer in the looks for more information about Modifier with VBA, Web Services, or eConnect? Do you ever wonder how to chose the right tool for your Dynamics GP development project? Then you need to check into these sessions for more information.

Time for a change!Developing for Dynamics GP is sporting a new look, please stop over and let the team know if you like the new presentation of the blog.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


Displaying Hijri dates in Microsoft Dynamics GP

February 20, 2009

In the last few days, many of my friends in the Middle East have been asking how to display Hijri dates — as opposed to Gregorian dates — in Microsoft Dynamics GP. It has been among the latest topic on the Microsoft Dynamics GP Developer Community newsgroup as well, and of course, the object of my curiosity for the last few days.

First, a bit of background!

The Hijri calendar is used to date events and celebrate Islamic holidays and festivities. It is based on the lunar cycle, having 12 lunar months in a year of about 354 days. Because this lunar year is about 11 days shorter than the solar year, Islamic holidays, although celebrated on fixed dates in their own calendar, usually shift 11 days earlier each successive solar year, such as a year of the Gregorian calendar. Islamic years are also called Hijra years because the first year was the year during which the Hijra occurred—Islamic prophet Muhammad’s emigration from Mecca to Medina. Thus each numbered year is designated either H or AH, the latter being the initials of the Latin anno Hegirae (in the year of the Hijra).

Microsoft Dexterity does not have native support for Hijri, but Microsoft SQL Server does out of the box. Support for Hijri in SQL Server is surrounded by legends, myths, and the stuff of science fiction. Legend has it that Microsoft sent an army of software engineers and architects to the Middle East to collect records and conduct statistical analysis on the Hijri calendar records from Kuwait and Saudi Arabia. The resulting algorithm embedded in many Microsoft products was denominated the Kuwaiti Algorithm. Whether this is truth or not is left to the folks at Microsoft.

The Solution

SQL Server Convert function provides support for Arabic style dates by using the Kuwaiti algorithm. The following query will return an Arabic style date for today’s Gregorian date:

Hijri.sql


-- Hijry conversion of today's date

select convert(varchar, getdate(), 131)

The query result is as follows:


------------------------------
24/02/1430 10:34:02:710PM

(1 row(s) affected)

Given this, we can create a Visual Basic for Applications (VBA) user form in Microsoft Dynamics GP that will in turn format a query. We can then execute this query via ActiveX Data Objects (ADO). For this example, we will use the Receivables Transaction Entry window and will be adding a push button next to the date field with Modifier. Once we have the form changed, we will then add the window, Document Date field and the newly added push button to VBA. The user form will have the necessary code to convert the Gregorian transaction date to Hijri.

The following is the outcome of our project:

1) Custom window with push button to load user form

* click image to enlarge

2) User form displaying Gregorian date to Hijri

Downloads

The following links will allow you download the package files for this project:

v10 – DisplayHijri.Package: contains the modified Receivables Transaction Entry screen and the custom user form.

v10 – References.Package: contains references for Microsoft ActiveX Data Objects 2.6

Related Articles

How to Horizontally Flip the Windows – From the Translating Dexterity Applications series at Developing for Dynamics GP, by David Musgrave.

Until next post!

MG.-
Mariano Gomez, MVP, MCP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


New Article on MSDynamicsWorld: "Customizing for the wrong reasons"

February 19, 2009

When carefully planned, customizations can be the difference between a successful and smooth business operation and a system that only gets you 80% of the way..

Once more I have managed to publish a new article over at MSDynamicsWorld.com. This time around, I address 5 (wrong) reasons used by companies to begin customizing the system. Please take a look at the article and let me know your thoughts.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


Effects of disabling Multicurrency Management

February 14, 2009

If not working for a company that does business outside of the United States, it is difficult to understand all of the implications of the Multicurrency Management module. In fact, I would venture to say that it is one of the least understood functions in GP despite it’s obvious name.

For those of you however using the module, you may find that in these times of organizational downsizing and consolidation, Multicurrency may no longer be necessary and perhaps may need to be disabled to prevent entering transactions in other currencies. This is just what happened to a user seeking some advise on the issue on the Microsoft Dynamics GP newsgroup.

Disabling Multicurrency

Let’s start by saying that once transactions have been entered in other currencies, you may no longer use the Multicurrency Access Setup window to disable these currencies for a Dynamics GP company. This would be, if it were possible, my preferred method to prevent a user from entering transactions in other currencies.

The only other option is to disable the module, but this is where the scare factor comes into play because the unknowns. Lets remember that the only condition to enter transactions in GP is to have a functional currency in place, and for companies not requiring multicurrency, the reporting currency is the same as the functional currency.

With this in mind, disabling Multicurrency should not cause any harms (beyond the necessary actions outlined below) to your transaction system. To disable Multicurrency, we will need to go to the Registration window and uncheck the module option.

Since the distribution modules are extremely sensitive to Multicurrency, you will first need to run Check Links on the Multicurrency Setup tables to adjust the system’s transaction tables for the new settings to avoid receiving the following message:

NOTE: RUNNING CHECK LINKS ON THE Multicurrency Setup TABLE WILL CAUSE DYNAMICS GP TO REMOVE ALL CURRENCY RECORDS ASSOCIATED TO AN ITEM CLASS (Item Class Currency Setup table), AN ITEM (Item Currency Master table), AND ALL PRICE LISTS (Item Price List table). IN ADDITION, ANY MULTICURRENCY EXTENDED PRICING PRICE SHEETS ( sopExtPricingPriceSheetHeader table) INFORMATION WILL BE REMOVED. BEFORE DISABLING MULTICURRENCY AND RUNNING THIS PROCEDURE, MAKE SURE YOU HAVE CREATED BACKUPS FOR ALL YOUR COMPANY DATABASES.

Upon deactivating the Multicurrency module, you will still be able to see information in originating and functional currency for transactions previously entered in other currencies, however, you will not be able to record new transactions in other currencies and the system will default to functional currency for these new transactions. All Currency ID fields will be disabled throughout the entire system, as shown here for the Sales Transaction Entry screen, preventing the selection of any currency assigned to the company.













What happens to unposted transactions?

Unposted transactions will need to be deleted and re-entered in functional currency, so it is recommended to post these before hand.

What happens to posted transactions?

If you have open transactions in originating currency in the Payables Management and Receivables Management modules, you wil not be able to apply functional currency to these — unless you are using the Cashbook Management module, a feature available to customers outside of the United States.

If you have performed this operation in the past and you feel I left out something, please feel free to drop your comments and let me know about your experiences.

Until next post!

MG.-
Mariano Gomez, MIS
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com


Leslie Vail presents "Dynamics GP Distribution Cost Savings" at Convergence 2009

February 10, 2009

Fellow MVP Leslie Vail will be presenting a jammed packed, money saving tips session on Microsoft Dynamics GP distribution modules, at the upcoming Microsoft Convergence 2009 in New Orleans. Leslie is a Microsoft Certified Trainer and has years upon years of experience delivering quality presentations at Microsoft technical and non-technical events.

Leslie’s presentation is coded GP33 in the Convergence agenda.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com


Mark Polino’s "50 tips in 50 minutes" goes prime time at Convergence 2009

February 9, 2009


“Gather information on how to get more out of your existing implementation without a lot of cost or effort”

Folks, I have been working on Dynamics GP since 1,996 and I would never dear trying what fellow MVP Mark Polino is about to do. Picture this: the stage… Convergence 2009, the audience… 200 – 300 people, the objective… deliver 50 Dynamics GP tips in 50 minutes. This is no game! However, Mark will turn it into one of the most exciting presentations you will ever want to attend during this year’s Microsoft Convergence event. Make sure you separate some time for this and I would suggest you bring a camcorder to this one.

Related Articles:

For all Convergence 2009 articles on this site, click here.

Until next post!

MG.-
Mariano Gomez, MIS, MCP, MVP, PMP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/

Panoramic of New Orleans
The home of Convergence 2009

The importance of linking your fields to their prompts in Microsoft Dexterity

February 5, 2009


When you have been doing Dexterity development for as long as I have been, a lot of things are automatically assumed and taken for granted when developing an add-on solution.

A recent article by Patrick Roth over at Developing for Dynamics GP got me thinking on a common mistake that Dexterity developers (novice and experienced!) run into when developing add-ons for Microsoft Dynamics GP, or even in their own standalone solutions.

In his article, Patrick points out the fact that you can change the caption of a field — in Dexterity lingo, this is called a prompt — by using VBA. The code he published can be generalized as follows:

Generic Private Sub Window_AfterOpen()

Private Sub Window_AfterOpen()   
   fieldname.Caption = "Some Prompt Here"
End Sub

So, why the need to link fields with their corresponding prompts? — I will get back to Patrick’s article later and it’s relation to this topic.

The answer is simple. Because they are a number of field properties that directly affect the behavior of the linked prompts. These properties are:

Visible. This property allows a developer to establish whether a field will be shown or hidden on a window interface. Visibility can be controlled via the Dexterity statements hide field and show field. When the hide field statement is executed the field’s Visible property is set to false and the linked prompt is automatically hidden along with the field. The reverse effect will occur with the show field statement.

Editable. This property allows a developer to establish whether a field will allow data entry or not. Editability can be controlled via the Dexterity statements lock {field} and unlock {field} — the keyword field is optional. When the lock statement is executed the field’s Editable property is set to false and the linked prompt is automatically grayed out along with the field. The reverse effect will occur with the unlock statement.

Required. This property allows a developer to establish whether a field will force the user to enter data in it or not. Since the font color and style of a required field can be controlled via Dexterity with the Field_SetRequiredFormat() function, it is absolutely necessary to link the field to it’s prompt for the visual effects to take place when toggling the Show Required Fields mode under User Preferences.

NOTE: This applies to integrating applications. For standalone applications please check the Dexterity help file for the Field_SetRequiredStatus() function.

This brings me back to Patrick’s article and the generic code posted above. If you don’t link your fields to your prompts, you will not be able to change the caption via VBA! fieldname.Caption allows a VBA developer to control a field’s linked prompt created with Dexterity.

This simple ommission can turn an ordinary customization request into a semi-development project, since most likely, you will have to go back to Modifier, link the field to the prompt, not to mention wrangling with the Dynamics GP systems administrator for security permissions to your modified object. If you are talking about 5 users, this may not be an issue, but in environments with 100’s of users and SOX compliance issues you may end up kissing your contract goodbye!

So the next time you start dragging fields to a window and adding prompts, think… “Have I linked all my fields and prompts?”

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


Internet Explorer scripting errors on Microsoft Dynamics GP Home Page

February 5, 2009

Microsoft Dynamics GP home page is a relatively new and fascinating feature. While users are becoming more and more familiar with its use, it is still puzzling when errors show up inadvertly. The following error was reported by a user of Dynamics GP a few days ago:

Home Page Error


Line: 335
Char: 6
Error: The data is invalid
Code: 0
URL: file:///c:/Documents%20and%20Settings/[user_folder]/Local%20Settings/Temp/tmp16A.tmp

Each time the user refreshed the home page, the same error would manifest with a different temporary file.

In fact, the line number, character, and temp file may vary from machine to machine in this case. However, the resolution to this problem is relatively simple:

1. Close all applications on the user desktop
2. Open Microsoft Windows Explorer and go to the folder indicated, c:\Documents and Settings\[user_folder]\Local Settings\Temp.
3. Highlight all files and delete them
4. Launch Dynamics GP and log on into the system.

This should take care of the error!

Related Articles:

KB article 913822 – The home page displays the XML code for the home page when you start Microsoft Dynamics GP

KB article 916673 – Error “Metrics are not available because Microsoft Office Chart Components …”

KB article 917998 – How to disable the home page feature in Microsoft Dynamics GP

KB article 918313 – Frequently asked questions about the home pages and area pages features in Microsoft Dynamics GP

Related articles on this site:

– Restricting Access to Metrics on Microsoft Dynamics GP 10 Home Page. Click here.
– Changing Microsoft Dynamics GP 10.0 Home Page Background Color. Click here.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/