ClassicPress Plugins Available From azurecurve | Development in 2023: Images

ClassicPressIn this series of articles, I am going to introduce each of the plugins I have developed for ClassicPress, a hard-fork of WordPress, which was originally created to provide an alternative, yet compatible, CMS without the Gutenberg block editor.

The 22nd plugin is Images.

Images
Shortcode to display image in post; add width, alt, caption or error attributes.

Example shortcode:

[image image="http://www.example.com/hello.png" width="550px" alt="Hello World!"]

This plugin is multisite compatible.

Continue reading “ClassicPress Plugins Available From azurecurve | Development in 2023: Images”

ClassicPress Plugins Available From azurecurve | Development in 2023: Icons

ClassicPressIn this series of articles, I am going to introduce each of the plugins I have developed for ClassicPress, a hard-fork of WordPress, which was originally created to provide an alternative, yet compatible, CMS without the Gutenberg block editor.

The 21st plugin is Icons.

Icons

Easily add an icon to a post or page using the [icon] shortcode.

For example, to display the note icon, shortcode usage is [icon=note]; 1,000 icons from the famfamfam Silk collection are included.

Definition of icons can be found at famfamfam.com; a settings page also shows all available icons.

Custom cons can be added; if a custom icon with the same name as a standard icon exists, the custom icon will be used.

Shortcodes In Comments can be used to allow flags in comments and Shortcodes In Widgets can allow them in widgets.

This plugin is multisite compatible.

Continue reading “ClassicPress Plugins Available From azurecurve | Development in 2023: Icons”

SQL Scripts for Microsoft Dynamics GP: Add Joins and Fields to PM Document Approval Notification Emails

Microsoft Dynamics GPThis script is part of the SQL Scripts for Microsoft Dynamics GP where I will be posted the scripts I wrote against Microsoft Dynamics GP over the 19 years before I stopped working with Dynamics GP.

This script adds new joins and fields for use in the PM document workflow approvals and notification emails.

/*
Created by Ian Grieve of azurecurve | Ramblings of an IT Professional (http://www.azurecurve.co.uk) This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int). */
-- Insert selected fields INSERT INTO CO00121 --Query Designer Fields List (CO00121) (FieldsListGuid,SEQNUMBR,DefaultField,TableDictID,TableSeries,TableTechnicalName,TablePhysicalName,TableDisplayName,FieldPhysicalName,FieldDisplayName,FieldSource,FieldDataType,DecimalDigits,RelativeDecimalPosition,ShowCurrencySymbol,ShowPercentSign,CRNCYSYM,DECPLCUR,Hidden) VALUES ('C573A05B-4210-4332-81C1-91A4A8175C4F',31,1,0,1,'GL_Account_Index_MSTR','GL00105','Account Index Master','ACTNUMST','Account Number String',1,5,0,0,0,0,'',0,0) ,('C573A05B-4210-4332-81C1-91A4A8175C4F',32,0,0,3,'PM_Distribution_WORK_OPEN','PM10100','PM Distribution WORK OPEN','DistRef','Distribution Reference',1,5,0,0,0,0,'',0,0) ,('C573A05B-4210-4332-81C1-91A4A8175C4F',33,1,0,3,'PM_Transaction_WORK','PM10000','PM Transaction Work','PRCHAMNT','Purchase Amount',1,4,0,1,1,0,'',0,0) ,('C573A05B-4210-4332-81C1-91A4A8175C4F',34,0,0,1,'GL_Account_MSTR','GL00100','Account Master','ACTDESCR','Account Description',1,5,0,0,0,0,'',0,0) GO -- insert table join from pm dist work open to account index master INSERT INTO CO00122 --QueryDesigner_Relationships (CO00122) (FieldsListGuid,Group_ID,SEQNUMBR,FromDictID,FromTable,FromTablePhysicalName,FromField,FromFieldPhysicalName,ToDictID,ToTable,ToTablePhysicalName,ToField,ToFieldPhysicalName,JoinType) VALUES ('C573A05B-4210-4332-81C1-91A4A8175C4F',3,0,0,'PM Distribution WORK OPEN','PM10100','','',0,'Account Index Master','GL00105','','',3) ,('C573A05B-4210-4332-81C1-91A4A8175C4F',3,1,0,'PM Distribution WORK OPEN','PM10100','Distribution Account Index','DSTINDX',0,'Account Index Master','GL00105','Account Index','ACTINDX',3) ,('C573A05B-4210-4332-81C1-91A4A8175C4F',4,0,0,'Account Index Master','GL00105','','',0,'Account Master','GL00100','','',3) ,('C573A05B-4210-4332-81C1-91A4A8175C4F',4,1,0,'Account Index Master','GL00105','Account Index','ACTINDX',0,'Account Master','GL00105','Account Index','ACTINDX',3) GO -- insert payables trx approval workflow email fields for distributions INSERT INTO dbo.WF40202 --Workflow Template Fields (WF40202) (Workflow_Type_Name,Email_Message_Type,SEQNUMBR,Ord_Line,WF_Template_Field_Type,TableSeries,TableDictID,RSRCID,TablePhysicalName,FieldPhysicalName,FieldName,FieldDataType,TableRelationship,AdditionalFields) VALUES ('Payables Transaction Approval',2,103,0,18,2,0,0,'GL00105','ACTNUMST','Account Number String',5,3,0) ,('Payables Transaction Approval',2,104,0,18,2,0,0,'PM10100','DEBITAMT','Debit Amount',5,3,0) ,('Payables Transaction Approval',2,105,0,18,2,0,0,'PM10100','CRDTAMNT','Credit Amount',5,3,0) ,('Payables Transaction Approval',2,106,0,18,2,0,0,'PM10100','DistRef','Distribution Reference',5,3,0) ,('Payables Transaction Approval',2,107,0,18,2,0,0,'GL00100','ACTDESCR','Account Description',5,3,0) GO

