Great Plains Dexterity Dynamics eEnterprise Microsoft CRM Microsoft RMS Crystal Reports SQL International
Phones
Toll Free: 1-866-528-0577
Office: 1-630-961-5918
Cell (consultant-on-duty): 1-630-854-0597
Email: welcome@albaspectrum.com.
Customization for
XYZ Company (SAMPLE)
Prepared by:
Alba Spectrum Technologies
Customization Overview
Technologies. Customization utilizes the following technologies:
With upgrade from Great Plains 5.5 to Great Plains 7.5 portion of Dexterity customization was converted into SQL Triggers, Views and Crystal Reports. Our recommendation for the future is further conversion of Dexterity customization into SQL and Crystal Reports.
Customized Items
This document describes customization as it is on April, 2003, Great Plains ver. 7.5
Payment Terms
Overview
Payment term per contract feature overrides default Payment Term on SOP Invoice and sets it to the Payment Term from the Contract in Batch Invoicing.
Functionality

This is modified Mekorma Batch Invoicing Recurring Invoice Maintenance window. The field Payment Term is custom addition and this field is saved together with the contract settings. Later on when Invoices are created for the contract the contract Payment Term supercedes default Payment Term (from the Customer settings) in these invoices.
Technologies
Attention! ADO connection string with SQL Server name, sa user id and password is hardcoded in VBA. In order to change it you should open Visual Basic Editor from Great Plains:

select BatchInvoicing as the product and select RecurringInvoiceMaintenance window:
then locate the following code:
adoCN.ConnectionString = "driver={SQL Server};database=DYNAMICS;uid=sa;pwd=kitchen;server=ACCT-SQL;"
and make the changes necessary.
Sales Report
Overview
This report shows unpaid or paid invoices for the customers in the specified dates range.
Fields:
· Invoice Number
· Contract Number
· Customer Number
· Customer Name
· Batch Number
· Invoice Date
· Due Date
· Original Amount
· Current Amount
Report is sorted by Customer Number in ascending alphabetical order.
Technologies
Report modification. You can do formatting directly in Crystal Report Designer. However if you plan to include new fields, not available in AS_Paid_Unpaid_Report_View we encourage you to modify the view, rather than do modification in Crystal Report Designer
Lot Number Tracking
Overview
Serial Number Tracking window allows you to see the history of the item with Serial Number through the following modules:
· Sales Order Processing
· Purchase Order Processing
· Inventory
· Fixed Assets
Functionality
Window shows items, tracked by Serial/Lot Number (User Field 5 in case of Fixed Asset).
Restrictions (From/To):
If no restriction placed all the documents with Serialized/Lot Numbered items should be shown.
Fields shown:
Buttons:
Technologies
Following is sample VBA with Sanscript inline code, this procedure switches the product to Fixed Assets and opens FA General Maintenance, Transfer or Retirement inquiry forms. This procedure is called when user select Fixed Asset line, places the cursor and clicks on Customer/Vendor drill down field:
Private Sub CustomerVendor_AfterUserChanged()
Dim SavedProduct As String
Dim error_msg As String, error As Integer, dex_command As String, dex_command2 As String
PurchaseOrderNumberWORKSTR = ASPONumberFrom
If ASSerialNumberTracking.AssetIndex <> 0 Then
SavedProduct = Dynamics.templateMain.DynamicsApp.currentproduct
Dynamics.templateMain.DynamicsApp.currentproduct = "Fixed Assets"
If ASSerialNumberTracking.IntegerValue = 1 Then 'new fixed asset
dex_command = "open form FA_General_Maintenance;"
dex_command = dex_command + " set 'Asset Index' of table FA_General_Information_MSTR to " + ASSerialNumberTracking.AssetIndex + ";"
dex_command = dex_command + " get table FA_General_Information_MSTR;"
dex_command2 = " set 'Asset ID' of window FA_General_Maintenance of form FA_General_Maintenance "
dex_command2 = dex_command2 + "to 'Asset ID' of table FA_General_Information_MSTR;"
dex_command2 = dex_command2 + " run script 'Asset ID' of window FA_General_Maintenance of form FA_General_Maintenance;"
dex_command2 = dex_command2 + " focus 'Asset Description' of window FA_General_Maintenance of form FA_General_Maintenance;"
error = Dynamics.templateMain.DynamicsApp.executesanscript(dex_command + dex_command2, error_msg)
End If
If ASSerialNumberTracking.IntegerValue = 2 Then 'transfer fixed asset
dex_command = "open form FA_Transfer_Inquiry;"
dex_command = dex_command + " set 'Transfer Index' of table FA_Transfer_MSTR to " + ASSerialNumberTracking.AssetIndex + ";"
dex_command = dex_command + " get table FA_Transfer_MSTR;"
dex_command2 = " set 'Asset ID' of window FA_Transfer_Inquiry of form FA_Transfer_Inquiry "
dex_command2 = dex_command2 + "to 'Asset ID' of table FA_Transfer_MSTR;"
dex_command2 = dex_command2 + " run script 'Asset ID' of window FA_Transfer_Inquiry of form FA_Transfer_Inquiry;"
dex_command2 = dex_command2 + " focus 'Asset ID' of window FA_Transfer_Inquiry of form FA_Transfer_Inquiry;"
error = Dynamics.templateMain.DynamicsApp.executesanscript(dex_command + dex_command2, error_msg)
End If
If ASSerialNumberTracking.IntegerValue = 3 Then 'retire fixed asset
dex_command = "open form FA_Retirement_Inquiry;"
dex_command = dex_command + " set 'Retirement Index' of table FA_Retirement_MSTR to " + ASSerialNumberTracking.AssetIndex + ";"
dex_command = dex_command + " get table FA_Retirement_MSTR;"
dex_command2 = " set 'Asset ID' of window FA_Retirement_Inquiry of form FA_Retirement_Inquiry "
dex_command2 = dex_command2 + "to 'Asset ID' of table FA_Retirement_MSTR;"
dex_command2 = dex_command2 + " run script 'Asset ID' of window FA_Retirement_Inquiry of form FA_Retirement_Inquiry;"
dex_command2 = dex_command2 + " focus 'Asset ID' of window FA_Retirement_Inquiry of form FA_Retirement_Inquiry;"
error = Dynamics.templateMain.DynamicsApp.executesanscript(dex_command + dex_command2, error_msg)
End If
Dynamics.templateMain.DynamicsApp.currentproduct = SavedProduct
End If
End Sub
Paid Only Documents Window
Overview
Receivables Transaction Inquiry form by Customer has Paid Only custom check box, which allows filter Paid Only documents

