Tuesday, October 27, 2009

Analysis Cubes for Dynamics GP Configuration Wizard

Error:

Dynamics GP Professional is required to proceed.

Strange error upon trying to configure Analysis Cubes using wizard.

Cause:

SQL Server doesn't have Analysis Services Installed.

Resolution:

Install SQL Server Analysis Services and the wizard will proceed.

Regards,
--
Mohammad R. Daoud
MVP, MCP, MCT, MCBMSP, MCTS, MCBMSS
CTO
+962 - 79 - 999 65 85
Dynamics Innovations
daoudm@dynamicsinnovations.com
http://www.dynamicsinnovations.com

How to Create a New Report Using Report Writer and open it inside Microsoft Dynamics GP?

In this post, I will explain how to create a NEW report using Report Writer and open this report inside Microsoft Dynamics GP using Custom Reports form.

First, we'll be creating a simple report that displays a list of accounts exists in the system and print the report within GP, as a start, open Report Writer and click on NEW as shown below:image

Name the report "Accounts List" under Financial Series and select "Account Master" as the main table, then press on Layout:

image

On the layout window, drag the fields from the left panel and drop it in the body section, choose "Account Number", "Account Description", and "Account Alias":

image

Save and get back to Microsoft Dynamics GP, and go to "Reports>>Customized":

image

You will find your new report added under Custom Reports List, print it and enjoy!

image

image

Regards,
--
Mohammad R. Daoud
MVP, MCP, MCT, MCBMSP, MCTS, MCBMSS
CTO
+962 - 79 - 999 65 85
Dynamics Innovations
daoudm@dynamicsinnovations.com
http://www.dynamicsinnovations.com

Saturday, October 24, 2009

Using Microsoft Dynamics GP Rapid Implementation Tools to Export/Copy/Backup Setup Between Companies

Guys,

I got an interesting question from one of my friends about this subject and thought its good to share how to utilize such feature in Microsoft Dynamics GP.

First of all you will need to download and install the tool using the link below, you can also download the installation and user manual PDF's:

http://www.microsoft.com/downloads/details.aspx?FamilyID=D9DFA747-63DA-4CAC-B92D-28BB24192C1D&displaylang=en

After installing the tools, you will have two shortcuts installed at your start menu:

1. Rapid Configuration Tool: what we will currently explain.

2. Rapid Migration Tool: Which used to migrate your data from Quickbooks to GP.

To start, you will need to start "Rapid Configuration Tool" From start menu as shown below:

image

The application will start in an easy wizard mode, just press on Next:

image

We will need to choose "Export Data From GP to Excel 2007", Choose the export location and click on Next:

image

Fill your database login information and press on Next:

image

Select your company and Next:

image

Click on export and enjoy having your company setup on your desktop available to be imported to any other company using the same wizard!

image

Regards,
--
Mohammad R. Daoud
MVP, MCP, MCT, MCBMSP, MCTS, MCBMSS
CTO
+962 - 79 - 999 65 85
Dynamics Innovations
daoudm@dynamicsinnovations.com
http://www.dynamicsinnovations.com

Thursday, October 22, 2009

Tuesday, October 20, 2009

Management Reporter for Microsoft Dynamics

One day this might be our new FRx reporter, you never know! The beta version of this application will be released parallel to GP "11" in Jan 2010, if you are interested those guys are looking for Microsoft Dynamics GP users be their "Beta Testers" checkout post below:

http://blogs.msdn.com/dynamicscpm/archive/2009/09/30/announcing-management-reporter-beta.aspx

Thank Mark for pointing us to this post.

Regards,
--
Mohammad R. Daoud
MVP, MCP, MCT, MCBMSP, MCTS, MCBMSS
CTO
+962 - 79 - 999 65 85
Dynamics Innovations
daoudm@dynamicsinnovations.com
http://www.dynamicsinnovations.com

Sunday, October 18, 2009

Father of my baby boy!

A new candle just born to light on my life, my first baby boy is now out and crying for milk!

Believe me guys I will make sure that upon his first school year my son "Rida" will be certified in GP Financial and will have the ability to create COA!

100_2397 (Large)

Regards,
--
Mohammad R. Daoud
MVP, MCP, MCT, MCBMSP, MCTS, MCBMSS
CTO
+962 - 79 - 999 65 85
Dynamics Innovations
daoudm@dynamicsinnovations.com
http://www.dynamicsinnovations.com

Thursday, October 15, 2009

Practical Example on Dynamics Continuum Integration Library: GL Transaction Entry Integration

I got allot of questions on how to use Dynamics Continuum API for Microsoft Dynamics GP, so I decided to post this practical lesson on how to perform forms level integration between any application or data source and GL Transaction Entry form:

References:

In order to start working on the API, we need first to add Reference to Dynamics Continuum Integration Library to our application:

image

Now we have three main functions/methods that we need to use:

 

Functions/Methods:

1. ExecuteSanscript: Function executes Dexterity code and return the result, expects two parameters and returns integer that the status was successfully completed or not:

ExecuteSanscript("Script" as String, ByRef "ErrorMessage" As String)