Click to show/hide the SQL Scripts for Microsoft Dynamics GP Series Index

SQL Scripts for Microsoft Dynamics GP
Verify PM Batches Exist
Update Accrued Purchases Distribution on History Receipts from Posting Account Setup
Insert Mfg BOMs from Text File
SQL Function To Return Approver
List of Active Fixed Assets
Insert Manufacturing Routings from Text File
Table Function to Split String on Delimiter
List of Open Payables Transactions
Insert Creditor Item Numbers
Return Top Level BOM for Manufacturing Orders
Custom Purchase Order Email Notification to Originator on Workflow Final Approval
list of Open Payables Distributions
Set New Vendor On Hold if EFT Exists
Set New Vendor On Hold if EFT Exists
Payment Run Apply Query
List GL Transactions
Simple RMA Audit
Change Vendor Change Approvals Joins and Fields
Insert National Accounts from CSV
List GL Accounts With Notes
Import Site Bins From CSV
Remove Multicurrency from Sales Transactions
Change Email Notification Assignment
List General Ledger Transactions (Excluding Year End Journals)
List Taxes Linked to GL Accounts
Allow Workflow Originator to be an Approver
Add Joins and Fields to PM Document Approval Notification Emails
Update Accounts and Distributions on Work Status Sales Transactions from Item Card, Tax Details or Posting Account Setup
Upload and Verify Tax Commodity Codes
Delete Corrupt Extended Pricing Data
Assign All Items to All Site Bins
Sales Transactions (Work) Against a Specific Site
Change Web Service URi
SQL View to Return Quantity Available
Verify Tax Detail Assigned to Vendor
Insert Extended Pricing Price Sheet Header
Prefix Companies Names with System Designator
SQL View to Return Category Linked to Segment 3 in COA
Update Site Descriptions From CSV
Copy Workflow from Source to Destination Database
Extract GL Period Balances
Sales by Customer By Year
Purchased Items With Serial Numbers and Linked Sales Transactions
SQL View to Return Purchase Orders
Select All Primary Keys and Generate ALTER Script
Copy Workflow Calendar from Source to Destination Database
SQL Trigger on PO invoice Insert to Change GL posted Date
Sales by Salesperson By Year
Script to Set Transactions as Included on VAT Daybook Return
SQL Script to Return PO Receipts
Insert Extended Pricing Price Sheet UofM Work
View for Payables Transactions Extract
Export Open/History PM Transactions After a Specified Date
Copy Email Messages from a Source to Destination Database
PO Receipt History View
Insert Extended Pricing Price Sheet Assignments
Extract Payables Transactions from All Companies
List Open Purchase Orders
SQL View to Create Division Tree for Management Reporter
Select Chart of Accounts
Activate Horizontal Scroll Bars for All Existing Users
Workflow Assignment Review
Update Item Replenishment Method for Manufacturing
Get Alpha Characters from an Alphanumeric String
Set Vendor On Hold If EFT Details Changed
List Open Purchase Order Lines
SQL View to Create Division, including UDF 3 and 4, Tree for Management Reporter
Delete Orphaned Vendor EFT Details
Sales Invoice Query
Round Extended Pricing Price Sheet Item Value
Get Numeric Characters from an Alphanumeric String
Trigger to Activate Horizontal Scroll Bars for New Users
View to Return List of Payments and Linked Invoices
Select Duplicate Extended Pricing Price Sheet Work Records
RM Aged Debt Report
Select Next Temporary Creditor ID
Select a List of Vendor Addresses
Set Vendor On Hold When Created
Assembly Transaction Quantities Required
Generate Standard Cost Update Macro from Text File Import
Check for Corrupt Extended Pricing Records
Sales Line Items
Compare Ship To Address on Work Sales Trx Against Customer
SQL View to Return PO Commitment Detail
List Bank Accounts with Linked GL Accounts
Validate and Insert/Update Vendor Emails from a Text File
Return Items with Incorrect Quantities
Set Account Categories To User-Defined Field 2
Check Posting Type for Account (Segment 2)/Account Category Combinations
Update Ship To Name on Work Sales Transactions to Match the Customer Name
List Tax Detail Transactions
Select Tax Details and Related G/L Accounts
Update Account Description by Adding 3rd Segment Description
Update Segment Descriptions from Other Database
Return Opening Balance for Period of Supplied Date
Update Min Order Qty and Average Lead Time on Vendor Item From Text File
List of PM Invoices for Vendors with POs
Select Debit, Credit and Net Change for All Accounts in Date Range
Select All Pending Prepayments
Available Stock for All Items
Item Report
Migrate Vendor Emails from Active Docs to Standard Email Fields
Update Mfg Cost Accounts from Mfg Item Class Setup
PO Commitment Detail
Update Inventory Accounts from Item Class
Create Macro to Delete Items
Update Accounts Payable Distribution on Work Status PM Transactions from Posting Account Setup
Update Item Resource Planning on Item Quantity Master from Text File
SQL View to Return List of Posted Vendor Document Numbers
Update Inventory Distribution on Work Status Purchase Orders from the Item Card
Update Item Engineering File from a Text File
List of Exchange Rates

“Easily” Print Bar Codes in Microsoft Dynamics 365 Business Central

Microsoft Dynamics 365 Business CentralI’m starting to take a look around at blogs for Microsoft Dynamics 365 Business Central, so that I can learn from those with experience. One post I came across recently was by a Dynamics NAV/Business Central developer and consultant called Alberto Soben.