Technologies
This is Dexterity customization for RM Transaction Inquiry by Customer Great Plains form. Access should be granted to Alternate Great Plains form in sales series for AS XYZ Utilities. Dexterity uses AS_RM_Transaction_Inquiry_Scroll_Before trigger (Dexterity trigger) to filter paid transactions in the scrolling window.
Batch Note Field on Invoice
Overview
This customization enables batch comment field to be placed on SOP Blank Invoice, SOP Blank Invoice with Options and SOP Historical Blank Invoice (for reprinting historical invoices)
Technologies
This is Dexterity customization. In Dexterity we created two custom functions:
rw_get_sop_batch_comment
and
rw_get_sop_hist_batch_comment
for addressing batch comment field from un-posted and historical batches. Prefix rw_ allows you to address these functions in calculated fields of the report in Great Plains ReportWriter.
Also the above reports were moved from DYNAMICS.DIC into customization.
In order to place batch comments fields you should open ReportWriter and select AS XYZ Utilities as a product
Then you will see the reports available for modification:

The above screen shows you the way of adding new calculated field of the Result Type text, which calls one of these functions. The screen below shows you how to provide the parameter for the function (both functions require SOP Number, this one comes from Sop Work Header, in case of history it comes from SOP History Header tables)

Payment Message
Overview
When sales invoice is paid Mekorma users get automatic SQL mail notification if the contract status for the invoice is inactive.
The notification fires when either Apply To check box is checked or Auto Apply button is pressed in Apply Sales Documents window, see below

Technologies

Not in Use
In Dexterity
· AS_InvoicesReport, this is old Dexterity version of Sales report, which is now in Crystal, this obsolete version used ASPDUNP Dexterity table and AS_Paid_Unpaid_SOP_Invoices_Report_Range form
· AS_Invoice_XYZ_If_Inactive_Notify_Trigger this Dexterity trigger is now replaced with AS_Invoice_XYZ_If_Inactive_Notify_Trigger SQL trigger, see Paid Invoice eMail Notification above
· AS_Serial_And_Lot_Number_Tracking form, which is now replaced with AS_Serial_Number_Tracking Dexterity form