2. SetDataValue: Function sets value in any "fully qualified" field name, expects two parameters and returns integer that the status was successfully completed or not:

SetDataValue("Field Name" as String, Value as String)

3. MoveToField: Moves the cursor to the field, expects only the field name as the parameter, almost equivalent to "focus field" command in Dexterity:

MoveToField("Field Name" as String)

 

Concept:

To proceed with our task, we'll need first to understand how it works, we'll need to imagine that a user is working on the form and follow all the steps need to be done, for example, the user will go to date field, fill the date and leave the field so the system run all validations on date field leave, technically speaking "MoveToField" will need to be called first, then "SetDataValue" and finally "ExecuteSanScript" to run the required scripts on leaving the field.

 

Code Snippets:





 




'Define the main object


Dim objGPApp As New Dynamics.Application


 


'Variable to Handle Returned Errors Flag


Dim intErrorValue As Integer


'Variable to Handle Returned Errors Messages


Dim strErrorMessage As String


 


'Other Needed Variables


Dim strBatchID As String = "Dataset Name"


Dim SourceDocument As String = "Source Document"


Dim TrxDate As String = "01012009"


Dim ReferenceID As String = "Sample"


Dim dsDetails As DataSet


'------------------------------------------------------------------------------


'Open the GL Transaction Entry Form


intErrorValue = objGPApp.ExecuteSanscript("open form 'GL_Transaction_Entry';", strErrorMessage)


 


'------------------------------------------------------------------------------'


'Add/Update Batch to make sure its exist


'Open Batch Entry Form


intErrorValue = objGPApp.ExecuteSanscript("run script  'Expansion Button 1' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry';", strErrorMessage)


 


'Fill Batch Number


intErrorValue = objGPApp.SetDataValue("'Batch Number' of window 'GL_Batch_Entry' of form 'GL_Batch_Entry'", strBatchID)


 


'Run Batch Number Script


intErrorValue = objGPApp.ExecuteSanscript("run script 'Batch Number' of window 'GL_Batch_Entry' of form 'GL_Batch_Entry';", strErrorMessage)


 


'Fill Origin


intErrorValue = objGPApp.SetDataValue("'Origin' of window 'GL_Batch_Entry' of form 'GL_Batch_Entry'", 1)


 


'Go To Batch Comment Field


intErrorValue = objGPApp.MoveToField("'Batch Comment' of window 'GL_Batch_Entry' of form 'GL_Batch_Entry'")


intErrorValue = objGPApp.ExecuteSanscript("run script 'Batch Comment' of window 'GL_Batch_Entry' of form 'GL_Batch_Entry';", strErrorMessage)


 


'Save Batch


intErrorValue = objGPApp.ExecuteSanscript("run script 'Save Button' of window 'GL_Batch_Entry' of form 'GL_Batch_Entry';", strErrorMessage)


 


'Close form


intErrorValue = objGPApp.ExecuteSanscript("close form 'GL_Batch_Entry';", strErrorMessage)


' End Batch


'------------------------------------------------------------------------------'


 


'Add/Update Source Document  to make sure its exist


'Open Source Document Form


intErrorValue = objGPApp.ExecuteSanscript("open form 'SY_Source_Document_Setup';", strErrorMessage)


 


'Move to Source Document Field


intErrorValue = objGPApp.MoveToField("'Source Document' of window 'Source_Document_Setup' of form 'SY_Source_Document_Setup'")


 


'Set Field Value


intErrorValue = objGPApp.SetDataValue("'Source Document' of window 'Source_Document_Setup' of form 'SY_Source_Document_Setup'", SourceDocument)


 


'Run Field Script 


intErrorValue = objGPApp.ExecuteSanscript("run script 'Source Document' of window 'Source_Document_Setup' of form 'SY_Source_Document_Setup';", strErrorMessage)


 


'Go To Description Field


intErrorValue = objGPApp.MoveToField("'Source Document Description' of window 'Source_Document_Setup' of form 'SY_Source_Document_Setup'")


'Set Data Value in Description Field


intErrorValue = objGPApp.SetDataValue("'Source Document Description' of window 'Source_Document_Setup' of form 'SY_Source_Document_Setup'", SourceDocument)


 


'Run Field Script 


intErrorValue = objGPApp.ExecuteSanscript("run script 'Source Document Description' of window 'Source_Document_Setup' of form 'SY_Source_Document_Setup';", strErrorMessage)


'Save 


intErrorValue = objGPApp.SetDataValue("'Save Button' of window 'Source_Document_Setup' of form 'SY_Source_Document_Setup'", 1)


'Close Form


intErrorValue = objGPApp.ExecuteSanscript("close form 'SY_Source_Document_Setup';", strErrorMessage)


'End Source Document Adding


'------------------------------------------------------------------------------'


 


'Now we are sure that the batch number and source document are both exist, 


'so we can use both of them in our form 


intErrorValue = objGPApp.MoveToField("'Batch Number' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry'")


intErrorValue = objGPApp.SetDataValue("'Batch Number' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry'", strBatchID)