I’ve not yet delved into the development side of Dynamics BC (and am not really sure I ever will), but he has a good write up on how to easily print bar codes in Business Central. He covers how to do it in both cloud and on-premises versions.

SQL Scripts for Microsoft Dynamics GP: Change Vendor Change Approvals Joins and Fields

Microsoft Dynamics GPThis script is part of the SQL Scripts for Microsoft Dynamics GP where I will be posted the scripts I wrote against Microsoft Dynamics GP over the 19 years before I stopped working with Dynamics GP.

This script changes the joins for the Vendor Change Approval workflow notification emails and adds some extra bank fields.

/*
Created by Ian Grieve of azurecurve | Ramblings of an IT Professional (http://www.azurecurve.co.uk) This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int). */
-- change existing join from vendor to bank to vendor address to bank UPDATE CO00122 --QueryDesigner_Relationships (CO00122) SET FromTablePhysicalName = 'PM00300' ,FromTable = 'PM Address MSTR' WHERE FieldsListGuid = '6097E956-33CC-48A1-9B80-5EE50B4DC9B8' AND Group_ID = 6 AND FromTablePhysicalName = 'PM00200' GO -- insert second join for vendor address to bank INSERT INTO CO00122 Query Designer Fields List (CO00121) (FieldsListGuid,Group_ID,SEQNUMBR,FromDictID,FromTable,FromTablePhysicalName,FromField,FromFieldPhysicalName,ToDictID,ToTable,ToTablePhysicalName,ToField,ToFieldPhysicalName,JoinType) VALUES ('6097E956-33CC-48A1-9B80-5EE50B4DC9B8',6,2,0,'PM Address MSTR','PM00300','Address Code','ADRSCODE',0,'Address Electronic Funds Transfer Master','SY06000','Address Code','ADRSCODE',3) GO -- remove existing vendor address bank fields UPDATE WF40202 --Workflow Template Fields (WF40202) SET Workflow_Type_Name = 'xVendor Approval' WHERE Workflow_Type_Name = 'Vendor Approval' AND Email_Message_Type = 2 AND TablePhysicalName = 'SY06000' AND TableRelationship = 1 GO -- insert new vendor address bank fields to document lines INSERT INTO dbo.WF40202 --Workflow Template Fields (WF40202) (Workflow_Type_Name,Email_Message_Type,SEQNUMBR,Ord_Line,WF_Template_Field_Type,TableSeries,TableDictID,RSRCID,TablePhysicalName,FieldPhysicalName,FieldName,FieldDataType,TableRelationship,AdditionalFields) VALUES ('Vendor Approval',2,85,0,18,8,0,0,'SY06000','BANKNAME','EFT Bank Name',5,3,0) ,('Vendor Approval',2,86,0,18,8,0,0,'SY06000','EFTBankCode','EFT Sort Code',5,3,0) ,('Vendor Approval',2,87,0,18,8,0,0,'SY06000','EFTBankAcct','EFT Account Number',5,3,0) GO

Click to show/hide the SQL Scripts for Microsoft Dynamics GP Series Index

SQL Scripts for Microsoft Dynamics GP
Verify PM Batches Exist
Update Accrued Purchases Distribution on History Receipts from Posting Account Setup
Insert Mfg BOMs from Text File
SQL Function To Return Approver
List of Active Fixed Assets
Insert Manufacturing Routings from Text File
Table Function to Split String on Delimiter
List of Open Payables Transactions
Insert Creditor Item Numbers
Return Top Level BOM for Manufacturing Orders
Custom Purchase Order Email Notification to Originator on Workflow Final Approval
list of Open Payables Distributions
Set New Vendor On Hold if EFT Exists
Set New Vendor On Hold if EFT Exists
Payment Run Apply Query
List GL Transactions
Simple RMA Audit
Change Vendor Change Approvals Joins and Fields
Insert National Accounts from CSV
List GL Accounts With Notes
Import Site Bins From CSV
Remove Multicurrency from Sales Transactions
Change Email Notification Assignment
List General Ledger Transactions (Excluding Year End Journals)
List Taxes Linked to GL Accounts
Allow Workflow Originator to be an Approver
Add Joins and Fields to PM Document Approval Notification Emails
Update Accounts and Distributions on Work Status Sales Transactions from Item Card, Tax Details or Posting Account Setup
Upload and Verify Tax Commodity Codes
Delete Corrupt Extended Pricing Data
Assign All Items to All Site Bins
Sales Transactions (Work) Against a Specific Site
Change Web Service URi
SQL View to Return Quantity Available
Verify Tax Detail Assigned to Vendor
Insert Extended Pricing Price Sheet Header
Prefix Companies Names with System Designator
SQL View to Return Category Linked to Segment 3 in COA
Update Site Descriptions From CSV
Copy Workflow from Source to Destination Database
Extract GL Period Balances
Sales by Customer By Year
Purchased Items With Serial Numbers and Linked Sales Transactions
SQL View to Return Purchase Orders
Select All Primary Keys and Generate ALTER Script
Copy Workflow Calendar from Source to Destination Database
SQL Trigger on PO invoice Insert to Change GL posted Date
Sales by Salesperson By Year
Script to Set Transactions as Included on VAT Daybook Return
SQL Script to Return PO Receipts
Insert Extended Pricing Price Sheet UofM Work
View for Payables Transactions Extract
Export Open/History PM Transactions After a Specified Date
Copy Email Messages from a Source to Destination Database
PO Receipt History View
Insert Extended Pricing Price Sheet Assignments
Extract Payables Transactions from All Companies
List Open Purchase Orders
SQL View to Create Division Tree for Management Reporter
Select Chart of Accounts
Activate Horizontal Scroll Bars for All Existing Users
Workflow Assignment Review
Update Item Replenishment Method for Manufacturing
Get Alpha Characters from an Alphanumeric String
Set Vendor On Hold If EFT Details Changed
List Open Purchase Order Lines
SQL View to Create Division, including UDF 3 and 4, Tree for Management Reporter
Delete Orphaned Vendor EFT Details
Sales Invoice Query
Round Extended Pricing Price Sheet Item Value
Get Numeric Characters from an Alphanumeric String
Trigger to Activate Horizontal Scroll Bars for New Users
View to Return List of Payments and Linked Invoices
Select Duplicate Extended Pricing Price Sheet Work Records
RM Aged Debt Report
Select Next Temporary Creditor ID
Select a List of Vendor Addresses
Set Vendor On Hold When Created
Assembly Transaction Quantities Required
Generate Standard Cost Update Macro from Text File Import
Check for Corrupt Extended Pricing Records
Sales Line Items
Compare Ship To Address on Work Sales Trx Against Customer
SQL View to Return PO Commitment Detail
List Bank Accounts with Linked GL Accounts
Validate and Insert/Update Vendor Emails from a Text File
Return Items with Incorrect Quantities
Set Account Categories To User-Defined Field 2
Check Posting Type for Account (Segment 2)/Account Category Combinations
Update Ship To Name on Work Sales Transactions to Match the Customer Name
List Tax Detail Transactions
Select Tax Details and Related G/L Accounts
Update Account Description by Adding 3rd Segment Description
Update Segment Descriptions from Other Database
Return Opening Balance for Period of Supplied Date
Update Min Order Qty and Average Lead Time on Vendor Item From Text File
List of PM Invoices for Vendors with POs
Select Debit, Credit and Net Change for All Accounts in Date Range
Select All Pending Prepayments
Available Stock for All Items
Item Report
Migrate Vendor Emails from Active Docs to Standard Email Fields
Update Mfg Cost Accounts from Mfg Item Class Setup
PO Commitment Detail
Update Inventory Accounts from Item Class
Create Macro to Delete Items
Update Accounts Payable Distribution on Work Status PM Transactions from Posting Account Setup
Update Item Resource Planning on Item Quantity Master from Text File
SQL View to Return List of Posted Vendor Document Numbers
Update Inventory Distribution on Work Status Purchase Orders from the Item Card
Update Item Engineering File from a Text File
List of Exchange Rates

Change Default Method of Opening Files in Microsoft Teams

MicrosoftI do not like using the online versions of Word or Excel as I find they are typically slower and more fiddly than the traditional desktop applications; I also don’t like the way that they autosave (the desktop apps also autosave by default, but this can be disabled).

You can change the default method of opening quite easily in Microsoft Teams. On the file you want to open, click the three dots button next to the file name, open Open in and click Change default:

File context menu

Continue reading “Change Default Method of Opening Files in Microsoft Teams”

SQL Scripts for Microsoft Dynamics GP: Custom Purchase Order Email Notification to Originator on Workflow Final Approval

Microsoft Dynamics GPThis script is part of the SQL Scripts for Microsoft Dynamics GP where I will be posted the scripts I wrote against Microsoft Dynamics GP over the 19 years before I stopped working with Dynamics GP.

This script creates a custom notification to the originator of a workflow process when the document is final approved; this was created due to a bug in Dynamics GP whereby the notifications were being sent incorrectly. This bug may have been corrected in subsequent versions, but I am sharing the script in case it is useful to anyone else.

Due to needing the email address, which may not be accessible through any of the tables in the Dynamics GP database, a custom table is created in the system database (called DYNAMICS by default) and will need to be populated with the ADLogin and email address for all users who will be the originator for purchase orders.


/*
Created by Ian Grieve of azurecurve | Ramblings of an IT Professional (http://www.azurecurve.co.uk) This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int). */
USE DYNAMICS GO CREATE TABLE ut_ARCCRV_WorflowOriginatorEmails ( ADLogin VARCHAR(200) ,EMail VARCHAR(200) ) GO

The main part of the script needs to be created in each database in which PO approval workflows are being used.

The email sent includes the lines of the PO in a table; you can customise these lines or the format of the email further, as shown in this series I did in 2017.