intErrorValue = objGPApp.ExecuteSanscript("run script 'Batch Number' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry';", strErrorMessage)


 


intErrorValue = objGPApp.MoveToField("'Source Document' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry'")


intErrorValue = objGPApp.SetDataValue("'Source Document' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry'", SourceDocument)


intErrorValue = objGPApp.ExecuteSanscript("run script 'Source Document' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry';", strErrorMessage)


'------------------------------------------------------------------------------'


'Proceed with Journal Header Fill


'Reference


intErrorValue = objGPApp.MoveToField("'Reference' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry'")


intErrorValue = objGPApp.SetDataValue("'Reference' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry'", ReferenceID)


intErrorValue = objGPApp.ExecuteSanscript("run script 'Reference' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry';", strErrorMessage)


 


'Transaction Date -You need to make sure that you passed the date 


'in the correct format-


intErrorValue = objGPApp.MoveToField("'TRX Date' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry'")


intErrorValue = objGPApp.SetDataValue("'TRX Date' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry'", TrxDate)


intErrorValue = objGPApp.ExecuteSanscript("run script 'TRX Date' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry';", strErrorMessage)


'End of Journal Header


'------------------------------------------------------------------------------'


'Journal Details: in this example, I considered the data is already filled in 


'a dataset called dsDetails with the following columns:


'(AccountNumber, AccountType ('Credit', 'Debit'), AccountAmount, LineDescription)


'------------------------------------------------------------------------------'


'Loop through all details


For Counter As Integer = 0 To dsDetails.Tables(0).Rows.Count - 1


    With dsDetails.Tables(0).Rows(Counter)


'Start with Account Number


intErrorValue = objGPApp.ExecuteSanscript("focus field 'Account Number' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry';", strErrorMessage)


intErrorValue = objGPApp.MoveToField("'Account Number' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry'")


intErrorValue = objGPApp.SetDataValue("'Account Number' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry'", .Item("AccountNumber"))


intErrorValue = objGPApp.ExecuteSanscript("run script 'Account Number' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry';", strErrorMessage)


 


'Check the account type, credit or debit


If Trim(.Item("AccountType")).ToLower = "Debit".ToLower Then


'Incase of Debit, fill debit with the amount 


intErrorValue = objGPApp.ExecuteSanscript("focus field 'Debit Amount' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry';", strErrorMessage)


intErrorValue = objGPApp.MoveToField("'Debit Amount' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry'")


intErrorValue = objGPApp.SetDataValue("'Debit Amount' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry'", .Item("AccountAmount"))


intErrorValue = objGPApp.ExecuteSanscript("run script 'Debit Amount' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry';", strErrorMessage)


intErrorValue = objGPApp.ExecuteSanscript("focus field 'Credit Amount' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry';", strErrorMessage)


intErrorValue = objGPApp.MoveToField("'Credit Amount' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry'")


 


Else


'Incase of credit, fill credit field with the amount 


intErrorValue = objGPApp.ExecuteSanscript("focus field 'Credit Amount' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry';", strErrorMessage)


intErrorValue = objGPApp.MoveToField("'Credit Amount' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry'")


intErrorValue = objGPApp.SetDataValue("'Credit Amount' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry'", .Item("AccountAmount"))


intErrorValue = objGPApp.ExecuteSanscript("run script 'Credit Amount' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry';", strErrorMessage)


End If


 


'Fill the distribution reference field 


intErrorValue = objGPApp.ExecuteSanscript("focus field 'Description' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry';", strErrorMessage)


intErrorValue = objGPApp.MoveToField("'Description' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry'")


intErrorValue = objGPApp.SetDataValue("'Description' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry'", .Item("LineDescription"))


intErrorValue = objGPApp.ExecuteSanscript("run script 'Description' of window 'Transaction_Scroll' of form 'GL_Transaction_Entry';", strErrorMessage)


 


'Move the scrolling window to the next line


intErrorValue = objGPApp.ExecuteSanscript("Window_ScrollScrollingWindow(window 'Transaction_Scroll' of form 'GL_Transaction_Entry', SCROLLTYPE_NEXT);", strErrorMessage)


 


End With


Next


 


'Save the Journal


intErrorValue = objGPApp.ExecuteSanscript("run script 'Save Button' of window 'GL_Transaction_Entry' of form 'GL_Transaction_Entry';", strErrorMessage) 


 


'Close GL Transaction Entry Form


intErrorValue = objGPApp.ExecuteSanscript("close form 'GL_Transaction_Entry';", strErrorMessage)


'------------------------------------------------------------------------------'


 



That's it! Let me know if you have any issues or inquiries about the above code, I will be more than happy to help.


Regards,

--


Mohammad R. Daoud


MVP, MCP, MCT, MCBMSP, MCTS, MCBMSS


CTO


+962 - 79 - 999 65 85


Dynamics Innovations


daoudm@dynamicsinnovations.com


http://www.dynamicsinnovations.com

Related Posts:

Related Posts with Thumbnails