USE [TWO]
CREATE TRIGGER utr_AZRCRV_POP10100_WorkflowFinalApproved ON POP10100 AFTER UPDATE AS
/*
Created by Ian Grieve of azurecurve | Ramblings of an IT Professional (http://www.azurecurve.co.uk) This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int). */
DECLARE @EmailRecipient VARCHAR(100) DECLARE @EmailSubject VARCHAR(1000) DECLARE @EmailBody VARCHAR(MAX) DECLARE @EmailBody_POLines VARCHAR(MAX) DECLARE @POLines VARCHAR(MAX) IF (SELECT CASE WHEN i.Workflow_Status = 6 AND d.Workflow_Status <> 6 THEN 1 ELSE 0 END FROM inserted as i INNER JOIN deleted AS d on d.PONUMBER = i.PONUMBER) = 1 BEGIN WITH ['Workflow Status'] AS ( SELECT i.PONUMBER ,['Workflow History'].Workflow_History_User ,['Originator Email Address'].EMail ,['Workflow History'].Workflow_Action ,['Workfow Users'].ADDisplayName ,ROW_NUMBER() OVER(PARTITION BY i.PONUMBER ORDER BY i.PONUMBER, ['Workflow History'].DEX_ROW_ID DESC) AS RowNumber FROM inserted AS i INNER JOIN WFI10002 AS ['Workflow Instance Master'] --Workflow Instance Master (WFI10002) ON ['Workflow Instance Master'].WfBusObjKey = i.PONUMBER INNER JOIN WF30100 AS ['Workflow History'] --Workflow History (WF30100) ON ['Workflow History'].WorkflowInstanceID = ['Workflow Instance Master'].WorkflowInstanceID INNER JOIN ut_ARCCRV_WorflowOriginatorEmails AS ['Originator Email Address'] ON ['Originator Email Address'].ADLogin = ['Workflow Instance Master'].Workflow_Originator INNER JOIN WF40200 AS ['Workfow Users'] --Workflow Users (WF40200) ON ['Workfow Users'].UsersListGuid = ['Workflow History'].Workflow_Step_Assign_To ) SELECT @EmailRecipient = RTRIM(CAST(['Workflow Status'].EMail AS VARCHAR(100))) ,@EmailSubject = 'Purchase Order ' + RTRIM(CAST(['Workflow Status'].PONUMBER AS VARCHAR(100))) + ' has been Final Approved' ,@EmailBody = 'Purchase Order ' + RTRIM(CAST(['Workflow Status'].PONUMBER AS VARCHAR(100))) + ' has been Final Approved by ' + RTRIM(CAST(['Workflow Status'].ADDisplayName AS VARCHAR(100))) + '.' + CHAR(10) + CHAR(10) FROM ['Workflow Status'] WHERE ['Workflow Status'].RowNumber = 1 -- add PO lines SELECT @POLines = COALESCE(@POLines + '', '') + '<tr><td width="91" style="width:68.25pt;border:solid #3B5E87 1.0pt;background:#C6D4E8;padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Verdana",sans-serif;color:black;letter-spacing:-1.0pt"></span><b><span style="font-size:8.0pt;font-family:"Verdana",sans-serif;letter-spacing:-1.0pt;mso-fareast-language:EN-GB"><o:p></o:p></span></b></p> <p class="MsoNormal"><b><span style="font-size:8.0pt;font-family:"Verdana",sans-serif;color:black;letter-spacing:-1.0pt">' + 'Item Number' + '</span></b><b><span style="font-size:8.0pt;font-family:"Verdana",sans-serif;letter-spacing:-1.0pt"><o:p></o:p></span></b></p></td><td width="188" style="width:141.0pt;border:solid #3B5E87 1.0pt;border-left:none;background:#C6D4E8;padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal"><b><span style="font-size:8.0pt;font-family:"Verdana",sans-serif;color:black;letter-spacing:-1.0pt">' + 'Item Description' + '</span></b><b><span style="font-size:8.0pt;font-family:"Verdana",sans-serif;letter-spacing:-1.0pt"><o:p></o:p></span></b></p></td><td width="84" style="width:63.0pt;border:solid #3B5E87 1.0pt;border-left:none;background:#C6D4E8;padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal"><b><span style="font-size:8.0pt;font-family:"Verdana",sans-serif;color:black;letter-spacing:-1.0pt">' + 'Extended Cost' + '</span></b><b><span style="font-size:8.0pt;font-family:"Verdana",sans-serif;letter-spacing:-1.0pt"><o:p></o:p></span></b></p></td></tr>' SELECT @POLines = COALESCE(@POLines + '', '') + '<tr><td width="91" style="width:68.25pt;border:solid #3B5E87 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Verdana",sans-serif;letter-spacing:-1.0pt">' + CAST(RTRIM(['Purchase Order Lines'].ITEMNMBR) AS VARCHAR(100)) + '<o:p></o:p></span></p></td><td width="188" style="width:141.0pt;border-top:none;border-left:none;border-bottom:solid #3B5E87 1.0pt;border-right:solid #3B5E87 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Verdana",sans-serif;letter-spacing:-1.0pt">' + CAST(RTRIM(['Purchase Order Lines'].ITEMDESC) AS VARCHAR(100)) + '<o:p></o:p></span></p></td><td width="84" style="width:63.0pt;border-top:none;border-left:none;border-bottom:solid #3B5E87 1.0pt;border-right:solid #3B5E87 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Verdana",sans-serif;letter-spacing:-1.0pt">' + CAST(RTRIM(['Purchase Order Lines'].EXTDCOST) AS VARCHAR(100)) + '<o:p></o:p></span></p></td></tr>' FROM inserted AS i INNER JOIN POP10110 AS ['Purchase Order Lines'] --Purchase Order Line (POP10110) ON ['Purchase Order Lines'].PONUMBER = i.PONUMBER SELECT @EmailBody = @EmailBody + '<table class="MsoNormalTable" border="0" cellpadding="0"> <tbody> <tr> <td style="padding:.75pt .75pt .75pt .75pt"> <pre><span style="letter-spacing:-1.0pt"><o:p> </o:p></span></pre> <pre><span style="letter-spacing:-1.0pt">PO0002448<o:p></o:p></span></pre> <pre><span style="letter-spacing:-1.0pt"><o:p> </o:p></span></pre> <table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none"> <tbody>' + @POLines + '</tbody> </table>' /* https://msdn.microsoft.com/en-us/library/ms190307.aspx */ EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Workflow Notification' ,@recipients = @EmailRecipient ,@subject = @EmailSubject ,@body = @EmailBody ,@body_format ='HTML' END GO

Click to show/hide the SQL Scripts for Microsoft Dynamics GP Series Index

SQL Scripts for Microsoft Dynamics GP
Verify PM Batches Exist
Update Accrued Purchases Distribution on History Receipts from Posting Account Setup
Insert Mfg BOMs from Text File
SQL Function To Return Approver
List of Active Fixed Assets
Insert Manufacturing Routings from Text File
Table Function to Split String on Delimiter
List of Open Payables Transactions
Insert Creditor Item Numbers
Return Top Level BOM for Manufacturing Orders
Custom Purchase Order Email Notification to Originator on Workflow Final Approval
list of Open Payables Distributions
Set New Vendor On Hold if EFT Exists
Set New Vendor On Hold if EFT Exists
Payment Run Apply Query
List GL Transactions
Simple RMA Audit
Change Vendor Change Approvals Joins and Fields
Insert National Accounts from CSV
List GL Accounts With Notes
Import Site Bins From CSV
Remove Multicurrency from Sales Transactions
Change Email Notification Assignment
List General Ledger Transactions (Excluding Year End Journals)
List Taxes Linked to GL Accounts
Allow Workflow Originator to be an Approver
Add Joins and Fields to PM Document Approval Notification Emails
Update Accounts and Distributions on Work Status Sales Transactions from Item Card, Tax Details or Posting Account Setup
Upload and Verify Tax Commodity Codes
Delete Corrupt Extended Pricing Data
Assign All Items to All Site Bins
Sales Transactions (Work) Against a Specific Site
Change Web Service URi
SQL View to Return Quantity Available
Verify Tax Detail Assigned to Vendor
Insert Extended Pricing Price Sheet Header
Prefix Companies Names with System Designator
SQL View to Return Category Linked to Segment 3 in COA
Update Site Descriptions From CSV
Copy Workflow from Source to Destination Database
Extract GL Period Balances
Sales by Customer By Year
Purchased Items With Serial Numbers and Linked Sales Transactions
SQL View to Return Purchase Orders
Select All Primary Keys and Generate ALTER Script
Copy Workflow Calendar from Source to Destination Database
SQL Trigger on PO invoice Insert to Change GL posted Date
Sales by Salesperson By Year
Script to Set Transactions as Included on VAT Daybook Return
SQL Script to Return PO Receipts
Insert Extended Pricing Price Sheet UofM Work
View for Payables Transactions Extract
Export Open/History PM Transactions After a Specified Date
Copy Email Messages from a Source to Destination Database
PO Receipt History View
Insert Extended Pricing Price Sheet Assignments
Extract Payables Transactions from All Companies
List Open Purchase Orders
SQL View to Create Division Tree for Management Reporter
Select Chart of Accounts
Activate Horizontal Scroll Bars for All Existing Users
Workflow Assignment Review
Update Item Replenishment Method for Manufacturing
Get Alpha Characters from an Alphanumeric String
Set Vendor On Hold If EFT Details Changed
List Open Purchase Order Lines
SQL View to Create Division, including UDF 3 and 4, Tree for Management Reporter
Delete Orphaned Vendor EFT Details
Sales Invoice Query
Round Extended Pricing Price Sheet Item Value
Get Numeric Characters from an Alphanumeric String
Trigger to Activate Horizontal Scroll Bars for New Users
View to Return List of Payments and Linked Invoices
Select Duplicate Extended Pricing Price Sheet Work Records
RM Aged Debt Report
Select Next Temporary Creditor ID
Select a List of Vendor Addresses
Set Vendor On Hold When Created
Assembly Transaction Quantities Required
Generate Standard Cost Update Macro from Text File Import
Check for Corrupt Extended Pricing Records
Sales Line Items
Compare Ship To Address on Work Sales Trx Against Customer
SQL View to Return PO Commitment Detail
List Bank Accounts with Linked GL Accounts
Validate and Insert/Update Vendor Emails from a Text File
Return Items with Incorrect Quantities
Set Account Categories To User-Defined Field 2
Check Posting Type for Account (Segment 2)/Account Category Combinations
Update Ship To Name on Work Sales Transactions to Match the Customer Name
List Tax Detail Transactions
Select Tax Details and Related G/L Accounts
Update Account Description by Adding 3rd Segment Description
Update Segment Descriptions from Other Database
Return Opening Balance for Period of Supplied Date
Update Min Order Qty and Average Lead Time on Vendor Item From Text File
List of PM Invoices for Vendors with POs
Select Debit, Credit and Net Change for All Accounts in Date Range
Select All Pending Prepayments
Available Stock for All Items
Item Report
Migrate Vendor Emails from Active Docs to Standard Email Fields
Update Mfg Cost Accounts from Mfg Item Class Setup
PO Commitment Detail
Update Inventory Accounts from Item Class
Create Macro to Delete Items
Update Accounts Payable Distribution on Work Status PM Transactions from Posting Account Setup
Update Item Resource Planning on Item Quantity Master from Text File
SQL View to Return List of Posted Vendor Document Numbers
Update Inventory Distribution on Work Status Purchase Orders from the Item Card
Update Item Engineering File from a Text File
List of Exchange Rates

In Microsoft Dynamics 365 Business Central (Financial), how do I… Configure Default Dimension Priorities

Microsoft Dynamics 365 Business CentralThis post is part of the In Microsoft Dynamics 365 Business Central (Financial), how do I… series and of the wider In Microsoft Dynamics 365 Business Central, how do I… series which I am posting as I familiarise myself with Microsoft Dynamics 365 Business Central.

I recently did a post where I explained what default dimensions and priorities were; I’m going to break down the explanation on how to configure them into two separate posts, because, despite being very closely linked, they are maintained in different pages.

I have explained default dimensions, as well as the related dimension restrictions; in this post I’ll be taking a look at the default dimension priorities.

Default dimensions can be entered against multiple types of records, such as G/L accounts, vendors, items and customers. If we take purchase order processing as an example, if you have the same default dimensions but with different dimension values applied to the G/L account, vendor and item then Dynamics BC will default to those of the vendor.

Default dimension priorities allows you to control the order in which the default dimensions will be checked; this would, for example, allow you to select item dimensions as the highest priority so the default dimensions come from the item instead of the vendor.

Default dimension priorities are set on a Source Code basis. Below is an example of a priority order for the PURCHASES[/b] source code:

Default Dimension Priorities showing

Continue reading “In Microsoft Dynamics 365 Business Central (Financial), how do I… Configure Default Dimension Priorities”

SQL Scripts for Microsoft Dynamics GP: PO Commitment Detail

Microsoft Dynamics GPThis script is part of the SQL Scripts for Microsoft Dynamics GP where I will be posted the scripts I wrote against Microsoft Dynamics GP over the 19 years before I stopped working with Dynamics GP.

This script returns details of purchase orders and the related commitments.

/*
Created by Ian Grieve of azurecurve | Ramblings of an IT Professional (http://www.azurecurve.co.uk) This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int). */
SELECT ['POE Commitment Setup Lines'].BUDGETID AS 'Budget ID' ,['Budget Master'].BUDCOMNT AS 'Budget Description' ,['POE Commitment Setup Lines'].YEAR1 AS 'Budget Year' ,['Purchase Order Commitments'].PONUMBER AS 'PO Number' ,['Purchase Order Commitments'].VENDORID AS 'Creditor ID' ,['PM Creditor Master'].VENDNAME AS 'Creditor Name' ,['Purchase Order Commitments'].Committed_Amount AS 'Committed Amount' ,['Purchase Order Lines'].ITEMNMBR AS 'Item Number' ,['Purchase Order Lines'].ITEMDESC AS 'Item Description' ,['Account Index Master'].ACTNUMST AS 'Account Number' ,['Account Master'].ACTDESCR AS 'Account Description' ,['Account Index Master'].ACTNUMBR_2 AS 'Cost Centre' ,['Segment Description Master'].DSCRIPTN AS 'Cost Centre Description' ,['Purchase Order Work'].USER2ENT AS 'Created By User' ,['Purchase Order Work'].DOCDATE AS 'Document Date' ,['Purchase Order Lines'].REQSTDBY AS 'Requested By' ,['Payables Transactions'].VCHRNMBR AS 'AP Voucher Number' ,['Payables Transactions'].DOCAMNT AS 'AP Document Amount' FROM SY40101 AS ['Financial Calendar Header'] WITH (NOLOCK) --Period Header (SY40101) INNER JOIN CPO10110 AS ['Purchase Order Commitments'] WITH (NOLOCK) --CPOP_Line_Ctrl (CPO10110) ON ['Purchase Order Commitments'].REQDATE BETWEEN ['Financial Calendar Header'].FSTFSCDY AND ['Financial Calendar Header'].LSTFSCDY INNER JOIN PM00200 AS ['PM Creditor Master'] WITH (NOLOCK) --PM Vendor Master File (PM00200) ON ['PM Creditor Master'].VENDORID = ['Purchase Order Commitments'].VENDORID INNER JOIN POP10110 AS ['Purchase Order Lines'] WITH (NOLOCK) --Purchase Order Line (POP10110) ON ['Purchase Order Lines'].PONUMBER = ['Purchase Order Commitments'].PONUMBER AND ['Purchase Order Lines'].ORD = ['Purchase Order Commitments'].ORD INNER JOIN GL00105 AS ['Account Index Master'] WITH (NOLOCK) --Account Index Master (GL00105) ON ['Account Index Master'].ACTINDX = ['Purchase Order Commitments'].ACTINDX LEFT JOIN GL00100 AS ['Account Master'] WITH (NOLOCK) --Breakdown Account Master (GL00100) ON ['Account Master'].ACTINDX = ['Purchase Order Commitments'].ACTINDX INNER JOIN GL40200 AS ['Segment Description Master'] WITH (NOLOCK) --Segment Description Master (GL40200) ON ['Segment Description Master'].SGMTNUMB = 2 AND ['Segment Description Master'].SGMNTID = ['Account Index Master'].ACTNUMBR_2 INNER JOIN CPO40002 AS ['POE Commitment Setup Lines'] WITH (NOLOCK) --CPOP_Setup_LINE (CPO40002) ON ['POE Commitment Setup Lines'].YEAR1 = ['Financial Calendar Header'].YEAR1 INNER JOIN GL00200 AS ['Budget Master'] WITH (NOLOCK) --Budget Master (GL00200) ON ['Budget Master'].BUDGETID = ['POE Commitment Setup Lines'].BUDGETID INNER JOIN POP10100 AS ['Purchase Order Work'] WITH (NOLOCK) --Purchase Order Work (POP10100) ON ['Purchase Order Work'].PONUMBER = ['Purchase Order Lines'].PONUMBER LEFT JOIN ( SELECT VCHRNMBR ,DOCAMNT ,PONUMBER FROM PM20000 --PM Vendor Master File (PM00200) UNION SELECT VCHRNMBR ,DOCAMNT ,PONUMBER FROM PM30200 --PM Paid Transaction History File (PM30200) ) AS ['Payables Transactions'] ON ['Payables Transactions'].PONUMBER = ['Purchase Order Lines'].PONUMBER WHERE ['Purchase Order Commitments'].Committed_Amount > 0

Click to show/hide the SQL Scripts for Microsoft Dynamics GP Series Index

SQL Scripts for Microsoft Dynamics GP
Verify PM Batches Exist
Update Accrued Purchases Distribution on History Receipts from Posting Account Setup
Insert Mfg BOMs from Text File
SQL Function To Return Approver
List of Active Fixed Assets
Insert Manufacturing Routings from Text File
Table Function to Split String on Delimiter
List of Open Payables Transactions
Insert Creditor Item Numbers
Return Top Level BOM for Manufacturing Orders
Custom Purchase Order Email Notification to Originator on Workflow Final Approval
list of Open Payables Distributions
Set New Vendor On Hold if EFT Exists
Set New Vendor On Hold if EFT Exists
Payment Run Apply Query
List GL Transactions
Simple RMA Audit
Change Vendor Change Approvals Joins and Fields
Insert National Accounts from CSV
List GL Accounts With Notes
Import Site Bins From CSV
Remove Multicurrency from Sales Transactions
Change Email Notification Assignment
List General Ledger Transactions (Excluding Year End Journals)
List Taxes Linked to GL Accounts
Allow Workflow Originator to be an Approver
Add Joins and Fields to PM Document Approval Notification Emails
Update Accounts and Distributions on Work Status Sales Transactions from Item Card, Tax Details or Posting Account Setup
Upload and Verify Tax Commodity Codes
Delete Corrupt Extended Pricing Data
Assign All Items to All Site Bins
Sales Transactions (Work) Against a Specific Site
Change Web Service URi
SQL View to Return Quantity Available
Verify Tax Detail Assigned to Vendor
Insert Extended Pricing Price Sheet Header
Prefix Companies Names with System Designator
SQL View to Return Category Linked to Segment 3 in COA
Update Site Descriptions From CSV
Copy Workflow from Source to Destination Database
Extract GL Period Balances
Sales by Customer By Year
Purchased Items With Serial Numbers and Linked Sales Transactions
SQL View to Return Purchase Orders
Select All Primary Keys and Generate ALTER Script
Copy Workflow Calendar from Source to Destination Database
SQL Trigger on PO invoice Insert to Change GL posted Date
Sales by Salesperson By Year
Script to Set Transactions as Included on VAT Daybook Return
SQL Script to Return PO Receipts
Insert Extended Pricing Price Sheet UofM Work
View for Payables Transactions Extract
Export Open/History PM Transactions After a Specified Date
Copy Email Messages from a Source to Destination Database
PO Receipt History View
Insert Extended Pricing Price Sheet Assignments
Extract Payables Transactions from All Companies
List Open Purchase Orders
SQL View to Create Division Tree for Management Reporter
Select Chart of Accounts
Activate Horizontal Scroll Bars for All Existing Users
Workflow Assignment Review
Update Item Replenishment Method for Manufacturing
Get Alpha Characters from an Alphanumeric String
Set Vendor On Hold If EFT Details Changed
List Open Purchase Order Lines
SQL View to Create Division, including UDF 3 and 4, Tree for Management Reporter
Delete Orphaned Vendor EFT Details
Sales Invoice Query
Round Extended Pricing Price Sheet Item Value
Get Numeric Characters from an Alphanumeric String
Trigger to Activate Horizontal Scroll Bars for New Users
View to Return List of Payments and Linked Invoices
Select Duplicate Extended Pricing Price Sheet Work Records
RM Aged Debt Report
Select Next Temporary Creditor ID
Select a List of Vendor Addresses
Set Vendor On Hold When Created
Assembly Transaction Quantities Required
Generate Standard Cost Update Macro from Text File Import
Check for Corrupt Extended Pricing Records
Sales Line Items
Compare Ship To Address on Work Sales Trx Against Customer
SQL View to Return PO Commitment Detail
List Bank Accounts with Linked GL Accounts
Validate and Insert/Update Vendor Emails from a Text File
Return Items with Incorrect Quantities
Set Account Categories To User-Defined Field 2
Check Posting Type for Account (Segment 2)/Account Category Combinations
Update Ship To Name on Work Sales Transactions to Match the Customer Name
List Tax Detail Transactions
Select Tax Details and Related G/L Accounts
Update Account Description by Adding 3rd Segment Description
Update Segment Descriptions from Other Database
Return Opening Balance for Period of Supplied Date
Update Min Order Qty and Average Lead Time on Vendor Item From Text File
List of PM Invoices for Vendors with POs
Select Debit, Credit and Net Change for All Accounts in Date Range
Select All Pending Prepayments
Available Stock for All Items
Item Report
Migrate Vendor Emails from Active Docs to Standard Email Fields
Update Mfg Cost Accounts from Mfg Item Class Setup
PO Commitment Detail
Update Inventory Accounts from Item Class
Create Macro to Delete Items
Update Accounts Payable Distribution on Work Status PM Transactions from Posting Account Setup
Update Item Resource Planning on Item Quantity Master from Text File
SQL View to Return List of Posted Vendor Document Numbers
Update Inventory Distribution on Work Status Purchase Orders from the Item Card
Update Item Engineering File from a Text File
List of Exchange Rates

Stop Microsoft Word Checking for Oxford Comma

Microsoft OfficeOne of the small annoyances I’ve been ignoring in Microsoft Word for a while is the punctuation check it is showing as a problem; this is the Oxford comma (also known as the serial comma, series comma or Harvard comma). When separating a list of values, you do so with commas and the final item in the list is preceded by the word and; the Oxford comma includes a comma before the word “and”.

Microsoft Word in Office 365 has the Oxford comma enabled by default (older versions of Word did not); to disable it, open the Word Options from the File tab, select the b]Profing[/b] tab. Find the Writing Style option, set it to Grammar& Refinements and click the Settings button:

Word Options - Proofing tab

Continue reading “Stop Microsoft Word Checking for Oxford Comma”